基于AWS打造『云原生』Web应用实战(一)

IT行业永远也不缺乏新名词和新概念。

什么是『云原生』?

2015年,Pivotal公司的 Matt Stine 提出 Cloud Native 这一概念,它是一个思想的集合,包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)、康威定律(Conways Law)等,以及根据商业能力对公司进行重组。Cloud Native既包含技术(微服务,敏捷基础设施),也包含管理(DevOps,持续交付,康威定律,重组等)。Cloud Native也可以说是一系列Cloud技术、企业管理方法的集合。

『云原生』更官方定义是来自于Cloud Native Computing Foundation(CNCF)组织的定义:
Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
『云原生技术帮助公司和机构在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。』
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
『这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术可以使开发者轻松地对系统进行频繁并可预测的重大变更。』

为何需要『云原生』?

这种新颖架构方式,不仅提供了完善的软件持续交付链方案,也为我们的应用组织方式带来了巨大的想象空间,甚至在将来可能给整个软件行业带来颠覆式的革命。『云原生』为我们带来一下几方面的显著收益。

迭代速度

天下武功,唯快不破,市场竞争亦是如此。能够快速创新、实施并交付软件的企业在市场竞争中具有巨大的优势。在传统企业中,为应用提供环境和部署新版本花费的时间通常以天、周或月来计算。而互联网公司的产品发布和更新速度,得益于『云原生』技术,可以小时甚至分钟来计算。

弹性扩展

随着产品服务对象的增加,我们必须扩大服务能力。过去我们通过垂直扩展来处理更多的需求:购买和部署更多和更强悍的服务器。随着公有云基础设施的出现,云计算厂商为我们提供了大量的可弹性扩展的服务。开发者发布应用后,无需担心扩展问题,当访问遇到瓶颈时,云计算厂商会自动为应用分配更多的计算资源,而当访问量下降时候,又会收回空闲的资源以节省成本。

安全容错

在传统的单体应用中,往往一个微小的错误,导致整个系统崩溃,并且需要很长时间才能恢复。而『云原生』应用程序架构通常使用微服务。通过将系统拆解为微服务,我们可以将任何一个微服务的故障范围限制在这个微服务上。一个服务的故障导致受到影响的只是应用的部分功能,由于单个服务又很容易定位错误并且能快速恢复,因此可以将系统故障受到的损失降低到最小。

如何实现『云原生』?

组织变革:根据康威定律,如果要达到比较理想的云化效果,必须进行组织变革。一个合理的组织架构,将会极大提高云化的推行。

推行DevOps文化:在公司层面推行DevOps文化,倡导开放、合作的组织文化,打破“部门墙”。
推行持续交付:联合开发、质量、运维各个环节,打通代码提交、代码检查、测试、开发环境部署、staging环境部署、线上环境部署等流水线。

建设敏捷基础设施:这部分是整个 Cloud Native 的根基。这部分可以采纳的技术非常多,开源的、商用的都比较多。

采用微服务架构:微服务架构是Cloud Native的一个核心要素。

为何基于AWS实现?

亚马逊是全球第一家推出云服务的厂商,也是全球云服务规模第一的品牌。目前亚马逊提供了超过150种服务,而且还在不断增加中。AWS基本覆盖从存储,网络,计算,数据库,物联网,开发,运维,安全,机器学习等几乎所有Web应用可能用到的基础设施。AWS还为每位新注册的用户提供了长达一年的免费套餐,可以在一定额度内免费使用多达60余项服务。即使是收费服务,大多也都是根据时间或使用量收费,用多少收多少,非常适合初学着学习使用。免费套餐的具体介绍可以访问网址: https://aws.amazon.com/cn/free

『云原生』Web应用开发大势已经到来,让我们积极拥抱变化,一起开始打造『云原生』Web应用吧。