AWS部署数据库:监控和管理谁负责
大多数的现代应用都要求使用数据库来实现对数据的积聚、查询和管理。在AWS顶部部署一个数据库要求我们具有监控和管理的功能,从而能够更容易地扩展应用程序、减少故障带来的负面影响以及降低成本。
在提升其核心数据库能力、自动化管理以及与之相关的监控功能等方面,AWS已经做得相当好了。与此同时,AWS数据库服务的竞争对手们也正在改进它们的管理功能。企业可能希望更仔细地在AWS上可用的原厂和第三方数据库服务的功能和管理之间进行权衡比较。
了解系统需求
在软件开发团队开始开发之前,认真考虑应用的需求是非常非常重要的一项工作,Scalr的创始人兼CEO Sebastian Stadil说。相对而言,在开始真正开发工作之前进行架构变更是比较容易的。虽然进行系统规模评估总是一项困难的工作,但是评估所需的一致性保证则是较为简单的。
例如,Netflix公司使用AWS来托管其在Apache Cassandra数据库中的大部分数据。就业务内容来说,Netflix公司会认为在线(可用性)要比记得上一次所观看视频的存储位置(一致性)更重要。
企业需要思考可用性和可扩展性是否是最重要的考虑因素。很多企业在NoSQL平台上运行专为可用性进行优化的应用程序,这需要为确保一致性而进行调整。对于这些类型的应用程序来说,更好的一个方法就是使用一个诸如PostgreSQL这样的传统关系型数据库,因为这种类型的数据库能够更加有效地提供企业所需的一致性。
相反,很多企业犯下了这样一个错误,即使用一个能够提供一致性但不具有高可用性的事务关系数据库,例如一个推荐系统应用程序。在这些情况下,企业最好从一开始就使用诸如Cassandra这样的数据库。
本地化
另一个好的做法就是考虑使用本地AWS服务以取代传统的数据库架构。Appirio的工程部总监Dayal Gaitonde表示,当开发人员把应用程序从传统环境迁移至AWS时,他们一般都会建立起数据库服务器和集群。
亚马逊的RDS为用户提供了把数据库当作托管服务使用的功能,这也就为MySQL、PostgreSQL、Oracle以及微软的SQL服务器提供了一个不错的替代选择,Gaitonde说。这是因为RDS包括了大量可用于更新升级、打补丁以及故障检测的监控与管理功能。但是,这并不会剥夺数据库管理员的所有职责。他说,企业仍然需要配置备份、确定数据库需求以及指定诸如内存和存储这样的资源。
AWS确实包括了大量的数据库服务以及内置的管理和监控功能,如SimpleDB和DynamoDB。这些以可扩展方式提供的服务是相对微不足道的,它们可减少对专用服务的需求。但是,某家NoSQL数据库供应商的产品总监Kelly Stirman指出,其它的NoSQL数据库更倾向于为众多用例提供更丰富的功能集,这也正是它们越来越受欢迎的原因。
随着AWS改进它的基本功能,这一状况有可能会发生变化。例如,AWS刚刚在DynamoDB基础上增加了对JSON数据模式的支持,这一直都是诸如MogoDB这样替代产品引人注目的不同之处之一。但是此刻,在文档大小、对文本搜索功能和地理空间功能等方面,AWS服务比第三方的同类型产品有着更为严格的限制,Stirman说。
可扩展性和功能之间的平衡
第三方NoSQL数据库(如MongoDB)所带来的主要挑战之一就是在配置新实例、更新软件或者扩展规模方面的难度。例如,配置一个12台服务器的MongoDB集群通常需要150个步骤。而近期加入到MongoDB的MMS的自动化功能就能够把这一繁琐的手工操作简化至只需若干次的鼠标点击操作。“通过使用MMS,你就可以在几分钟内完成这一工作而不是在几个小时内,同时不需要了解它内部工作的详细信息,”Stirman说。
一家使用AWS服务提供互联网广告管理服务的供应商Decisive使用MMS就能够简化自动化部署和扩展新MongoDB实例的工作,也就是使用一个新的API来创建和优化移动广告活动。Decisive的CTO Ryan Witt表示,他们公司选择MongoDB是因为数据模型的灵活性。MongoDB使针对某一主题收集各种各样的数据成为可能,例如观看广告的用户的数量与类型,以及他们的点击率。
虽然AWS为运行在其服务平台上的数据库应用提供了一些基本的监控和管理功能,但是对于大多数的应用需求来说,它所提供信息的详细程度还不够,Witt说。MMS可以让Decisive测量硬盘I/O流量以及在客户端上的延迟。MMS还可以帮助他们对数据库集群的运行状态进行评估,当发生问题时,这个功能就让故障诊断变得更为简单。由于读写操作负载变得更高,MMS会报告这些操作发生的位置,并提供了关于如何扩展系统以解决这些问题的最佳方法指导。