原来他们才是AWS容器服务的“宝藏男孩”

原来他们才是AWS容器服务的“宝藏男孩”

看了文章的标题,您也大概能猜得出,我又要来说容器的好话了。其实,不仅仅是容器本身,以容器为代表的诸多现代化应用,或者更时髦一点说“云原生”应用都是我们要大书特书的,因为它们相对传统的单体应用和开发模式来说无疑是一个巨大的进步,带来了效率的提升、开发的便捷,以及应用的快速“上新”。

也许你会爱上“双披萨团队”

AWS现代化应用产品市场负责人Aaron Kao就有切身的体会。早在2000年的时候,亚马逊网站拥有一个单体的应用(monolithic application),很多团队,却只开发一个应用。诚然,这是一个巨型的应用,包含大型的数据库,但是缺乏敏捷性,如果想添加新功能,就必须对原代码进行编辑、修改。2001年,改变传统构建应用方式的时机到了,亚马逊将应用分解为多个微服务,并且打造了所谓的“双披萨团队”。这种组织架构以及开发模式上的变革,使得亚马逊能够更快速地进行开发。

Aaron Kao解释说,所谓“双披萨团队”,就是这个团队的成员数量,只要两个披萨就能够吃饱。团队完全负责自己开发的服务,完全拥有自己的应用,从发现应用、应用的开发到应用的部署,全面问责。很多人也把它称为DevOps开发应用模式。

AWS S3就是一个典型的例子。2013年S3推出的时候,只有8个微服务,如今S3包含了超过235个分布式微服务。“什么是现代化应用?它至少应该具备全球化、大规模、毫秒级延迟、PB级数据以及多模。为此,我们可能要做出很多改变,而首当其冲的便是架构模型,以及运营模型、软件交付、安全模型和数据管理的改变。”Aaron Kao表示。

现在,除了亚马逊,已经有成千上万的客户走上了同样的道路。比如麦当劳,他们推出了一项送货上门的服务,这是在4个月之内使用Amazon ECS上运行的微服务实现的。这个云原生的微服务架构可以做到每秒处理两万笔订单,延迟不到100毫秒,并且能够轻松地与全球交付合作伙伴进行集成。

没有高质量的云平台,哪来的高质量的应用?

统计数据显示,今天51%的Kubernetes工作负载都运行在AWS的云上。

从单一应用到微服务,从虚机到各种实例的类型,之后是容器、无服务器计算Lambda等的兴起,计算在发展,用户的选择也更多。AWS希望为容器应用打造一个全面的平台,让它尽快流行起来。因为容器提供了一个非常容易的机制来打包企业的应用,而且非常容易部署到任何一个环境中,快速缩小或者扩大。这也是客户真正喜欢容器的原因。

AWS拥有非常广泛的容器产品和服务,覆盖了三个层次:最下面是弹性的映像注册表Amazon ECR (Amazon Elastic Container Registry),它可以存储容器映像文件,且非常易用;中间层是计算引擎,因为容器需要运行在某一个计算平台上,用户可以使用Amazon EC2作为启动类型来运行容器,也可以使用AWS Fargate来启动无服务器的运行;在上面的编排层,AWS可以为客户提供非常多的选择,客户既可以自己搭建编排服务,也可以使用AWS的托管服务,比如Amazon Elastic Container Service(ECS)或者Amazon Elastic Kubernetes Service(EKS)。总之,AWS希望为客户提供最优秀的容器平台,方便客户开发自己的应用。

AWS是一家“为客户着迷”的公司,客户的需求就是研发的方向。当有客户提出,AWS能不能提供一项服务,帮我们管理容器?Amazon ECS就这样诞生了,它可与AWS其他的服务(例如Auto Loader Balancing,ALB)深度集成,使得客户可以更好地在EC2上进行应用开发。

随着时间的推移,又有客户提出,需要AWS帮助实施Kubernetes。Amazon EKS应运而生,它是一个全托管的Kubernetes服务,可以帮助客户以安全和高可伸缩的方式进行管理。Kubernetes是一个开源的项目,云平台的质量与应用的质量是相辅相成的,AWS为Kubernetes提供了一个高质量的云平台。

客户为什么一定要选择AWS的Kubernetes?Aaron Kao自问自答。首先,Amazon EKS提供的是运行生产级工作负载的平台,安全和可靠是其最大的优势。其次,AWS提供原生和上游(native and upstream)的Kubernetes体验,即AWS的Kubernetes和开源的Kubernetes的运行是完全一样的。AWS与Kubernetes技术社区密切合作,使这一切成为可能。再次,AWS尽量做到无缝集成。AWS拥有165种不同的服务,从存储到管理应有尽有,这种服务的广度和深度让客户在应用容器时更加得心应手,同时获得了更多能力增强。最后,AWS的Amazon EKS团队积极与上游的Kubernetes项目和CNCF共享。

