Netscape公司创始人Marc Andreessen很早之前就做出了软件如何吞噬整个世界的断言。他还提到,如今每家公司在本质上都属于软件公司,整个经济体系也将由软件公司全面接管。新的一年已经到来,我们也将亲眼见证DevOps所提出的持续更新理念,如何突破软件的交付能力上限。事实上,DevOps已经成为每一家企业在这个竞争激烈的技术世界中求生存、某发展的基本前提。
关于DevOps
尽管每家公司对DevOps的定义有所不同,但我们基本可以将DevOps定义为团队采用的一种思维方式,其目标是将工程能力提升到新的高度。DevOps的主要诉求在于消除工程层面的障碍,包括消除横亘在思维与执行之间的文化障碍,令软件的发布流程更好、更快、更便宜也更安全。??
我们当然可以给这样的转型冠以多种名称,但其实质只有一条——自动化。自动化水平的提升,将帮助企业快速开发、快速上线、快速试错、快速恢复以及快速学习。??
从过往的SDLC模式到如今的DevOps,情况发生了巨大变化。2009年才刚刚诞生的DevOps提出两点基本宗旨——文化转型与一切即代码的技术原则。在此之后,又出现了CI/CD等多种衍生性原理。但这还不够,因为在传统上软件一直以整体形式编写,诸多挑战也由此出现。??
为了寻求破解之道,微服务体系结构在2011年正式出现,着重强调组件的细粒度划分以及围绕特定任务进行松散耦合。??
以这种松散耦合思路为前提,基于微服务架构编写的应用程序被称为云原生应用。以此为基础,企业开始根据自身业务需求与目标,一步步从虚拟机过渡至Kubernetes、最终转向无服务器计算。??
根据Kelly Shortridge与Nicole Forsgren博士在2019年美国黑帽大会上公布的演示文稿,目前DevOps领域的佼佼者普遍关注以下四大要素:?
迪亚曼蒂对500多名IT领导者进行调查,结果表明无论以何种标准来衡量,容器技术的发展都已远远超越最初计划,在一年之内快速发展成熟,并由开发试验阶段全面过渡至生产环境。未来,随着Kubernetes的广泛普及,云原生技术也将提升至新的高度。云原生趋势帮助企业更快将产品及服务推向市场,并以此为基础建立起竞争优势。??
为什么选择云原生?
采用云原生实践,意味着带来更佳创新成果、更高层级转换以及更丰富的客户体验。如我在另一篇文章“云原生DevOps[1]”中所述,云原生从根本上促进了云的自动化,包括云计算服务在安装,配置和管理方面的自动化。现在,我们终于能够在正确的时间节点上,为云计算资源制定出更为可靠的业务决策。
?根据甲骨文对云原生未来趋势的预测,到2025年,预计将有80%的企业IT部门迁移至云端。CNCF调查结果也显示,目前云原生技术企在业生产环境中中的增幅高达200%。????
去年,云服务提供商Cloud Foundry Foundation开源平台执行董事Abby Kearns在2018年LinuxCon+ContainerCon+CloudOpen China(称为LC3)大会上发表主题演讲,就云原生及其未来发展提出了更深入的观点。
??“云原生技术与云原生应用正在增长,在接下来的18个月中,众多组织将继续编写并使用各类云原生应用程序,推动其在数量上实现倍增。”她补充说:“这意味着大家不能只投资IT,而应投资云计算与云技术(摘自Abby Kearns的主题演讲“塑造云原生未来[2]”)??。
她在演讲中,还通过美国空军作为例子探讨如何实现敏捷开发,以及如何运用各类前沿技术及云原生理念。美国空军目前正在实施敏捷实践,并着手用云计算优势开发可跨多种云环境运行的应用程序。
虽然这一点与云原生部分存在交集,但我还是决定单独列出,毕竟目前大多数软件企业都在使用容器注册表系统。容器注册表能够帮助开发人员妥善存储并管理工件以及全部依赖项,进而实现软件开发生命周期的平稳推进。??
正如应用程序源代码需要通过Git等版本控制方案进行管理,Docker镜像同样需要类似的管理机制。Docker目前提供类似的Docker镜像管理功能,可立足自有开发设备以及远程容器注册表(Docker hub)灵活管理各类镜像。??
但是,有时这些镜像容易出现许多与安全性相关的问题,而黑客也一直在觊觎这些重要的基础性资产。因此,现代企业需要一种更加安全可靠的方式,确保通过容器注册表对容器镜像进行妥善管理与维护。??
对于使用容器化应用程序以及微服务架构的DevOps团队而言,容器注册表已经成为日常工作中必不可少的组成部分。随着Docker和云原生应用程序的日益普及,容器镜像管理也在现代软件开发流程中牢牢占据一环。从本质上讲,容器注册表是一种存储库集合,专门用于存储容器镜像。??
在刚刚于圣迭戈举行的KubeCon会议上,JFrog宣布了自己的容器注册中心。基于Artifactory的强大功能,JFrog Container Registry成为目前市面上最强大也最可靠的免费容器注册表方案。它具有良好的可扩展性、混合兼容能力、提供精心设计的Artifactory UI,并由Artifactory提供支持。
??目前市面上其他知名容器注册表方案还包括:?
私有容器注册表允许企业全面掌控管理策略、安全性、访问控制等与容器紧密相关的要素。完善的容器注册表应具有以下功能:混合环境兼容,Docker注册表,Helm注册表,通用存储库,远程存储库,虚拟存储库以及丰富的元数据等。
为什么需要使用容器注册表?
下面来看使用容器注册表的几个基本理由:
随着云原生的发展,越来越多的企业开始利用Kubernetes,Docker,Artifactory,Helm和Istio等工具加快内部数字化转型工作。全世界都在迅速向容器注册表技术过渡,未来的应用程序将全面通过容器化技术实现快速安全交付。
混合云竞争日趋激烈。大多数云提供商都为自己的服务提供免费的注册表服务,这也从一个侧面体现出这类功能的重要价值。
Docker容器往往会占用大量存储空间,并且经常需要往来移动。这会带来高昂的存储成本,有时甚至引发严重的安全风险。我们看到部分企业已经在利用Artifactory等多种免费工具管理除Docker之外的所有容器。很高兴看到JFrog现在也拥有了自己的容器注册表:)
注册表可以充当远程和虚拟容器存储库,其中包含丰富的元数据,这正是DevOps中的一大重要因素。
快速获取与开发工件相关的有价值见解。
作为一种编程语言,Golang将在目前的基础上,对DevOps社区产生更大的影响。大多数DevOps工具(例如Kubernetes,Helm,Docker,etcd,Istio等)都是用Go编写的。Kubernetes的缔造者Joe Beda撰写了有关为何使用Go编写Kubernetes[3]的文章。
??由于能够将代码编译为独立的二进制文件,因此Golang非常适合那些无法安装或不想安装依赖项的运行环境。无需设置整体环境,我们可以轻松获得远超其他编程语言的开发速度。
JFrog在最近于伦敦和圣迭戈举行的GopherCon会议上调查 1000多名开发人员,希望更好地了解Go社区发展情况及其对Go模块(即Go modules)的总体看法。??调查结论:
?这里推荐大家阅读我的另一篇文章,旨在探讨Go与DevOps为什么堪称“天作之合”[4]。
如今,开发生命周期中的安全保障比以往任何时候都更为重要。安全是每个人的责任,而不再仅仅是安全专家的责任。????
虽然“DevSecOps”听起来只是另一个炒作出来的字眼,但重视安全性本身绝对不是忽悠。DevSecOps要求在组织内建立起安全意识与共享知识库,借以加强软件开发过程中的安全性。今年早些时候,第一资本曝出的漏洞使云安全再次成为令人关注的热门话题,而公有云中的数据保护需求也让从业者们陷入焦虑。??
三星Note 7灾难也以反面典型的方式,解释了为什么应当从流程开端到开发生命周期中的每个阶段,始终关注安全问题。专家推测,Note 7手机的问题之一涉及其电池管理系统。该系统负责监视电流并在电池充满时停止充电过程。但由于系统中存在故障,导致电池单元过度充电、变得不稳定并最终爆炸。
这个低级错误使三星损失了将近170亿美元。如果能够早点发现问题,三星完全可以省下一笔巨款,更不用说由此带来的声誉损害。?
要在组织之内建立起战略层面的安全保障机制,请务必关注以下几点:?
从小处着手,立足开发生命周期的各个阶段设置安全检查点。
对于开发人员,将安全性作为他们工作的一部分,并作为其绩效评估的重要指标。
开发和运营团队需要将安全与质量联系起来。
不要将DevOps和安全性分开;将二者紧密结合起来,并作为工程团队的座右铭。
许多公司已经在采用混沌工程以查验系统的稳定性和可靠性,同时评估安全问题的严重程度。故意破坏系统有助于暴露更大的错误,并保证黑客无法在系统中发现任何漏洞。如此一来,组织就能先于客户发现错误。目标只有一个——让你的系统比以往更强大。
开源给开发人员带来的优势和灵活性已引起越来越多的关注。Synopsys最近进行的一项调查发现,开源社区仍在快速发展,几乎70%的公司组织正在为开源项目提交贡献或是拥有自己的开源项目。??
为何要拥抱开源?
开源项目是提升开发者个人业务水平的理想平台,具体途径包括:?
?在最近的印度开源2019大会上,我们对近300名开源专业人士进行了调查,下面来看他们喜爱开源项目的具体理由。可以看到,灵活的定制空间成为吸引人们投身于开源项目的首要因素。
?CB Insights的最新研究指出,开源服务行业2019年总值将超过170亿美元,并有望在2022年达到近330亿美元。??
微软、谷歌、英特尔以及Facebook等行业巨头(都不属于开源企业)正在积极为GitHub上的各类项目提交贡献。谷歌员工2018年共完成5500项提交,而且涵盖众多体量较小的独立项目。??
另外,谷歌自己的开源软件项目(如Kubernetes,Istio和Knative)也获得了社区的热烈支持,市场反响同样良好。随着项目本身的呼声越来越高,独立开发人员也参与进来贡献力量。从这个角度来看,由行业巨头牵头、推动开源社区发展的思路应该大有可为。??
例如,Microsoft的Visual Studio Code项目拥有超过19000名贡献者。在成千上万开发人员的参与下,志愿贡献与更为直接的用户反馈也令知名大厂们受益匪浅。以此为基础,他们能够快速构建起质量更为上乘的软件。开源技术已经步入主流,而且拥有着光明的发展前景。??
云原生计算基金会生态系统负责人Cheryl Hung在最近的Linux基金会欧洲开源峰会上发表演讲,明确指出大型企业正在致力于推动开源项目发展。特别是Kubernetes,已经建立起属于自己的庞大社区。
毫秒级部署是未来的趋势,许多公司已经在最大程度上运用无服务器架构。无服务器市场预计到2021年将达到77亿美元。根据RightScale的2018年云状态报告,无服务器是当今增长速度最快的云服务模型,年增长率为75%,并有望在2020年进一步超越这一增速。??目前市面上的无服务器计算方案包括:?
AWS Lambda
微软Azure
Google Cloud Platform
IBM Bluemix / OpenWhisk
?为什么开发人员更喜欢无服务器:?
提高开发人员生产力
更快的部署
更强的可扩展性
出色的用户体验
降低成本,无需为基础设施相关事务分心
2017年5月,微软首席执行Satya Nadella公开强调了无服务器的潜力及其改变云计算机制的能力。??
他说:“我认为「无服务器」将彻底改变我们对于业务逻辑的理解方式……换言之,无服务器计算将从根本上改变后端计算的经济价值,同时逐步成为未来分布式计算的核心。”??
乐高公司的无服务器之旅
乐高公司的无服务器试水案例,将帮助大家了解如何从小处入手并逐步取得巨大成功。黑色星期五/网络星期一购物季带来的巨大负载压力迫使他们转向无服务器。乐高原本拥有一套包含Oracle ATG的陈旧系统,其中八台服务器与同一个数据库进行通信,而SAP则在后端负责支撑计税系统。??
在使用这套陈旧系统应对一年一度的黑色星期五/网络星期一购物季时,乐高发现业务体系无法负担夜间突然出现的负载高峰,并最终引发服务崩溃。计税系统首先宕机,SAP随后瘫痪,最终导致乐高电子商务平台整体离线达2个小时。可以想见,此次事件带来巨大的经济损失。????
面对实际问题,乐高开始考虑无服务器方案。??灾难发生后,乐高团队决定迁移至云端,建立一个简单的API,并由Lambda充当后端。乐高由此迈出无服务器转型的第一步,并随后陆续引入了微服务架构、DevOps乃至全面自动化。?最初,乐高团队仅利用Lambda计算销售税,但现在乐高的整体电商平台已经完全由Lambda提供支持。??相关话题点击这里[5]。
时至今日,众多组织开始摆脱原本的舒适区,甚至是医疗、金融机构、政府部门等在技术普及方面向来表现迟缓的群体,也开始尝试利用云原生及DevOps等新的技术与实践推进数字化转型。下面来看几项有趣的近期案例研究。??
先来看快递服务企业联邦快递(FedEx)的数字化转型之路。联邦快递面临的最大难题,是内部缺少有能力建立现代云原生与DevOps流程的IT专业人员。但他们没有止步于此,而是由公司CIO Rob Carte提出解决方案——建立内部大学,帮助工程师们掌握最先进的计算技能与现代软件开发技巧。
??该公司还为此创建了专项团队,命名为“The Cloud Dojo”。Dojo团队由众多来自不同职能部门的成员组成,具体包括云开发人员、安全专家以及运营专家等等。他们齐聚一堂,希望通过团队培训探索如何将传统工程与现代云实践(DevOps、云原生以及面向云端的遗留应用程序重写)以及自动化结合起来。截至目前,该团队已经帮助公司重新培训了2500多名程序员。
??联邦快递先后面向云端对200多个生产级应用程序进行重写,目前可用应用数量已经超过300个。凭借这一卓越成果,联邦快递的Cloud Dojo团队顺利拿下2019年CIO 100 IT卓越大奖。点击阅读完整故事以及联邦快递CIO Carter的心得体会[6]。??
Box的数字化转型之旅
就在几年之前,Box公司还需要六个月时间才能构建起一项新的微服务。但如今,这项任务只需数天就能完成。如此夸张的提速是如何实现的?答案就是以下两项关键因素:?
Box诞生于2005年,这是一款整体式PHP应用程序,且随着时间推移发展出数百万行代码。由于最初的整体式开发思路,这款应用本身可采用紧密耦合的设计方法,最终导致各个部门无法按照适合自己的速度推进功能创新。另外,任何一部分出了错误,应用程序都需要整体回滚才能恢复正常。?
无数工程师对同一个代码库中的数百万行代码进行操作,bug自然不会是新鲜事。更可怕的是,随着体量的不断增长,开发者们越来越难以发布新功能,甚至无法修复已知bug。为了寻求解决之道,他们决定采用微服务架构。而在实际面对架构转换过程中的种种难题时,Kubernetes横空出世。??有条件的同学可以观看Box公司高级工程经理Kunal Parmar的完整演讲视频[7]。
多云技术将继续蓬勃发展。目前,大多数企业都拥有自己的混合云策略,众多应用程序在编写之初就考虑到本地与非本地运行方式,甚至是跨云运行需求。在这方面,谷歌打造的Anthos云服务平台就证明了多云架构能够给软件企业带来的灵活性与经济性收益。
??作为该领域的领导者,Azure与AWS的态度将决定多云战略的命运。??
根据最近的RightScale 2019云状态报告,可以看到84%的受访企业拥有自己的多云战略。?
总体来讲,多云战略帮助企业解决了一系列最为重大的难题,包括供应商锁定、成本优化、安全性保障、数据归属权以及减少停机时间等。??
当然,接纳DevOps还只是万里长征的第一步,后面还有很长的路要走。随着企业数量的提升,对云资源的依赖也让DevOps的市场规模持续增长。根据Allied Market Research的估算,到2023年,全球DevOps市场总值将达到94亿美元,年均复合增长率为18.7%。通过将开发与运营加以结合,DevOps为各团队带来更强的信心与更灵活的发挥空间,使得软件交付流程在速度与质量方面更上一层楼。?
DevOps的成长仍在继续,它日新月异且发展前景广阔。正如Forrester公司所言,2018年是企业DevOps的元年。实施DevOps理念的企业将故障恢复速度提升了24倍,将安全补救周期缩短了50%。事实证明,DevOps不仅能够提高团队的参与度,同时也能改善员工的工作体验。?
CIO之家 www.ciozj.com 公众号:imciow