初心企服行研07:认识「基础设施即代码」(Infrastructure as Code)|初心内参
1.基础设施即代码带来了什么?
1.1 什么是基础设施即代码
基础设施即代码本质是一种基于软件开发实践的基础设施自动化方法。它强调系统及其配置的日常置备和变更具有一致性和可重复性。简言之,基础设施即代码就是用代码来管理和维护公司的云端基础设施,取代传统基于控制台或GUI的手动配置方式。
1.2 基础设施即代码诞生的背景
云计算自诞生以来,凭借其低成本和按需配置的高效资源利用率,迅速发展壮大,成为了如今整个商业世界重要的基础设施。云和自动化工具降低了基础设施变更的门槛,但即便有虚拟化、容器、SDN等工具的存在,服务器的配置、更新与维护工作依然不是一件容易的事情。因为这些工具并没有可以提高一致性与可靠性的现成方案来管理基础设施的配置变更,过去应用于传统IT设施的方案,虽然在需要花费几天甚至数周来配置服务器的年代有效,但在云时代这个存在大量、动态云服务器时代,即便是动态调整服务器以应对弹性需求,对于团队来说都是不小的挑战。
具体来看,云和虚拟化技术的存在,让团队可以轻而易举地创建一台服务器,而这最终导致的是服务器数量的飞速增长,超过了团队预期的管理规模。而一旦服务器数量增加,就会经常出现某个更新补丁没有及时应用到所有受影响的系统上,这种服务器之间版本和配置的差异——也就是所谓的「配置漂移」,将会导致在一些服务器上可以正常运行的软件与脚本无法在其他服务器上运行。此外,雪花服务器,服务器侵蚀等问题,也都是一直以来困扰团队的实际难题。
1.3 基础设施即代码想要实现什么
(1)将云服务器等基础设施作为项目开发的支持,而非障碍或约束;
(2)能让开发人员方便地对基础设施做经常性的变更,减少其对日常事务的重复;
(3)团队能够快速地从故障中恢复,对服务器等基础设施有较好地掌控;
(4)让开发团队能够持续改进,而不会冒影响项目进程的风险。
1.4 基础设施即代码的实践原则
(1)一致性。基础设施即代码要求在开发过程中,如果两个基础设施提供的是相似的服务,那么这些服务器应当从系统软件到配置都完全相同。有时即便是硬盘的分区问题,都可能导致自动化问题出现差错。能够构建和重新构建一致的基础设施,有助于解决配置漂移的问题。
(2)重复性。基础设施即代码要求在构建新服务器时,操作人员应当能够在毫不费力的情况下,可重复地配置基础设施中的任何元素,包括在服务器上安装什么软件、安装软件的什么版本以及选择什么主机名等决策都应该包括在置备基础设施元素的脚本和工具中。
(3)灵活性。在云时代以前,变更已有系统成本非常高,操作起来也很困难,因此团队通常需要预先全面设计好架构,考虑各种需求和情况,在服务器完成构建后尽量避免再作后续的调整。而云时代的动态基础设施让变更与调整变得更加简单,但这一切的前提都需要建立在软件和基础设施的合理设计上,即在满足需求时保证结构的尽可能简单,从而确保开发过程中的高效简洁。
1.5 基础设施即代码与DevOps
(1)基础设施即代码。这是后续持续集成与持续交付的基础,因为所有的配置过程与设置都是由自动化操作实现,并且能通过版本控制系统(VCS)追踪,确保不会出现所谓「明明在我的电脑上能运行」的情况出现,极大程度地加快并简化了开发过程中对基础架构的操作。
(2)持续集成。即开发人员是在项目主干上协作,并在代码通过测试后立即将其集成到项目当中,而不是像传统开发那样,在单独的Git分支中开发新功能,然后在发布时再将这部分代码合并。在持续集成原则下,每个测试成功并提交的代码实质上就变成了一个可以直接发布的新版本。
与一般的瀑布式开发相比,持续集成的方式大大缩短了项目上线的时间,而这同样是基于基础设施即代码,因为只有在后者的基础上,开发人员才能够快速设置与配置所需的开发环境,并以更快的速度生成和测试代码,并最终将其集成到项目主干中。
而这种持续交付能力同样建立在基础设施即代码和持续集成之上,因为这些工具与方法能让开发者配置所谓的CI/CD管道,即快速部署和配置代码从提交到发布所需的所有环境的自动化过程。
2.市场玩家
基础设施即代码的市场玩家可以分为三类,除了云厂商自身的产品和早在2015年被Red Hat收购的Ansible以外,包括进入时间较早,目前产品成熟,收入也较为稳定的「传统天王」,目前增长势头迅猛的「当红巨星」,以及近两年起步的「后起之秀」。
2.1 传统天王
Puppet:
得益于其先发优势,Puppet有着相当广大的用户群体,目前全球有超过40000家公司和机构在使用Puppet,其中包括Google,RedHat,Twitter,Salesforce等公司。根据官方资料,使用Puppet开源和商业产品的公司目前占到了财富100强中的75%以上。
2020年7月,Puppet获得了黑石4000万美元的债务融资,而在2018年6月,Puppet获得了思科领投的F轮4200万美元融资。Puppet当前的估值超过7亿美元,并且根据其CEO的采访,Puppet目前已经在做IPO的准备。
Chef:
Progress的客户包括Facebook,IBM,SAP等高科技大客户,也包括阿拉斯加航空,Capital One等非科技公司,2019年营收约为7000万美元。
Chef于2015年获得了4000万美元E轮融资。2019年4月,Chef宣布将其所有核心产品开源。而在今年9月,Progress公司宣布以2.2亿美元收购Chef,称其看重Chef强大的经常性收入模型,互补的技术实例以及忠实的客户群体。
2.2 当红巨星
Terraform:
Terraform虽然还是一款诞生于2014年的年轻的产品——至今版本号也还没更新至1.0,但其增长势头非常迅速。从其开发公司HashiCorp的融资与估值变化中来看,HashiCorp于2018年11月获得了包括Slack,GGV资本,红点创投在内的1亿美元D融资,估值高达19亿美元。仅在一年多之后,今年3月,HashiCorp就宣布完成1.75亿美元E轮融资,估值已经达到了50亿美元。
2.3 后起之秀
Pulumi:
商业模式上,Pulumi同样采用的是社区版+商业版的模式,社区版开源、免费;在商业版的定价上,Pulumi即提供了适用于小型团队的按人数收费的模式,也支持大型企业的定制化部署。
Pulumi让用户能够以各种自己熟悉的语言来配置其基础设施,这些语言包括Python,Javascript,TypeScript,Go以及.NET。只要用户掌握对应的工具链和一组框架,就可以轻松地管理多个云平台的基础设施,目前Pulumi已经支持包括亚马逊AWS,微软Azure,谷歌云,Kubernetes,阿里云在内的50多个基础设施提供商。
目前Pulumi已经拥有10000多名用户及100多个付费用户,其中包括梅赛德斯·奔驰,Snowflake,Tableau等,官方在今年年初时公布其年增长率达到了10倍。
env0:
相较于其他产品,env0更强调以基础设施即代码为核心,给用户提供一套完整的治理与成本控制解决方案。例如,env0提供自动关闭与服务器存在时间的选项,确保系统不会保持空闲,并精简预算;而且用户不需要靠估算或者手动标记,而是利用env0提供的自动化标记将云设施支出与项目联系起来。
值得一提的是,Env0非常注重产品的前端界面。很多基础设施即代码的公司产品通常还是面向技术人员为主,但Env0优先考虑了产品的UI/UX界面,让非技术用户,包括销售,客服等,也可以很好地使用自己的产品。
3.挑战与未来
3.1 存在的挑战
尽管基础设施即代码发展势头迅猛,但当中存在的一些挑战仍然在一定程度上阻碍了该技术的广泛采用:
(1)配置漂移风险。无论团队配置服务器的频率如何,长远来看服务器的配置都会发生变化,而每次需要修改基础架构时,如何确保配置过程与预先设立的工作流程相符则是团队需要解决的问题,如果有成员对相似的基础设施做出了不统一的修改,那么这就可能带来后续的潜在隐患。
(2)专业性要求。因为基础设施即代码和DevOps开发过程需要较高水平的技术与专业技术,因此一些团队在采用过程中往往会遇到技术性门槛,而对于一些小团队来说,找相关专业人士的成本往往过高,因此他们在这种情况下往往选择基础设施即代码的外包服务,而在这种情况下,团队又需要面对包括管理,整合性,数据安全在内的诸多问题。
不过正因为基础设施即代码存在的潜在安全性问题,一些初创公司也从中发现了机会。比如初创公司Accurics就在今年10月完成了2000万美元的融资,其核心业务就是「代码修复」,即检测团队在配置中存在的风险点,然后自动生成代码,让团队成员可以自动将这些生成的代码部署到生产环境中。
3.2 未来:治理即代码
Terraform,Chef等基础设施即代码工具的存在让团队能够快速配置,部署云上的资源和系统,加速了公司整体基础设施向云上迁移的速度。但一旦将这些应用程序,基础设施和资源以自动化方式部署完毕之后,我们仍然需要靠人来维护后续业务的正常运转。在这种情况下,团队所考虑的问题,就是怎样让所有人都能保持业务的安全性并遵守内部政策标准,确保业务不要承担额外的风险。
如果基础设施即代码是将基础设施本身视作代码,那么「治理即代码 (Governance as code)」则是将应用与基础设施运行的方式视作代码。治理即代码想要实现的,是在真正理解团队所提供的服务以及交付此服务时所需要的应用和资源的情况下,权衡可靠性和预算等条件,优化团队的开发路径以实现最佳实践。
事实上,在我们上面介绍的市场玩家中,不管是后起之秀的Pulumi和env0,还是Terraform,Chef等公司,都已经在通过提供治理即代码功能来开展新一轮的竞争。例如,env0整合了成本管理与策略执行等功能,Pulumi允许开发人员通过自己习惯的代码编写一系列的合规性规则,Chef通过自身的Chef Compliance平台协助IT部门实现自动审核和补救,Terraform则结合自家的产品Sentinel实现更细颗粒度的策略控制与多层执行。
尽管Terraform,Puppet,Chef等产品目前在基础设施即代码方面处于领先地位,但Pulumi和env0这样的公司也在通过差异化方式抢占市场地位。基础设施即代码领域的竞争,还远未结束。
------------
本文来自初心企服行研小组,初心资本长期关注企业服务领域,定期产出企业服务系列行研,欢迎在留言区评论与我们取得联系,更多合作或相关领域的创业者可投递BP至 bp@chuxincapital.com。
关于初心