您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 云计算 > 正文

基础架构即代码的8大优势,以及如何选择工具?

发表于:2020-06-18 作者:云智时代 来源:今日头条/IaC/云平台

越来越多的企业将主要应用或服务托管在云平台上,也使得基础架构即代码(IaC)变得越来越流行。

为什么需要基础架构作为代码?

在传统基础设施上,当你需要一台服务器资源,则需要运维团队去创建一个虚拟机实例或为应用准备物理服务器,配置中需要使用到脚本或手动安装的方式。

当有了更多应用需求,则需要更多的虚拟机,用于DNS,邮件服务器,数据库等等。还有要对操作系统,Web服务器,JVM和其他所有相关架构进行持续的更新。而且随着时间的发展,它们彼此之间的配置会发生变化,带来配置的漂移,从而产生了雪花服务器(snowflake servers)。跟踪配置更改是很大的挑战。

如果服务器很少且使用周期较长,那么还可以接受。

随着AWS等公有云服务的广泛使用,企业对计算资源的选择发生了很大变化。许多企业没有了在硬件和数据中心上的投资,而是开始将其应用程序迁移到云中。在云端,可以在数分钟内部署服务器。

为了保持最佳性能和可用性,可能必须部署更多实例来满足需求。然后,不需要时对资源弹性释放来节省成本。当按小时付费时,可能需要每天按比例弹性的缩放,所以如果每天多次手动进行操作,显然具有挑战性。

通过自动化的方式,获取代码中部署或终止实例,以及其他基础结构组件所需的配置步骤,云可以帮助更快,更可靠地交付价值。

什么是基础架构即代码?

所以,基础设施即代码是使用软件开发原则和实践的基础设施自动化。

简单理解,就是基础架构像软件一样来对待,然后编写,测试和执行代码以定义,部署,更新和释放基础架构。通过编写代码来管理服务器,数据库,网络,日志,应用程序的部署和配置。当要更改基础结构时,可以更改代码,对其进行测试,然后将其应用于系统中。

基础架构即代码的8大优势,以及如何选择工具?

基础架构即代码与手动配置相比,优势显而易见:

1. 自助服务

由于将基础架构定义为代码,因此整个过程和部署可以自动化,并且可以由DevOps团队中的任何人启动,有基础架构需求的用户可以在需要时获得所需的资源。

2. 幂等性

幂等性意味着你定义了所需的状态,并且无论运行脚本多少次,结果都是相同的。它检查当前状态和所需状态,并仅应用所需的更改。而使用bash脚本很难做到这一点。

Ansible和Terraform之类的工具具有内置功能,可以使代码具有幂等性。

3. 降低成本

与手动配置相比,降低了配置所需的时间和精力。

4. 更快的软件交付

快速为开发,测试和生产配置基础架构,使企业能够更快地交付软件。由于部署过程是自动化的,因此它也是一致且可重复的。

5. 自我记录

基础结构的状态由任何人都易于阅读的代码来定义。

6. 版本控制

传统上,更改生产系统被认为是有风险的,但往往改变不可避免。但添加新功能时,可能需要添加新数据库,可能需要向集群添加新服务器或存储。基础架构即代码减少了对基础架构进行更改的工作量和风险。

可以在版本控制中载入源文件,这意味着你可以跟踪对基础结构所做的所有更改,并在出现问题时快速恢复到以前的版本。

7. 验证与测试

基础架构即代码可以连续测试和应用小的更改。一切都是代码,因此可以使用静态分析和自动化测试来检查错误。

8. 提升安全性

向基础架构即代码的转变能够从一开始就嵌入安全性,然后就可以可靠,安全地应用更改。

基础架构即代码的工具

尽管有许多工具可用,但选择一种工具可能并不容易。以下是一些注意事项,可能对大家帮助。基础架构即代码的工具大致上可分为两类:配置管理工具和配置工具。

配置管理工具是用户管理在现有服务器上安装和管理的工具。比如,Chef,Puppet,Ansible和SaltStack都是主要的配置管理工具。可以使用配置管理工具在服务器上安装和更新软件。

基础架构即代码的8大优势,以及如何选择工具?

Terraform,CloudFormation,OpenStack Heat是配置工具,即用于创建服务器,数据库服务器,负载均衡,队列,子网,防火墙以及基础架构的所有其他组件。这些工具对提供程序进行API调用以创建所需的基础结构。

基础架构即代码的8大优势,以及如何选择工具?

1. 可变与不可变基础架构

可变基础架构是一种在配置后即可修改的基础架构。Chef,Ansible,Puppet和SaltStack能够在现有服务器上安装或更新软件。在服务器的生命周期中,这可能会发生很多次。经过多次更新后,每台服务器可能与其他服务器略有不同,从而导致配置漂移。例如,某些在测试服务器上正常运行的更改,可能无法在生产服务器上运行。

Terraform和CloudFormation之类的工具能够每次通过计算机镜像或容器镜像创建新服务器。如果需要更新服务器,就用用新服务器替换它们。新服务器启动后,可以终止旧服务器。每个部署都使用不可变的镜像来创建服务器,因此避免了配置漂移。不过,效率可能有点慢。

2. 命令式与声明式工具

命令式工具类似于脚本,列出了达到所需状态所要采取的步骤。声明性工具可以指定结束状态,并且工具将制定实现该状态的步骤。

Chef是主要的命令式工具,而Ansible使用混合方法并支持命令式和声明式技术。

Terraform,CloudFormation,Puppet,OpenStack Heat和SaltStack都属于声明性工具类别,可以在其中声明所需的最终状态。

3. 使用多种工具

尽管这些工具中的每一个都可以单独使用,但是一种通用的方法是将它们一起使用。例如,可以使用Terraform来构建VPC,子网,网关,负载均衡和虚拟机,然后使用Ansible在这些实例上配置和部署服务。