AWS CEO Jeff Bezos曾提出一个著名的理论——两个披萨原则,即每个内部团队都应该足够小,小到可以用两个披萨喂养。如何实现两个披萨团队呢?AWS现代化应用产品市场负责人 Aaron Kao和我们讲述了AWS的实践历程,同时也介绍了AWS提供的现代化应用产品。
2000年,亚马逊网站还是一个超大型的单体应用,内部很多团队在开发同一个应用,如果团队成员想要添加新产品,就必须对原代码进行编辑、修改。当时,很多不同团队都必须到同一个管道中进行单体应用开发,敏捷性非常差。
2001年,为了实现更快速地开发,AWS决定改变构建应用的方式,打造“双披萨团队”,把应用分解为多个微服务。S3就是其中一个很好的例子,2013年S3刚推出时,只有8个微服务,现在S3已经包含有235个以上的微服务。
这是AWS的实践历程,那么其它公司应该如何实践呢?Aaron Kao表示:“想要实现现代应用的开发,就必须在很多方面都做出改变,包括架构模型、运营模型、软件交付、安全模型以及数据管理。”
以架构模型为例,随着单体应用程序的代码库不断扩大,添加、修改功能就变得十分复杂。为了解决这个问题,AWS引入了微服务体系架构,每个团队做一个服务,每个服务执行一个功能,彼此之间相互独立,通过轻量级的API实现服务和团队之间的沟通。如果想把规模做大的话,只需对某个服务进行规模化,如果想修改的话,只需修改某个微服务的代码,而无需影响其它代码。
微服务如果部署在多个主机上也会遇到很多问题,例如大量微服务的管理,部署等,而容器的出现刚好可以解决这些问题。下面我们就来看看AWS在容器方面有哪些布局。
整个AWS容器服务的布局可以分为三个层次,最下面是映像注册表,Amazon ECR (Amazon Elastic Container Registry),它可以存储容器映像文件,容器注册表非常易用;中间是计算引擎,用户可以使用Amazon EC2作为启动类型来运行容器,也可以使用AWS Fargate来启动无服务器的运行;最上层是编排层,根据不同的用户需求,AWS提供了不同的服务,如果客户想要专注于基础架构或配置,可以自己搭建编排服务。如果客户只想开发应用,那么可以使用AWS的托管服务,Amazon Elastic Container Service或者Amazon Elastic Kubernetes Service。
2014年,为了给客户提供容器管理服务,AWS发布了Elastic Container Services(简称ECS),与AWS其它服务深度集成,例如Elastic Load Balancing,支持在EC2实例里运行Docker容器。
随着Kubernetes渐渐成为市场上容器编排的事实标准,AWS在2018年6月推出了面向Kubernetes的EKS。用户可以通过EKS完成微服务、PaaS、企业应用迁移以及机器学习。
为什么我们要选择EKS呢?Aaron Kao给出了四大理由:
据Aaron Kao透露:“EKS很快会在AWS中国(北京)区域、AWS中国(宁夏)区域、AWS南美洲(圣保罗)区域推出。”
除了ECS 和 EKS,AWS还有一个秘密武器AWS Fargate。有了它,用户就无需处理服务器或基础架构了,可以快速推出和扩充容器应用,据Aaron Kao介绍:“现在,客户使用Fargate每周管理和运行上百万个容器。”
2019年10月8日,AWS Fargate正式在中国推出。
“产品众多”是AWS的一大特征,在容器服务领域也不例外。相信很多人都会有疑问:“AWS是基于什么样的原因推出了如今的产品。”Aaron Kao表示:“其实90%的产品路线图都是从客户那里获得的,我们会根据客户的要求分地区提供给他们想要的服务。除此之外,我们还将重点关注安全性、可用性、可靠性以及开发工具的创新。”
领取专属 10元无门槛券
私享最新 技术干货