起源
2010年5月,WSO2的CTO Paul Premantle在博客中首次提出了云原生(Cloud Native)的概念。
2013年,Netflix的云架构师Adrian Cockcroft在Yow会议上介绍了Netflix基于Cloud Native的成功应用实践。
同在2013年,Pivotal的Matt Stine在文章中详细介绍了如何将应用迁移到Cloud Native。
2015年,Google牵头成立了CNCF(Cloud Native Computing Foundation),发布了Kubernetes,为应用上云提供了诸多工具。
概述
云原生可以理解为一种设计模式。一个云原生应用应具备可用性和伸缩性,以及自动化部署和管理能力。可随处运行,还可以提供持续集成、持续交付工具提升开发测试效率。
云原生也对研发流程和代码协作提出了要求,统称为十二要素:
十二要素
1.基准代码Codebase
一个应用一套代码,可多次部署。
2.依赖Dependencies
显式声明第三方依赖。
3.配置Config
配置储存到环境变量。
4.后端服务Backing Services
低耦合。
5.构建、发布、运行Build,Release,Run
分离构建和运行流程。
6.进程Processes
应用进程无状态。
7.端口绑定Port Binding
通过端口绑定对外提供服务。
8.并发Concurrency
能够水平伸缩实现并发。
9.已处理性Disposability
可优雅启动和关闭应用。
10.开发/线上环境等价Dev/Prod parity
11.日志Logs
事件流处理日志。
12.管理进程Admin Processes
一点总结
其实现在你所负责的应用,除非是那种特别远古的产物,否则基本或多或少都有云原生思想的影子。对于一个应用到底算不算云原生,个人觉得不必那么纠结。云原生和之前大热的微服务一样,只是一个概念而已。真正让自己的应用运转更加稳定才是王道。