博客传送门
首先,云(Cloud)是什么?
不是云里雾里,所谓云,我的理解是物理资源的虚拟化,以前是你必须要买一台台硬邦邦的金属,有个机房,放自己的机房里,管水管电,这些管理维护工作都要投入一定的人手。云来了以后,她说你不用管物理机器了,你想用的无非就是操作系统,我提供给你,你想用什么去和操作系统打交道——shell、人机交互界面都提供给你,这样水电都不用你管,你只管给兄弟打点钱就行了。
核心逻辑就是企业生存关心的是自己的业务逻辑,而远离业务的这些工作可以交给别人(云厂商)来打理,同意这样干的人多了,业务量起来以后,云厂商能挣着钱了,就专干这个,而且量大从优,企业摆脱了非核心业务逻辑的负担,同时又获得了专业的服务,香不香?这就是通过市场来进行资源的优化配置。
现在市面上很多公有云——阿里云、腾讯云、网易蜂巢、青云等等,不一而足。博主作为传统金融企业的从业人员,出去调研时,对方布道(忽悠)人员一般都会甩给你一张祖传秘戏图,不对,是基础设施演进图。
看,在“软件正在吞吃世界”的豪言壮语背景下,企业的技术基础设施也正在被拆解蚕食——这是好事。从水电到应用,一层层地被剥离出来,交给专门的厂商负责,而企业最终留下来的只有自己的核心业务诉求。
把物理基础设施吃掉的,叫 IaaS(Infrastructure as a Service)——基础设施即服务;把操作系统都吃掉的,叫 PaaS(Platform as a Service)——平台即服务;把所有的都吃掉,说声大爷您慢用的,叫 SaaS(Software as a Service)——软件即服务。IaaS 和 PaaS 都有叫云的,IaaS 就不说了,PaaS 有叫着容器云的,基于容器技术进行资源管理分配。当然,别忘了这些划分是从不同人员的角度来说的,比如在企业里,可能这样——运维同学看到的是 IaaS,技术同学看到的是 PaaS,业务同学看到的则是 SaaS。
到这里我们可以引出 Heroku 了,Heroku 就是一个墙外飘香的 PaaS 平台,她的用户只需要操心自己的应用代码,Git push 上去就会嗖嗖嗖地给你打包、测试、部署好,什么横向纵向伸缩、应用运行指标监控、负载均衡、失败重试、应用/数据回滚,都给你准备好了。不多说了,再说就要收钱了。总之 Heroku 对如何使用 PaaS 平台构建应用充满了丰富的实战经验,并提炼了 12-factor,大概意思我直接剪过来:
在云计算平台上部署应用,叫云上应用,而应用在设计开发时就考虑到了云平台的支持,进行无缝对接,天生契合,就可以叫云原生应用了。什么叫契合,最初就是以匹配 12-factor 这 12 个最佳实践原则来说的,后来 Kevin Hoffman 又补充了三点:
集齐了15颗龙珠,我们落地云原生应用就差不多有些底气了。
在2015年7月,云原生的大本营建立了,她就是 CNCF(Cloud Native Computing Foundation)——云计算基金会。CNCF 在 V1.0 版中是这样 定义 云原生应用的:
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
世上就没有只收获而不需要付出的事情,除非耍流氓把成本转嫁给别人。为了收获云原生承诺的这些好处,除了需要一大帮朋友来共建一个大大的生态,对准备采用云原生的企业来说也属实是一项不小的工程。怎么把我们传统的应用乾坤大挪移到云原生的赛道上,官方给出了一条打怪升级路径,按部就班就可早登极乐。
咱们来看看这10个升级台阶:
来吧,屠龙的勇士,我们手里的大斧已经饥渴难耐