云原生指南之什么是云原生基础架构
什么是基础架构?
基础架构是支持应用程序的所有软件和硬件。主要包括:
数据中心
操作系统
部署流水线
配置管理
支持应用程序生命周期所需的任何系统或软件
什么是云原生架构?
云原生的演进
物理服务器
在互联网初期, Web 基础架构从物理服务器开始,早期服务器体型大、噪音大而且价格昂贵,并且需要大量的电力和人力才能维持运行。
再者,物理服务器会导致浪费,当同一台服务器最大限度地使用多个应用程序时,软件冲突、网络路由和用户访问都变得更加复杂。
然后就有了硬件虚拟化。
虚拟化
虚拟化是软件中模拟物理服务器硬件吗,虚拟服务器可以根据需要创建,完全可以在软件中进行编程,只要能够模拟硬件,就永远不会过时。使用虚拟化能够增加程序的可移植性。
虚拟化的问题就是虚拟机(VM)需要硬件才能运行,公司仍然需要运行物理服务器所需的人员和流程,但是现在容量计划变得更加困难,而且 VM 也必须考虑考虑开销。
IaaS
基础架构即服务(IaaS)提供了原始的网络、存储和计算,客户可以根据需要消费。它还包括支持服务,如身份和访问管理(IAM),供应和库存系统。
这种方式允许公司摆脱所有硬件,从云供应商那里租用 VM 或物理服务器,节省人力和维护的成本。这种托管的基础架构还为客户提供了可使用的 HTTP 应用程序编程接口(API),用于根据需求创建和管理基础架构。
值得注意的是,在云中运行你的基础架构并不能使你的基础架构成为原生云。IaaS 仍然需要基础架构管理。
PaaS
平台即服务(PaaS)将操作系统对应用程序隐藏了起来,PaaS 基础架构由平台提供者管理。这种方式使得应用开发周期减少了,并且可以在平台上得到有效的管理。
然而,PaaS 平台并不足以满足所有业务需求,有时需要限制语言运行环境、库和特性。
云原生基础架构
如上所述,在传统的设计环境中,您将数据库连接到模块,这些模块将与 API 或 Web 应用程序连接,然后才能与消费者联系。
但随着公司的变化,应用也因此改变。对模块的每一个微小的改变都会对其他一切产生连锁反应。随着时间的推移,整个项目是如此复杂,以至于没有人(包括你)真正理解它。
“云原生”是一个被滥用的词语,云原生基础架构是隐藏在有用的抽象背后的基础架构,又 API 控制,由软件管理,目标是运行应用程序。利用这些特性运行基础实施,是使用可扩展、高效的方式管理基础架构的新模式。
云原生的基础架构需要抽象底层 IaaS 产品形成一层抽象层,新的层负责控制它下面的 IaaS,以及显示自己的 API 让使用者控制。
云原生的组件
使用云原生架构,您的设计将由许多协同工作的小部分组成。您可以更改、添加或替换一个,而不会破坏整个系统。云原生架构组件包括:
容器
不可变的基础架构
微服务
服务网格
声明式 API
容器是一个标准的软件单元,它打包代码及其所有依赖项,以便应用程序从一个计算环境快速可靠地运行到另一个计算环境。 Docker 容器镜像是一个轻量级的、独立的、可执行的软件包,包括运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。
微服务将明确的功能分成较小的服务,并让每个服务独立迭代。使用微服务可以根据需要更轻松地更改应用程序的敏捷性。每个微服务可以由不同的团队管理,用适当的语言编写,根据需求独立调整。
服务网格(Service Mesh)是用于处理服务间通信的专用基础设施层。 它负责通过包含现代云原生应用程序的复杂服务拓扑来可靠地传递请求。 实际上,服务网格通常通过一组轻量级网络代理来实现,这些代理与应用程序代码一起部署,而不需要感知应用程序本身。 —— Willian Morgan Buoyant CEO
服务网格这个术语通常用于描述构成这些应用程序的微服务网络以及应用之间的交互。 随着规模和复杂性的增长,服务网格越来越难以理解和管理。
不可变的基础架构里的“不可变”非常类似于程序设计中的“不可变”概念。程序设计中,不可变变量(Immutable Variable)就是在完成赋值后就不能发生更改,只能创建新的来整体替换旧的。由于具有这样的特性这种变量可以在并发环境下安全的使用。对于基础设施的不可变性,最基本的就是指运行服务的服务器在完成部署后,就不再进行更改。
声明式 API 只需要提交一个定义好的 API 对象来“声明”(这个 YAML 文件其实就是一种“声明”),表示所期望的最终状态。
云原生架构的优缺点
云原生架构的优点包括:
成本低。 在标准环境中构建,您的系统必须始终处于打开状态才能为客户提供服务。选择云,您可以将注意力转向新功能和产品。
正如分析师所解释的那样,如果传统系统出现故障,您将与客户挂钩。选择云,您可以通过提高弹性和防止中断来节省资金和声誉。
速度。 在敏捷的工作场所中,您必须始终进行测试、移动和改进。如果您所做的每一个更改都可能破坏您的系统,那么这很难做到。
针对云进行构建,您将创建一个专为持续变化而构建的系统。在云中增强应用程序和启动应用程序变得更加容易。
可选。 云原生设计与平台无关。如果您对现在使用的环境不满意,请快速更改内容,而无需从头到尾重新编程。
云原生架构的缺点包括:
调试难。 在传统系统架构中发现问题意味着遵循线性计划。在云原生设计中,容器可以进行交互和连接。但道路可能并不总是很清楚。有些问题的根源在于一个或多个容器,找到问题并不总是那么容易。
安全。 依赖第三方云运营商意味着放弃对数据和访问的控制。有时,这些公司对数据并不像你那样小心。
知识壁垒。 以云原生方式写作有点像学习一门新语言。你必须掌握概念并完善你的方法,一个小小的错误可能会导致灾难性的问题。
参考链接:
Cloud-Native Architecture: A Guide, Definitions, Types & More
云原生基础架构,Justin Garrison Kris Nova 著. 孙杰 肖力译
版权声明: 本文为 InfoQ 作者【宇宙之一粟】的原创文章。
原文链接:【http://xie.infoq.cn/article/9d5c6367b4648507dbe44397b】。文章转载请联系作者。
评论