Aaron Kao介绍说,今天客户使用Kubernetes的方式有很多种,有人用Amazon EKS迁移企业应用,也有人将Amazon EKS用于机器学习。

据悉,Amazon EKS很快将在AWS中国(北京)区域、AWS中国(宁夏)区域以及AWS南美洲(圣保罗)区域推出。

主动权掌握在用户手中

当客户的现代化应用越来越多,容器的规模越来越大时,新的问题又来了:怎样对容器进行整合,又怎样更好地管理大量容器呢?AWS Fargate可以轻松应对这些问题。“有了Fargate之后,客户就不需要自己去处理服务器或者基础架构,可以更快地推出和扩充容器应用。客户只需要根据自己所用的服务支付费用,而不用理会容器集群的数量有多大。容器的使用因此变得极其简单。”Aaron Kao介绍说,“现在,全球数以千计的客户都在使用AWS Fargate,其中有的客户使用Fargate每周运行上百万个容器。”

在2017年11月举行的AWS re:Invent大会上,AWS Fargate的发布并没有引起轰动。在2018年公布的技术雷达上,AWS Fargate也仅处于“评估”的位置,和“试验”和“采用”还有一定距离。但是今天,AWS Fargate已经在中国正式发布。“蛰伏”的AWS Fargate终于要发威了。在这之前,国内的一些技术社区、开发者都表达了对AWS Fargate的期待。有人这样描述AWS Fargate的价值:它完全抽象了底层基础架构,使得用户可以将每个容器视为一台机器;而容器就像水面上的船只,拥有自己的帆、船舵、船员,自己可以漂流到想要去的地方。还有人这样评价AWS Fargate:它将AWS Lambda的价值、便利性和可扩展性带进了容器领域,是重要的游戏规则改变者。

原来他们才是AWS容器服务的“宝藏男孩”

AWS Fargate是一种适用于Amazon ECS的计算引擎,使得用户无需管理服务器或群集即可运行容器。使用AWS Fargate,用户不必再预置、配置和扩展虚拟机群集即可运行容器。这样一来,用户就省去了选择服务器类型、确定扩展群集的时间和优化群集打包的工作。采用 Fargate,用户可以专注于设计和构建应用程序,而不是管理运行应用程序的基础设施。

Amazon ECS具有两种模式:Fargate启动类型和EC2启动类型。使用Fargate启动类型,用户只需将应用程序打包到容器中,指定CPU和内存要求,定义联网和IAM 策略,然后启动应用程序即可。

归纳起来,AWS Fargate具有三大显著优势。第一,无需管理集群。使用AWS Fargate,用户只需考虑容器,以便能够集中精力构建和运行应用程序。AWS Fargate消除了管理Amazon EC2 实例群集的需要,用户不必再选择实例类型、管理群集调度和优化群集利用率。第二,无缝扩展。借助AWS Fargate,用户可以轻松扩展应用程序,而不必再担心是否为容器应用程序预置了足够多的计算资源的问题。在指定应用程序要求(如CPU、内存等)后,AWS Fargate将以高度可用的方式管理运行容器所需的所有扩展和基础设施。Fargate可以在几秒钟内启动数以万计的容器,并轻松扩展以运行最重要的关键任务型应用程序。第三,与Amazon ECS 无缝集成。用户只需按照定义Amazon ECS的方式定义应用程序,可以将应用程序打包到任务定义中,指定所需的CPU和内存,以及定义每个容器需要的联网和IAM 策略,并将所有这些内容上传至Amazon ECS。在完成上述所有设置后,AWS Fargate就会启动和管理容器。

原来他们才是AWS容器服务的“宝藏男孩”

谈到Fargate和与Lambda的关系,Aaron Kao介绍说,Fargate和Lambda是构建和包装客户应用的两种不同方式:如果客户想在容器层运行应用,并把它包装成一个容器的话,就可以采用Fargate;如果客户只是想将应用作为一个函数,打包代码,然后由客户自己发出一个触发器,来触发代码运行,那么Lambda更适合。究竟如何合理选择,还是要看客户希望掌握多大的控制权,需要何种程度的抽象化。

应用现代化或者说云原生的大门才刚刚打开,其中的奥妙和变化,需要企业用户和厂商共同去探索。无论是Amazon ECS、Amazon EKS,亦或是Lambda、Fargate,面对众多选择,企业用户要有自己的主心骨,了解自己的问题所在,才能做出最适合自己的选择,不是吗?


分享到:


相關文章: