近年来,我们听到了很多关于云的消息,但没有真正的意义。这只是一个流行词,每个人都争先恐后地获取一些 Amazon EC2 实例并在上面放置一些服务,只是为了传播这个词——它在云端; 我把它放在云端; 我们在云端。
拥抱云不仅仅是在上面部署一些东西。在云这个词的背后,有一个与新技术、创新或迁移(更糟糕的是,转型)无关的整个世界;这是关于一场革命。
这是基础设施、开发和部署方面的一场革命。团队方面的革命。
基础设施的关键点是自动化。一切都需要自动化——配置服务器、磁盘空间、内存、网络和资源——一切。
开发的关键是保持小——小块相互独立的软件;小型开发团队专注于一些需要过度沟通并尽快从失败的软件中接收反馈的任务。后者只有通过自动化才能实现——构建自动化、测试自动化和部署自动化。新的基础设施建立在自动化的概念之上。如果你不自动化,你就不可能有弹性、灵活、有弹性和容错。
进入云意味着改变你的工作习惯,改变公司来组织和构建它的 IT 部门。
您如何开始使用云原生应用程序?首先,必须对实际基础设施进行深入评估。集成边界、安全性、遗留系统、设备组件、流程以及业务和运营需求——所有这些方面都需要检查以发现弱点和优势。评估可以导致培训人员和创建新团队。
云原生应用程序是考虑到云架构的所有特征的应用程序。只有这样才能您开始最精彩的游戏——构建您的云原生应用程序。
构建云原生应用程序最常用的方法之一是微服务。微服务和云原生应用程序之间的区别在于,前者可以由任何基础设施提供,后者是相同的,但它考虑了云和分布式环境的所有方面,其中单个地方不能考虑。
回到云架构,除了自动化之外,拥有微服务的优势在于效率:
- Auto-provisioning: Infrastructure as code
- Auto-redundancy: Cloud-native applications are inherently resilient to failure
- Auto-scaling: By constantly measuring your microservices, you can decide when it's appropriate to add more nodes (scale out)
交付微服务的一种常见方式是通过 Linux 容器。微服务架构和 Linux 容器相得益彰。每个微服务都必须是一个独立的单元——专用资源、CPU、内存和磁盘空间。想象一下在单个虚拟机 (VM) 或数十或数百个VM 上提供此类服务。这个过程需要相当长的时间,基础设施很快就会开始缺乏资源,短期内你的基础设施就不够用了——这将是浪费金钱、浪费时间、浪费资源.
从基础架构的角度来看,容器非常适合微服务的自包含单元方法非常好。容器是轻量级的、隔离的,并且可以在几秒内完成配置——实际上是几毫秒。
在本章中,我们将介绍以下主题:
- Twelve-factor applications
- Microservices
- Runtime environments