快速了解云原生架构
# 一、简介
云原生是基于分布部署和统一运管的分布式云 ,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。
开发者无需考虑底层的技术实现,可以充分发挥云平台的弹性和分布式优势,实现快速部署、按需伸缩、不停机交付等
# 二、云原生的发展
云原生的概念随着新的技术发展而演化
- 第一阶段:微服务、容器化、自动化管理
- 第二阶段:微服务、容器化、CI/CD、DevOps
- 第三阶段:微服务、容器化、CI/CD、DevOps、服务网格、声明式API
# 2.1、CI/CD
持续集成
持续集成主要是强调开发人员提交了新代码之后,立刻进行构建、单元测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起
开发人员写好代码,然后将代码放入代码仓库里面,代码仓库可以是Git,Gitlab和svn,CI服务器就是我们的Jenkins,他可以从我们的代码仓库里面拉去代码,拉去代码之后对代码进行build,也就是进行构建,构建完之后就进行测试,测试代码的一个可用状态,CI就是他部署,测试,反馈串起来
持续交付
持续交付是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的【类生产环境】(production-like environments)中。
比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
持续部署
持续部署即在持续交付的基础上,把部署到产生环境的过程自动化。
# 2.2、DevOps
DevOps = 文化 + 工具 + 实践,为了更快更可靠的向用户持续交付价值,其中最重要的是文化,文化要求 Dev 和 Ops 团队责任共担,目标一致,也要求整个团队持续学习,抱着成长的心态,Continuously Everything。其次 DevOps 离不开高效的工具集,工具是自动化的基础。最后我们要在各个环节追求最佳实践,不管是工具的使用,还是团队的协作模式,沟通方法上面
整个 DevOps 生命周期可以分成6个阶段:
- 计划(Plan)
- 构建(Build)
- 持续集成和部署(或者交付)(Continuous Integration and Deployment or Delivery)
- 监控和告警(Monitor and Alert)
- 运维(Operate)
- 持续反馈(Continuous Feedback)
# 2.3、服务网格 Service Mesh
可以把 Service Mesh 看做是分布式的微服务代理。在传统模式下,代理一般是集中式的单独的服务器,所有的请求都要先通过代理,然后再流入转发到实际的后端。而在 Service Mesh 中,代理变成了分布式的,它常驻在了应用的身边(最常见的就是 kubernetes sidecar 模式,每一个应用的 pod 中都运行着一个代理,负责流量相关的事情)。它会知道整个集群的所有应用信息,并且额外添加了热更新、注入服务发现、降级熔断、认证授权、超时重试、日志监控等功能,让这些通用的功能不必每个应用都自己实现,放在代理中即可。
# 2.4、声明式API
参考:快速了解云原生架构 (opens new window)、云原生百度百科 (opens new window)、什么是 DevOps? (opens new window)、Istio 是啥? (opens new window)