文:商派运维团队 朱士杰
前言:
回顾过往,商派ShopeX的基础架构体系,从最早的IDC(大量采买硬件来搭建我们的服务),再到云计算(虚拟化上云),在这两次变革中,我们的服务效率、费用成本和质量都上了一个新的台阶。但在业务场景大爆发的潮流中,我们也遇到了许多需要解决的问题,如:
● 交付新环境的时间比较长
● 应用日常发布更新比较繁琐
● 大促紧急扩容的能力不足
● 底层的云资源无法有效利用
经过大量的实践与经验积累,商派ShopeX正式步入了云原生的架构体系,通过容器+K8S+devops的管理方法,不断提升商派的基础架构的稳定性、扩展性、高效性、安全性。
# 什么是云原生
云原生的由来
云原生(Cloud Native)由来已久,其本质就是说应用程序从设计之初即考虑到云的环境,原生为云而设计,在云 上以最佳姿态运行,充分利用和发挥云平台的弹性+分布式优势。
我们现在说的云原生最核心的技术就是Kubernetes,以至于后面云原生可以真正落地。Google从2000年就开始使用了容器(linux容器)系统,其内部一直使用容器化编排引擎(Borg),Kubernetes也由此而来。
2014年Google开源了Kubernetes。
2015年Google主导成立的云原生计算基金会(CNCF),并把Kubernetes作为初创项目贡献给了CNCF。
云原生的探索
● 解决应用环境标准化的问题
容器化是指将软件代码和所需的所有组件(例如库、框架和其他依赖项)打包在一起,让它们隔离在自己的“容器”中。
这样,容器内的软件或应用就可以在任何环境和任何基础架构上一致地移动和运行,不受该环境或基础架构的操作系统影响。容器就像是一个气泡(或者是应用周围的计算环境),把应用和周围环境隔离开来。它相当于是一个功能全面、便于移植的计算环境。
将应用打包装入可在平台和基础架构之间移动的容器后,只用把该容器移动到某个位置,应用就能在那里成功运行使用,因为容器中包含了成功运行应用所需的一切。
● Kubernetes自动化的特性
Kubernetes 是用于自动部署,扩展和管理容器化应用程序的开源系统。官方初始定义就是企业级应用,而他天生就高可用架构,我们可以通过同一份配置立即启动一个一模一样的环境,从而提高应用开发和部署的效率,而其本身就具有自动化上线,自动化扩容,自我修复的特性。
应用容器化迁移过程
迁移思维导图
k8s容器化迁移
解决的问题
● 容器化之后新环境无需重复部署
容器化打包之后,应用本身部署的环境已经被容器本身取代,所以新开应用是无需重复部署环境的,和之前部署环境1-2天(加测试问题排查等)相比容器标准化之后,大大降低了部署时间。
● 大促扩容效率提速
2021双11 商派业务中台 其中一个服务 从20个实例扩容到100个实例全部启动仅用了8分钟
● 应用日常发布快
单应用一周发布频率超过30次,只需负责项目研发负责上线工作,大大降低了上线成本。
● 底层的云资源利用率提高
一般没有容器化之前,非容器化应用的服务器cpu水位利用率大概不到百分之10,容器化之后在相同的资源cpu水位提升百分之100,资源没有饱和的情况下可以部署更多的应用。
总结
云原生化使得应用增益良多,实践和探索云原生是未来很长一段时间需要走的路线,云原生究其本质,凡是能够提高云上资源利用率和应用交付效率的行为或方式都是云原生。