云原生的5W1H
云原生漫谈
云原生的5w1h,what,why,where,how,who when -> anytime 云原生概念(定义、优势、总结); 云原生技术领域介绍:容器->容器编排->服务治理(简要介绍代表技术Docker、Kubernetes、Istio和Linkerd)、微服务架构 & Serverless架构、DevOps & 可观测性; Kubernetes简介(如何满足12-Factor)、架构及开发方式; 应用的现代化改造思路; 云原生时代下的团队(对新出现一些岗位和名词的解释); CNCF(简介、对cncf landscape的介绍);
概念
What
定义
Martin Fowler - 课程获取
云原生描述了一种高效组织的模式,可以快速地、一致地、可靠地、规模化地交付软件
持续交付、DevOps 和微服务指明了为什么,怎么样,和什么是云原生
CNCF定义:
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
Pivotal 公司的 Matt Stine,2015,对于云原生的定义:12-Factor;面向微服务架构;自服务敏捷架构;基于API的协作;扛脆弱性
云原生12因素(12-Factor)
- 基准代码:一份基准代码,多份部署。基准代码和应用之间总是保持一一对应的关系。所有部署的基准代码相同,但是每份部署可以使用其不同的版本。
- 依赖:显式声明依赖关系。应用程序一定通过依赖清单,确切地声明所有依赖项。
- 配置:在环境中存储配置。将应用的配置存储于环境变量中。环境变量可以非常方便地在不同的部署间做修改,却不动一行代码。
- 后端服务:把后端服务当做附加资源。应用不会区别对待本地或第三方服务。对应用程序而言,两种都是附加资源。
- 构建、发布、运行:严格地区分构建,发布,运行这三个步骤。
- 进程:以一个或多个无状态进程运行应用。应用的进程必须无状态且无共享。
- 端口绑定:通过端口绑定提供服务。应用完全自我加载而不依赖任何网络服务器就可以创建一个面向网络的服务。
- 并发:通过进程模型进行扩展。开发人员可以运用这个模型去设计应用架构,将不同工作分配给不同的进程类型。
- 易处理:快速启动和优雅终止可最大化健壮性。应用的进程是可支配的,意思是说它们可以瞬间开启或停止。
- 开发环境与线上环境等价:尽可能保持开发、预发布、线上环境相同。应用想要做到持续部署就必须缩小本地与线上差异。
- 日志:把日志当做事件流。应用本身考虑存储自己的输出流。不应该试图去写或者管理日志文件。
- 管理进程:后台管理任务当做一次性进程运行。一次性管理进程应该和正常的常驻进程使用同样的环境。
总结
理念 -> 特征 -> 技术体系(包括云原生架构、云原生服务等https://www.oracle.com/hk/cloud/cloud-native/what-is-cloud-native/)
优势
why
发展历程 从docker,参考书
新时代互联网巨头成功的秘诀 - 又快又好
- 创新速度
- 随时随地可用的服务
- 从 0 到 1,快速拓展
- 以移动设备为中心的用户体验 - 移动为王
云原生应用程序或原生云应用程序 (NCA) 是为云计算架构设计的程序。他们有很多好处。
- **独立性:**他们的架构使得构建彼此独立的云原生应用程序成为可能。这意味着您还可以单独管理和部署它们。
- **弹性:**即使在基础设施中断的情况下,精心设计的云原生应用程序也能够生存并保持在线。
- **基于标准:**为了互操作性和工作负载可移植性,云原生服务通常基于开源和基于标准的技术。这有助于减少供应商锁定并提高可移植性。
- **业务敏捷性:**云原生应用程序支持跨网络的灵活部署选项,并且比传统应用程序更小,这使得它们更易于开发、部署和迭代。
- **自动化:**云原生应用程序使用 DevOps 自动化功能,并支持持续交付和部署定期发布的软件更改。此外,开发人员可以使用蓝绿和金丝雀部署等方法来改进应用程序,而不会影响用户体验。
- **无停机时间:**借助 Kubernetes 等容器编排器,您可以部署软件更新,停机时间基本为零。
最终要解决的问题
软件开发的本质困难 - 研究生课程资料
复杂性,不可见性,可变性,一致性
软件工程的一切 架构 协作模式 软件过程etc… 都是为了解决这些问题
云原生技术领域
where
容器 -> 容器编排 -> 服务治理
Docker
Kubernetes
Istio?linkerd?
微服务架构 & Serverless架构
DevOps & 可观测性
DevOps工具链
!https://cdn.nlark.com/yuque/0/2021/png/1386879/1621972375535-ea44572d-afd5-47f7-a816-1ef0d053bc23.png?x-oss-process=image%2Fresize%2Cw_1507%2Climit_0
!https://cdn.nlark.com/yuque/0/2022/webp/1386879/1663579034683-2a95b897-da39-458c-bb0b-e6ab3f5d0955.webp?x-oss-process=image%2Fresize%2Cw_843%2Climit_0
CI/CD
Kubernetes
简介
如何满足12-Factor,为什么是云原生核心
架构
开发方式
什么是Kubernetes原生应用
sidecar模式
发布模式
应用的现代化改造
How
将单体应用改造成云原生应用
容器化 -> 了解容器编排引擎工作原理 -> 了解分布式系统的模式 -> 应用服务网格 -> 使用无服务器架构 -> 代码优化,将短任务改造成函数
刀砍模式
一刀一刀砍去巨石应用。具体来说就是通过微服务架构来实现新的服务,然后逐步替换掉老应用中的部分组件功能。可以采用网关或者外观层来将用户请求导向正确的应用。随着时间的推移,越来越多的功能被转移到新架构下,知道整个巨石应用崩塌瓦解,完全转换为一个微服务架构下的应用。
防损层模式
与刀砍模式类似,区别在于新服务需要调用老服务。通过建立防损层可以使新服务访问老服务,反过来老服务也可以调用新服务。
云原生时代下的团队
who
岗位
开发?
运维?
运维开发?
SRE?
云原生工程师?
Kubernetes开发工程师?
容器工程师?
基础架构研发工程师?
云原生操作系统?
CNCF
云原生生态介绍
CNCF 成立于 2015 年,旨在应对大量采用云原生系统的组织和服务。CNCF 是由 Linux 基金会创建的项目,是一个开源软件基金会,旨在促进云原生技术的采用。CNCF 拥有超过 400 名成员,包括公共云提供商、企业软件公司和技术初创公司。微软、甲骨文、VMware、英特尔是 CNCF 的一些白金会员。
CNCF 的存在是为了确保云原生技术可访问、可用且可靠。它培育了一个致力于 Kubernetes、Prometheus 和 CoreDNS 等项目的社区,同时支持构建可持续环境的组织,这些环境在微服务架构中编排容器。
landscape介绍
组合一个典型的云原生架构
如何评估云原生能力
CMMI
云原生的未来
参考资料 & 推荐阅读
https://www.infoq.cn/article/Fl9i3xgdklYR9xO5ryDc?source=app_share
云原生:
深入剖析Kubernetes
云原生.Boris Scholl 等.2020
Design Patterns for container-based distributed systems.Brendan Burns 容器设计模式
云原生应用设计模式https://xie.infoq.cn/article/3c64971c8aa06fec5e00b463b
https://ost.51cto.com/posts/13985
DevOps:
凤凰项目
DevOps实践指南
微服务:
微服务设计模式
Martin Fowler Microservices https://martinfowler.com/articles/microservices.html
企业IT架构转型之道:阿里巴巴中台战略思想与架构实战