希望拓展您的DevOps实践?Mulesoft公司的成长经历也许能为大家带来一些启示。
在MuleSoft公司,我们致力于通过产品投入与工程技术的卓越运营帮助客户实现价值。新型功能的创新/发布速度越快,客户就能够更为主动地改进自身业务。而作为实现快速发展的途径之一,我们开始全面迁移至基础设施即代码(简称IaC)。
IaC是什么?
IaC是指通过多套模板利用代码对基础设施及其配置进行管理与配置的流程。这意味着大家只需要在配置文件中进行定义即可创建一套工作环境(包括虚拟机、子网、负载均衡器以及数据库等等)。大家可以将此作为一份蓝图,立足其上进行资源规划并设计其相互关联。这种方式能够创造更多透明度,同时帮助团队顺畅工作并快速完成变更。
IaC之前: 配置管理
这里我们姑且不提配置管理之前的痛苦回忆,直接切入DevOps团队在2012年开始着手进行的配置管理工作。目前可供选择的相关工具包括:
Puppet与Chef属于***人气的选项,但我们选择了SaltStack——这是因为其发展前景光明且以Python编写而成(我们需要使用多种自定义功能,因此其更具优势)。
虽然Salt的表现不错,但我们的基础设施在持续扩张之后仍需要其它方案加以配合。具体来讲,Salt能够对实例的方方面面进行细化管理,但虚拟机之外的任务仍需要手动处理。
同样的,如果大家希望复制环境(例如将某种负载由开发环境转移至质量保证环境),则需要手动执行各个步骤。如果需要进行修改,我们必须以手动方式调整。
步入基础设施即代码
手动创建基础设施与服务器配置往往极耗时间,且难以实现故障排查并可能带来潜在错误。IaC能够使整个过程透明化,帮助大家确切了解自己的基础设施并以一致化方式管理变更。
经过良好定义的IaC片段易于迭代、修改并随时克隆,且允许大家立足单一窗口对所有资源加以管理。在这种情况下,团队中的新人亦能够很快了解现有运营体系。
另外再提一句——说明文档非常重要!!
如何使用SaltStack与Terraform
SaltStack目前仍是我们在AWS EC2中最为重要的主机管理工具。如果我们需要一项新的应用服务,则可利用指向特定服务的元数据创建相关实例,并由SaltStack据此完成剩余配置工作。
但如果我们需要ELB,又该如何实现?我们又该如何选定其安全组?这类工作仍然需要以手动方式完成,这在面对数千台主机时又是一类令人头痛的挑战。
由HashiCorp开发的Terraform允许大家声明资源及其必要配置,而后将其应用于实时基础设施当中。其提供多种有趣的功能,包括多供应方支持以及依赖性管理等。
继续前进
利用IaC机制,我们得以节约大量时间与资源,并将此用于构建创造性新功能及产品迭代,从而更好地服务于客户。我们亦在不断研究新的方法,确保我们的基础设施速度更快、更简单且更为可靠,从而加快并改善生产环境下的代码运行效果。