![](https://img.kancloud.cn/d9/2e/d92e821270ba082bcf65f4ecc54afce0_1871x629.png)# 什么是云原生
**云原生 = 微服务 + DevOps + 持续交付 + 容器化**
![云原生](http://assets.processon.com/chart_image/5f7fe0681e085307a07e0d39.png?_=1602216476041)
# 为什么选择云原生
![](http://assets.processon.com/chart_image/6015153563768925f1516066.png?_=1614397537889)
* 生产环境测试环境服务器资产利用如何提升,IT系统容量如何规划?
* 新核心项目成立,研发组申请32U64G 服务器三台?
* 生产业务系统如何快速分析定位?
* 系统BUG订单串号,研发登录生产服务器排查问题,三小时后BUG修复。
* 为什么系统故障最先发现的是我们的客户,而不是我们的研发团队?
## 云原生IT四化建设
## 金融科技应用架构变迁
![](https://img.kancloud.cn/b1/db/b1dbd591ac1e4170fe8a073de41359f3_1369x584.png)
## 微服务时代已经来临
![](https://img.kancloud.cn/51/80/5180bd78f061374e6b25cc7f26bbc4a0_1368x628.png)
## **云原生核心优势**
### **解耦软件开发,提高灵活性和可维护性**
- 基于容器镜像的软件分层,清晰的依赖管理
- 玻璃程序、配置和微服务,让开发者聚焦业务发展
- 通过拆分应用程序为微服务和明确的依赖描述
### **多云支持,避免厂商锁定**
- 厂商基于标准接口提供服务,互操作性强
- 开源为主,丰富的标准软件生态,用户多样选择
- 支持在混合云、私有云或混合云部署
### **避免侵入式定制**
- 基于k8s松耦合平台架构,易扩展
- k8s已经是被公认 platform for platform
### **提高工作效率和资源利用率**
- 通过中心编排过程动态管理和调度应用微服务
# 云原生应用与传统应用区别
## **牛”和“宠物”的管理方法**
![](https://img.kancloud.cn/77/b7/77b74572a880e90f2953f20bb48d5a26_1024x683.webp)
* **牛:** 容器及其基础设施都是不可变的,我们一般在部署容器或服务器后就再也不会对其进行修改。**如果需要任何的更新、修复或修改某些内容,我们可以使用有适当更改的通用镜像去构建新的容器或服务器,然后替换旧的容器和服务器。**这种方法就相当于在牛场管理牛。
* **宠物:** 另一方面,传统的服务器以及虚拟机我们都认为是可更改的,它们更像是宠物,因此**不是一次性使用的**,我们需要一直关注它们,所以它们的维护成本很高。
| | 传统 |云原生|
| --- | --- |---|
| 重点关注| 使用寿命和稳定性| 上市速度|
|开发方法|瀑布式半敏捷型开发|敏捷开发、DevOps|
|团队|相互独立的开发、运维、质量保证和安全团队|协作式 DevOps 团队|
|交付周期|长|短且持续|
应用架构|紧密耦合 <br> 单体式|松散耦合 <br>基于服务 <br> 基于应用编程接口(API)的通信|
|基础架构 | 以服务器为中心 <br> 适用于企业内部 <br> 依赖于基础架构 <br> 纵向扩展 <br> 针对峰值容量预先进行置备|以容器为中适用于企业内部和云环境 <br>可跨基础架构进行移植 <br>横向扩展 <br>按需提供容量|
# DevOps简述
顾名思义,DevOps就是开发(Development)与运维(Operations)的结合体,其目的就是打通开发与运维之间的壁垒,促进开发、运营和质量保障(QA)等部门之间的沟通协作,以便对产品进行小规模、快速迭代式地开发和部署,快速响应客户的需求变化。它强调的是开发运维一体化,加强团队间的沟通和快速反馈,达到快速交付产品和提高交付质量的目的。
DevOps并不是一种新的工具集,而是一种思想,一种文化,用以改变传统开发运维模式的一组最佳实践。一般做法是通过一些CI/CD(持续集成、持续部署)自动化的工具和流程来实现DevOps的思想,以流水线(pipeline)的形式改变传统开发人员和测试人员发布软件的方式。随着Docker和Kubernetes(以下简称k8s)等技术的普及,容器云平台基础设施越来越完善,加速了开发和运维角色的融合,使云原生的DevOps实践成为以后的趋势。下面我们基于混合容器云平台详细讲解下云平台下DevOps的落地方案。
### 云原生DevOps特点
DevOps是PaaS平台里很关键的功能模块,包含以下重要能力:支持代码克隆、编译代码、运行脚本、构建发布镜像、部署yaml文件以及部署Helm应用等环节;支持丰富的流水线设置,比如资源限额、流水线运行条数、推送代码以及推送镜像触发流水线运行等,提供了用户在不同环境下的端到端高效流水线能力;提供开箱即用的镜像仓库中心;提供流水线缓存功能,可以自由配置整个流水线或每个步骤的运行缓存,在代码克隆、编译代码、构建镜像等步骤时均可利用缓存大大缩短运行时间,提升执行效率。具体功能清单如下:
- 缓存加速:自研容器化流水线的缓存技术,通过代码编译和镜像构建的缓存复用,平均加速流水线3~5倍;
- 细粒度缓存配置:任一阶段、步骤可以控制是否开启缓存及缓存路径;
- 支持临时配置:用户无需提交即可运行临时配置,避免频繁提交配置文件污染代码仓库;
- 开箱即用的镜像仓库;
- 提供完整的日志功能;
- 可视化编辑界面,灵活配置流水线;
- 支持多种代码仓库授权:GitHub、GitLab、Bitbucket等;
- 多种流水线触发方式:代码仓库触发,镜像推送触发等;
- 网络优化,加快镜像或依赖包的下载速度;
### 云原生DevOps实践
- 容器基础平台
- 微服务应用发布平台
- Istio微服务治理
- APM 应用性能检测
## 容器基础平台
![](https://img.kancloud.cn/32/a8/32a86b6b548ecee9d0b7175313f02650_1386x663.png)
## 微服务应用发布平台
![](https://img.kancloud.cn/5a/8d/5a8db875201b7b1103cd2ab4a6d54918_765x501.png)
- 云原生应用
- 容器化微服务改造方案
- 应用容器化上线规范
- 服务网格和传统应用区别
- DevOps 管理规范
- 基础架构管理规范
- 域名管理规范
- 主机名称管理规范
- 应用域名管理规范
- 应用上线规范
- GIT分支及API JAR上传规范
- 基础架构设计
- 运维管理职责
- 基础服务
- DNS 内部架构
- centos 及 kernel 版本标准
- Linux服务器OS标准配置
- Docker版本初始化
- kuberneter 集群方案
- kubernetes 命名规范
- Jenkins CI/CD
- nginx 配置文件变更流程
- Prometheus 容器监控
- 项目资源需求
- 应用服务
- 编译和运行期标准
- 新核心系统基础服务架构
- 安全防御
- 互联网软件可靠性工程及可靠性度量