AWS扩展的艺术:DevOps文化和云原生应用设计
在亚马逊Web服务的世界中经常会听到两个短语:DevOps文化和云原生应用。但是它们到底意味着什么呢?如何在现实世界中实现呢?一家初创公司已经结合了这两个概念,创建了一个应用,展示了用亚马逊Web服务(AWS)云可以做什么。
Ekho的同名应用套件为客户提供了各种数据挖掘Focus set,涉及到社交媒体流这样的数据源。这可以帮助用户度量广告和市场营销的执行情况,而且可以预设目标销售机会,接触到最可能的买家。Focus set通过他们的Web浏览器为终端用户进行展示。
该公司的创始人兼CEO Kent Langley表示,有时候,挖掘社交媒体流可以生产亿万数据点,Ekho的系统必须彻底贯穿并且分析。还有些时候,这个系统可能发现数以万计的数据点替代。可以扩展和收缩应用,而且基础的AWS基础架构可以让Ekho管理非常广泛的工作负载。
“如果没有亚马逊我们还会存在吗?答案是也许吧,”Langley说道,“但是我会花费更多量级的成本才能达到我们现在所企及的高度,以及我们所拥有的能力。”
Ekho平均运行着大约32个弹性计算云实例,具体数量根据工作负载有所不同。但是这仅仅是冰山一角:在AWS简单存储服务或者S3中,还有计算实例访问和亿万记录分析。
该公司还是用Glacier进行长期的数据存储,在最终分析完成之前,DynamoDB用来存储临时的计算结果,Elasticache是Redis内存数据库,CloudFront内容交付网络可以用数据集在用户的浏览器上执行得更好,简单消息服务和简单邮件服务进行内网操作。
由于这些服务,Ekho的运营极为精简,仅雇佣了八名员工,五名是自己的内部开发者。
在Ekho的DevOps文化中,应用开发者管理所有的操作服务以及编写代码开发应用。“在我自己和开发者之间,我们能够很好地维系,”Langley说道,“我们并没有取代操作的角色,我们只是将其分配给每一个开发者。”
因此,小型的初创公司也可以做大事业。“我们有个客户说‘我们在你的数据库中放了100万行数据,’而且我不必外出购买一个单独的服务器,”Langley说道,“我们可以自旋增加无数个服务器,而且我们可以扩展我们的核心基础架构组件的规模,我们处理的所有数据都在我们的数据层的核心,工作一旦完成,我们就关闭这些服务器,总共也就花费两个小时。”
如果Ekho正在运行一个传统的数据中心基础架构,Langley说他可能就拒绝了这样的机会。
虽然亚马逊的可扩展性是基础,能够让DevOps灵活实现,实现正确的DevOps文化最终是人和流程的问题,远远超越了技术,Langley说道。实际上,有时候亚马逊服务的宽度和广度导致了比起解决的问题更多的复杂度。正如亚马逊的基础架构的灵活性,正确的应用设计才能够充分利用它。
Langley在一本书中这样说道,优雅地扩展是设计云原生应用的关键所在。《可扩展的艺术》讲的就是他们公司应用设计的灵感。这本书介绍了Langley的AKF可扩展立方(Scalability Cube),这个立方体中沿着三个坐标轴设置分别为:X、Y、Z。
在这个系统中,X坐标轴可扩展指的是服务器水平扩展;Y坐标轴可扩展指的是垂直可扩展;Z坐标轴指的是数据优先级。“做一个云原生应用的关键就是在所有的三个坐标轴上都能够可扩展,”Langley说道。
Ekho将自身也放置在Y坐标轴扩展性上,Langley说道,“思考Y的另一种方式就是服务层级的优先级,而且你经常会听到术语微服务架构,这就是Y坐标轴优先级的一个例子,即将所有的服务都分解,”他说道。
头脑中有这些可扩展性理念,以及一个基于Java的应用设计框架组合,最著名的就是Akka分布式应用框架,Ekho已经设计了自己的应用,能够在完整的服务分离舱集群之间分割。这些分离舱随后可以被放置到多个亚马逊可用区域中;多个地域或者多个国家地域中;而且可用区域能够实现弹性和灾难恢复,以及性能和可扩展性。