来自https://www.sohu.com/a/402763971_355140
近年来,随着云计算、大数据、物联网、人工智能等技术的驱动,企业数字化转型正在全球范围内普及。转型的浪潮正在重塑企业的业务战略,根据 IDC 2019 年数据显示,未来数年内企业或组织将会有超过 50% 的信息技术支出用于数字化转型,外加上 2020 年新冠疫情的影响,数字化转型更将成为企业或组织的必经之路。
对于企业数字化转型而言,应用就是生产力。原先如何落地实施数字化转型始终考验着企业或组织,而如今随着数字业务灵活性的加速,新架构、集成技术和模式已经从前沿转变为主流应用。对于开发者而言,由于企业或组织对于灵活、低成本、弹性伸缩的架构越发倚重,单体应用在面对新需求时已经显得力不从心。
正因如此,微服务作为一种开发的基础架构和组织方法,如今备受追捧。微服务架构具有敏捷、灵活扩展、轻松部署、技术自由、可重复使用的代码、弹性的优势。其实,微服务架构的概念本身并不是新事物,但为何始终没能真正流行?归根结底,是由于传统的本地化部署使微服务落地变得较为复杂。随着云计算的风靡,真正“解放了”微服务,更好的扩展性、伸缩性与可靠性让微服务的普及成为了必然。
而提到云计算,Amazon 当然是这个时代的开创者。众所周知 2006 年 AWS 正式上线了 EC2、S3 等核心产品,预示着云计算时代的开始。但鲜为人知的是,早在 2001 年 AWS 就已经开始了现代化应用架构的实践。当时 Amazon 采用了一套成熟的架构“单体应用程序 +Oracle 数据库”,但随着电商平台的繁荣,产品从上市到发布的时间成为了企业发展迫在眉睫的瓶颈。
AWS 的微服务实践
Amazon 提出了经典的 Two pizza teams 概念。Two pizza teams 含义为两块披萨饭量的小组,代表着这个团队足够小,同时单个团队仅负责相应的微服务,有充分的权限来进行相应产品的开发,并通过解耦来提升产品开发的敏捷性。而不同团队间利用 DevOps 技术来构建一系列小型且灵活的应用团队,进一步加快团队对于产品的开发过程和节奏。
Two pizza teams 将所有应用程序的 API 保持一致,并且拥有不同服务的所有权,这也就实现了面向服务的 SOA 架构,而它的本质同样是微服务。随着 Amazon 电商平台逐渐转向微服务,AWS 将不同的代码库重构为小型的、集中的、单用途的服务,实现了单一的代码库重构为面向服务的体系架构。如今,在 Amazon 官网上已有上万个微服务在支撑整个电商平台的运行,并且每年的部署次数超过六千万次。
可见 AWS 率先实践微服务,让其奠定了当今的电商与 IT 领域的行业地位。而微服务之所以能成为当下的主流架构,AWS 认为,一方面,在云时代微服务满足了开发者对于应用程序特定功能的开发需求,成为了现代化应用的最佳选择;另一方面,容器为微服务提供了最理想的实现方式,帮助开发者实现了敏捷开发、持续集成与持续发布。
AWS 建设容器服务体系
容器在应用交付的过程中有着先天的优势。自 2016 年后随着 Docker 热潮的逐渐冷却,容器技术逐渐进入下一阶段:如何管理大规模的容器化部署、编排和管理。而如今,当初 Swarm、Kubernetes 以及 Mesos 三分天下的场景早已不在,Kubernetes 遥遥领先坐稳了霸主地位。根据 sysdig 发布的 2019 年容器使用报告显示,已有 77% 的用户正在使用 Kubernetes 技术。
Kubernetes 的大获全胜,使得 Kubernetes 的实际应用不断增多,其存在的 IP 分配、安全合规、使用场景等问题也层出不穷,自此各大云厂商将精力投入到 Kubernetes 平台的研发当中,并不断完善。与此同时,由于 Kubernetes 既可在本地运行,也可在云平台运行,如何在两种生产环境中来构建 Kubernetes 的应用,如何利用生产环境中的特性来帮助企业进行数字化转型,也给各大云厂商提出了不小的挑战。
Amazon 作为领先的云厂商,积极拥抱容器化,围绕容器服务打造产品体系。2015 年,AWS 率先推出了 Amazon ECS 全托管容器调度管理服务,其为 AWS 原生 Docker 容器解决方案。随后,为了进一步支持开源的 Kubernetes 的发展,相继推出了 Amazon EKS 与 AWS Fargate。AWS 的容器产品涵盖从底层容器镜像仓库到上层应用网络,支持容器化的全生命周期。
众多的容器产品组合,可以为企业或组织量身定做在云端的容器服务和容器管理。首先最底层 AWS 提供 Amazon ECR 容器镜像仓库的服务;其次,容器可以运行在两种位置上,其一在 Amazon EC2 虚拟机上构建容器服务,其二选择 AWS Fargate 构建无服务器的容器服务;接着,在容器的管理层,AWS 提供 Amazon ECS 和 Amazon EKS 两种方式。最后,在最上层 AWS 支持不同的服务网格和服务发现,包括 Amazon Cloud Map 与 AWS App Mesh。
EKS 正在成为体系核⼼
虽然 AWS 基于开源 Kubernetes 的容器服务起步较晚,但其发展速度却是最快的,各国开发者对于 AWS 的容器服务认可度也是越来越高。根据 Nucleus Research 在 2019 年进行的调查显示,82% 的云端 Kubernetes 工作负载运行在 AWS 云服务之上。
AWS 顺势而为,2020 年 3 月 13 日,将 Amazon EKS 在宁夏西部云数据技术有限公司运营的 AWS 中国(宁夏)区域和北京光环新网科技股份有限公司运营的 AWS 中国(北京)区域正式商用,更好的为中国开发者提供 Kubernetes 平台和应用程序的容器化的服务。
Amazon EKS 从结构上来看,EKS 平台不仅仅是一项完全托管的 Kubernetes 服务,更像是 AWS 容器产品的集大成“者”。
第一,EKS 集群可以选择在 Amazon EC2 虚拟机上构建容器服务,或者使用 AWS Fargate 构建无服务器的容器服务。使用 AWS Fargate 时,开发者无需预置和管理服务器,可以保证每个应用程序按需付费,并通过设计隔离应用程序提高安全性。
第二,EKS 与诸如 Amazon CloudWatch、Auto Scaling 组、AWS Identity and Access Management (IAM) 和 Amazon Virtual Private Cloud (VPC) 之类的服务深度集成,为开发者带来监控、扩展和负载平衡应用程序的无缝体验。
第三,EKS 与 AWS App Mesh 集成,并提供 Kubernetes 原生体验,以使用服务网格功能并为应用程序带来丰富的可观察性、流量控制和安全功能。
Amazon EKS 从设计理念上来看,Amazon EKS 区别于其他 Kubernetes 服务,从设计之初便定位于企业级、完全托管的 Kubernetes 的解决方案,旨在帮助开发者在云端轻松运行 Kubernetes 。此外,EKS 提供 Kubernetes 原生的体验,始终保持和社区同步更新,并且积极将改进意见回馈给 Kubernetes 开源社区。
更多的,开发者使用 Amazon EKS 框架时,还将获得:
- 更全面的安全服务: Amazon EKS 集成了 AWS 的安全服务,实施 AWS 安全责任共担模式,并结合多项技术保证 EKS 服务的安全运行。例如:IAM 进行身份和验证的管理、CloudTrail 进行 Kubernetes 日志的管理、ACM 进行证书的管理、KMS 进行密钥的管理等。
- 更简便的管理方式: Amazon EKS 可以帮助 Kubernetes 集群进行节点预配置和全生命周期管理。EKS 负责来进行 Amazon EC2 节点的创建和管理,同时构建起自动伸缩的节点组 Auto Scaling Group,并且同时执行健康检查,减轻开发者在后端的管理压力。
- 更高可用性: Amazon EKS 提供托管的控制平面,控制平面包含至少两个 API 服务器的节点和跨三个可用区运行的三个 etcd 的节点,保证 EKS Master Node 的高可用构建。同时 Amazon EKS 会自动检测并且替换掉状况不佳的控制平面的实例,以消除单点故障。
Amazon EKS 可以较好的满足开发者对于现代化应用构建的需求。然而,不同于传统的生产资源的集群管理工具,Kubernetes 项目其最大的价值,乃在于它的 API 兼容能力和以此为基础“控制器”模式。在这个体系的指导下,使得 Amazon EKS 可以满足丰富的支持工具。
- 机器学习工具: Kubeflow 是一套 Kubernetes 的机器学习工具,Amazon EKS 可与 Kubeflow 进行整合,来构建深度学习平台。需要强调的是, 在 Amazon SageMaker 中同样也提供一系列 Kubernetes 的 Operator 相关工具,可方便开发者将 EKS 和 Kubeflow、SageMaker 进行无缝连通。更是有助于容器开发人员和机器学习开发人员,构建相关的机器学习容器化实践。
- 企业迁移: Amazon EKS 提供一系列迁移的最佳实践和方法,帮助开发者将基于 Kubernetes 的容器平台向 EKS 进行迁移。对于企业或组织而言,集群迁移可以将工作委托给 AWS 处理,无需自行管理 Kubernetes 控制平面,有效的减轻企业的数字化转型难度。
- 数据分析平台: 在大数据领域,Amazon EKS 可基于 Spark 构建数据分析平台,利用 Kubernetes 原生模式来构建 Spark 数据分析平台。另外,EKS 还可利用 R 语言平台,基于 Shiny 和 EKS 构建 R 应用平台,帮助开发者进行数据分析应用的构建。
在落地实践上,对于 Amazon EKS 来说同样不成问题。一方面 EKS 保持了 Kubernetes 平台的速度、稳定性、可扩展性以及与平台的良好集成度,另一方面搭配 AWS 云服务的加持,使其在全球广泛应用,包括金融、社交媒体、电子商务等。而如此庞大的用户基数,也正是 EKS 得以不断优化的关键。
AWS 脚踏实地,遵循“优良的平台架构是企业转型升级的保证”的理念,深耕于企业的数字化转型与应用现代化领域。随着 Amazon SageMaker、Amazon EKS 等产品在中国区正式商用,AWS 也希望通过技术的力量帮助更多的中国企业渡过难关,成功实现企业的现数字化转型,加速新经济的落地。