云原生应用:架构、开发与实践
云原生应用概述
近年来,“云”这个词频繁出现,但很多时候只是一个时髦的术语。大家匆忙获取亚马逊 EC2 实例并部署服务,仅仅是为了宣称“我们上云了”。然而,真正拥抱云远不止在云端部署应用这么简单,它是一场涉及基础设施、开发、部署以及团队协作的革命。
从基础设施角度看,自动化是关键。服务器配置、磁盘空间、内存、网络和资源等一切都需要自动化。在开发方面,要保持软件的小型化,即各个软件模块相互独立,开发团队专注于少数任务,并通过自动化(如构建自动化、测试自动化和部署自动化)快速获取软件故障反馈。若不实现自动化,应用就难以具备弹性、灵活性、恢复能力和容错性。
进入云原生领域意味着改变工作习惯,重新组织和构建公司的 IT 部门。开始云原生应用开发,首先要对现有基础设施进行深入评估,包括集成边界、安全性、遗留系统、设备组件、流程以及业务和运营需求等方面,以找出优缺点。评估结果可能会促使人员培训和组建新团队。
云原生应用需考虑云架构的所有特性。构建云原生应用常用的方法是微服务。微服务和云原生应用的区别在于,微服务可由任何基础设施提供,而云原生应用需考虑云的所有特性以及分布式环境。在云架构中,结合自动化使用微服务具有诸多优势:
- 自动配置 :将基础设施视为代码。
- 自动冗余 :云原生应用天生具备故障恢复能力。
- 自动扩展 :通过持续监控微服务,可适时添加更多节点。
常见的微服务交付方式是使用 Linux 容器。微服务架构和 Linux 容器相互促进。每个微服务都是一个独立单元,拥