一 起源
Paul Fremantle提出的Cloud Native
2010年5月28日,WSO2的CTO和联合创始人Paul Fremantle在他写的一篇博客中首次提出了Cloud Native这个概念。Paul Fremantle提出Cloud Native的原因是他一直想用一个词表达一种架构,这种架构能描述应用程序和中间件在云环境中的良好运行状态。因此他抽象出了Cloud Native必须包含的属性,只有满足了这些属性才能保证良好的运行状态。
Paul Fremantle对Cloud Native的属性总结如下。
分布式。
弹性。
多租户。
自服务。
按需计量和计费。
增量部署和测试。
Adrian Cockcroft提出的Cloud Native
直到2013年,Netflix的云架构师(2016年10月他成为AWS的VP)Adrian Cockcroft在Yow Conference上介绍了Netflix在AWS上基于Cloud Native的成功应用。Netflix在AWS上运行着上万个实例,每天都有数以千计的实例被创建或删除。Netflix的成功,吸引着大批研发人员争相模仿,Adrian Cockcroft介绍Netflix的成功经验时,主要从目标、原则和措施等方面进行了描述。
Adrian Cockcro可扩展性。对于Netflix这样的公司来说,可扩展性至关重要。据Adrian Cockcroft介绍,Netflix在AWS上运行着几千个Cassandra节点和上万个服务实例。
高可用性。高可用代表了更好的用户体验,系统每分钟的不可用都意味着金钱上的损失。
敏捷。在互联网公司,速度永远是第一位的,速度代表了良好的用户体验。Netflix利用了AWS,而不是自建云环境及平台服务,这可以加快研发速度。
效率。在软件研发过程中,效率高的人比效率低的人效率不只是高出百分之二十,有可能是几十倍,甚至是上百倍。
为了达成以上目标,Netflix制定了五大架构原则,通过这些架构原则约束所有研发人员的思想。Adrian Cockcroft对Netflix实施Cloud Native的架构原则总结如下。
不变性。服务的实例一旦创建,将不能修改,如果要修改,则可以通过创建一个新的节点实现。
关注点分离。通过微服务架构实现关注点分离,避免出现“决策瓶颈”。实际上,实现关注点分离有助于提升系统的扩展性和可用性。
反脆弱性。默认所有的依赖都可能失效,在设计阶段就要考虑到如何处理这些失效问题。为了让系统更强壮,Netflix会不断地攻击自己、主动破坏,以提醒系统要进行反脆弱性设计。
高信任的组织。Netflix是基于信任的管理风格,相信自己的员工可以做出正确的决策,倡导给基层员工自主决策权。
共享。在Netflix,管理是比较透明的,共享能够促进技术人员的成长。
那么Netflix通过什么措施实现了上面的目标呢?据Adrian Cockcroft介绍,Netflix主要采取了如下措施。
利用AWS实现可扩展性、敏捷和共享。
利用非标准化数据实现关注点分离。
利用猴子工程师[1]实现反脆弱性。
利用默认开源实现敏捷、共享。
利用持续部署实现敏捷、不变性。
利用DevOps实现高信任组织和共享。
利用运行自己写的代码实现反脆弱性开发演进。
2 如何衡量cloud native的能力
3 单体架构与微服务架构对比