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 在容器大棋盘上的“落子”
整个 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 给出了四大理由:
安全可靠:EKS 是运行生产级工作负载的平台,因此安全可靠是首要任务。AWS 会确保 EKS 每个版本在发布时是完全符合安全要求的,并且会始终提供安全补丁。如果你运行的是老版本 Kubernetes 也不用担心,AWS 也会提供支持老版本的安全补丁。
原生和上游 Kubernetes 体验:AWS 的 Kubernetes 与开源 Kubernetes 的运行是一样的,与开源社区密切合作,并会将代码贡献给上游。
无缝集成:EKS 与 AWS 平台实现了无缝集成,可享受 165 种不同的服务,包括存储服务、管理服务等。
目前 51%的工作负载运行在 AWS 上。
据 Aaron Kao 透露:“EKS 很快会在 AWS 中国(北京)区域、AWS 中国(宁夏)区域、AWS 南美洲(圣保罗)区域推出。”
除了 ECS 和 EKS,AWS 还有一个秘密武器 AWS Fargate。有了它,用户就无需处理服务器或基础架构了,可以快速推出和扩充容器应用,据 Aaron Kao 介绍:“现在,客户使用 Fargate 每周管理和运行上百万个容器。”
2019 年 10 月 8 日,AWS Fargate 正式在中国推出。
写在最后
“产品众多”是 AWS 的一大特征,在容器服务领域也不例外。相信很多人都会有疑问:“AWS 是基于什么样的原因推出了如今的产品。”Aaron Kao 表示:“其实 90%的产品路线图都是从客户那里获得的,我们会根据客户的要求分地区提供给他们想要的服务。除此之外,我们还将重点关注安全性、可用性、可靠性以及开发工具的创新。”
评论