发展历程
上图来来自CNCF(云原生基金会),讲述了云原生的重要发展历程,而我们正处理云原生发展的关键节点。2019年随着阿里的全面上“云”,“云”逐渐成为技术人员的必修技能,会“docker”、懂“k8s”已经慢慢不能满足企业的需求了,会“云原生架构”、解决云上问题在企业招聘中逐渐凸显出来。
什么是云原生?云原生该怎么落地?
云原生,是一条最佳路径
云原生是一条使用户能:
1.低心智负担的;
2.敏捷的;
3.以可扩展、可复制的方式,最大化的利用”云“的能力、发挥”云“的价值的最佳路径;
云原生的愿景
软件从诞生起就生在云上、长在云上的、全新的软件开发、发布和运维模式
云原生技术范畴
云应用定义与开发流程
1.应用定义与镜像制作
2.CI/CD
3.消息和Streaming
4.数据库
云应用编排与管理
1.应用编排与调度
2.服务发现与治理
3.远程调用
4.API网关
5.Service Mesh
监控与可观测性
1.监控
2.日志
3.Tracing
4.混沌工程(破坏性测试Chaos Monkey)
云原生底层技术
1.容器运行时
2.云原生存储技术
3.云原生网络技术
云原生工具集
1.流程自动化与配置管理
2.容器镜像仓库
3.云原生安全技术
4.云端密码管理
Serverless
1.FaaS
2.BaaS
3.Serverless 计费
云原生两个理论基础
不可变设施,设计实现比如镜像
云应用的编排理论,设计实现容器设计模式(k8s)
基础设施向云演进的过程
首先为大家介绍一下“不可变基础设施”的概念。其实,应用所依赖的基础设施也在经历一个向云演进的过程,举例而言,对于传统的应用基础设施而言,其实往往是可变的。
大家可能经常会干这样一件事情,比如需要发布或者更新一个软件,那么流程大致是这样的,先通过 SSH 连到服务器,然后手动升级或者降级软件包,逐个调整服务器上的配置文件,并且将新代码直接都部署到现有服务器上。因此,这套基础设施会不断地被调整和修改。
但是在云上,对“云”友好的应用基础设施是不可变的。
这种场景下的上述更新过程会这么做:一旦应用部署完成之后,那么这套应用基础设施就不会再修改了。如果需要更新,那么需要现更改公共镜像来构建新服务直接替换旧服务。而我们之所以能够实现直接替换,就是因为容器提供了自包含的环境(包含应用运行所需的所有依赖)。所以对于应用而言,完全不需要关心容器发生了什么变化,只需要把容器镜像本身修改掉就可以了。因此,对于云友好的基础设施是随时可以替换和更换的,这就是因为容器具有敏捷和一致性的能力,也就是云时代的应用基础设施。
所以,总结而言,云时代的基础设施就像是可以替代的“牲口”,可以随时替换;而传统的基础设施则是独一无二的“宠物”,需要细心呵护,这就体现出了云时代不可变基础设施的优点。
基础设施向云演进的意义
基础设施一致性和可靠性
容器镜像不变
自包含,包含所有运行环境
可漂移,可迁移到云上任务位置
简单可预测的部署与运维
自描述,自运维
流程自动化
容易水平扩展
可快速复制的管控系统与支撑组件
云原生落地关键技术点
- 自包含、可定制的应用镜像
- 应用快速部署与隔离能力
- 应用基础设施创建和销毁的自动化管理
- 可复制的管控系统与支撑组件