简介

云原生首次由 Netflix 在 2013 AWS re:Invent 上的 “Web-scale application” 上提出。

云原生是在云上构建高可用、可扩展的 Web 级应用的蓝图。

云原生确保在快速交付新功能时,不会影响服务的可用性,从而能够快速响应客户不断变化的需求。

云计算

云计算是在由云服务商管理的计算资源上运行应用程序,从而不用我们自己购买和管理计算机硬件。

第一步往往是将单体式应用迁移到云上,这样团队就不需要管理硬件资源了。

云计算可以快速配置新的计算资源,并且轻松实现扩容。

如果仅仅将应用在云上运行并没有让它云原生。

云原生必备条件

  1. 对于应用架构,云原生应用被划分成若干小的、独立的服务,被称为微服务。

    传统的服务是在一个程序中部署所有的应用功能,当规模变大时,变得很难开发、测试和部署。

    通过使用云原生方法,开发者将功能拆解为若干个微服务,这些服务松耦合,通过标准 api 进行交互。

  2. 云原生服务被打包成容器

    对于大型的云原生应用,需要进行容器编排。

    常用的容器编排工具是 Kubernetes:

  3. 开发流程使用 DevOps

    云原生由于采用了微服务架构,因此需要开发和运维团队高度的合作,同时需要对自动化开发和部署流程进行深度投入

    DevOps(开发运维一体化)是一种开发实践,它强调开发团队与运维团队之间的协作、沟通与自动化,以实现云原生应用的快速且可靠交付。

    Devops 的关键组成部分是 CI/CD,它能够让团队自动化软件开发和部署流程。

    CI (Continuous Integration 持续集成) 指的是定期合并代码到共享仓库,同时运行自动化测试来确保代码按照预期执行。

    CD (Continuous Delivery 持续交付) 指的是自动将软件部署到生产环境,通常使用自动化部署流水线来实现。

  4. 采用云原生开放标准

    随着云原生的不断成熟,逐步产生了一些标准和最佳实践。

    最佳实践1:采用 Kubernates

    最佳实践2:采用分布式 trace 系统,它能够在请求传递的多个链路中追踪请求。

    最佳实践3:采用 Service Mesh,它通常用来管理微服务中服务和服务之间的通信