今天,云计算已经无处不在,数字世界也成为了我们的“栖身”之所,而过去几年,一个名为“云原生”的概念更成为了云计算领域的热门词汇。
早在Gartner的2020年报告中就已显示,已有50%的传统老旧应用被以云原生化的方式改造;到2022年,将有75%的全球化企业将在生产中使用云原生的容器化应用。在企业上云的趋势下,我们正在看到越来越多的企业和开发者开始把业务与技术向云原生演进。
当然,尽管云原生技术受到了市场的“追捧”,但其复杂性却是一个突出的问题――它意味着企业与之相关的传统应用架构、应用开发方式、应用部署和维护方式都要做出全新改变,由此才能真正释放出云原生的价值,而这也延伸出了诸如微服务开发、容器自动编排、DevOps开发运维、CI/CD持续集成/交付等新的方式,因此如何更好地把握这些新技术和新理念,可以说也成为了当下企业数字化转型中又一大全新的挑战。
在此背景下,作为全球领先的科技企业,戴尔科技集团不仅率先使用了云原生技术构建DevOps平台,特别是其旗下的戴尔中国卓越研发集团更是在DevOps领域取得了一系列的最佳实践。在此基础上,戴尔科技集团还打造出了满足企业现代化混合云与容器云基础架构――戴尔科技DevOps就绪的超融合解决方案,更好地支持了企业CI/CD,降低了开发与交付的复杂性、极大的提升了效率,为企业应用现代化的转型和升级提供了有力的支撑。
从这个角度来说,戴尔科技在DevOps领域的最佳实践+就绪的超融合方案,为更多中国企业通过拥抱DevOps实践,让企业运营更快、更智能,并持续交付更高质量的应用,更快地迈入云原生时代筑牢了坚实的基础。
解读云原生时代应用研发新模式
业界公认的“云原生”概念是Pivotal公司的Matt Stine于2013年首次提出,然后被一直沿用至今并发扬光大。在Matt那里,他把云原生理解为一系列云计算技术和开发管理方法的合集,包括DevOps、持续交付、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)和12要素(The Twelve-Factor App)等等。
可以说,云原生从一开始就不是一项技术或一个产品,而是一种系统化的方法论和技术的集合。同样,只有满足“上云”特征,或者说专门面向“云”设计的应用,才可以称之为云原生应用。
与此同时,伴随着“云原生”概念落地的,则是一系列相关的容器技术。其中,在云原生概念提出的2013年,Docker也正式发布。对于开发者来说,Docker就如同用集装箱货轮来运输货物一样,效率又高、同时它的部署灵活性也比虚拟机更好,一经发布就成为极为流行的开源容器发布工具。
2014年,kubernetes(K8s)项目由google发布。在容器和Docker诞生之后,开发者自然而然需要工具来管理这些容器和容器化引擎,而K8s正是用来管理云平台中多个主机上的容器化的应用,让部署容器化的应用简单和高效。
2018年,CNCF云原生基金会正式对“云原生”给出了定义,其背后的代表性技术则包括容器、服务网格、微服务、不可变基础设施和声明式API等――可以这么简单理解,在云原生和容器技术的普及中,Docker实现了容器的可移植、轻量化、虚拟化,语言无关,大大降低了容器技术的使用门槛;而K8s则相当于安排容器发布的管家,解决了容器编排的全周期管理,就如同集装箱货轮上的船长一样。正是这一特性,也让K8s成为了应用上云的可移植性等问题,真正成为了云原生技术的基石。
那么,什么是微服务和服务网格呢?所谓“微服务”,与之对应的主要是以传统的以系统为单位进行部署的单体架构,与之相比,微服务架构就是以独立的组件为单位进行部署,是用户可以感知最小功能集。微服务具有小而专的特性,使得开发、测试、更新效率提高,进而实现敏捷的开发。同样,服务网格( Service Mesh )是指用以处理服务与服务之间通信的基础设施层,它解决了K8s在微服务的连接、管理和监控方面的短板,为K8s提供更好的应用和服务管理,成为微服务的辅助技术。
随着云原生,容器、微服务等技术的落地和普及,传统的应用开发模式同样也面临着重构,而这也催生出了DevOps开发模式。“DevOps”一词是“Development开发”和“Operations运维”两个词的组合,中文一般译为“开发运维一体化”。DevOps可以看作是开发、技术运营和质量保障三者的交集,促进之间的沟通、协作与整合,从而提高企业开发周期和效率。
特别是在云原生时代,DevOps的引入为企业的应用开发带来几个方面的全新价值,即动态的流水作业、迭代的开发进程、交互的协作模式。具体来说,从DevOps的流程实践上看,总体来说其流程可以分为需求对接和应用设计、敏捷开发和持续测试以及最终测试和上线运 维等三个阶段,其核心是由开发人员和测试人员主导的敏捷开发和持续测试阶段。
其中,借助Scrum或Kanban等工作流方法的指引和一系列持续构建、持续集成、持续测试以及持续发布工具,企业的IT团队能够高效率地开发通过微服务架构解耦的程序模块,并及时、持续地与用户方面进行对接,对各个模块的研发质量和成果进行实时把控。在通过最终的集成和测试之后软件得以部署上线,此后开发人员能够借助应用容器化封装带来的统一环境之便,与运维人员一起对软件的运行质量进行监控、为用户提供支持服务,并继续根据市场需求进行版本更迭的进一步开发工作。由此可见,DevOps的引入,真正能够让开发和运维部门的协作由此变得更加简单和高效。
可以看到,云原生的容器、微服务等技术的普及,为DevOps的落地提供了很好的前提条件,也成为了保证企业的软件开发实现DevOps开发和持续交付的关键应用。因此,能够实现DevOps和持续交付,已经成为云原生技术价值不可分割的内涵部分;而有效地利用云原生技术和引入DevOps开发流程,将为企业在全面云化时代保持竞争力打下坚实的基础。
戴尔科技集团DevOps最佳实践
早在几年前,戴尔数字部门(Dell Digital)在公司内部进行了一项调查发现,公司开发人员大约只有20%的工作时间用来编写代码。其余大部分时间,则是在处理管理任务,如配置基础设施、运行质量和安全扫描,以及将代码投入生产这些“低价值”工作上。于是在2016年,戴尔数字部门开始构建基础设施服务的自动化,并在次年推动整个组织正式采用DevOps开始真正的变革。
其中,戴尔中国卓越研发集团就是DevOps变革的“受益者”。据戴尔中国卓越研发集团高级主管软件工程师管俊介绍,他的团队主要负责戴尔超融合VxRail产品的研发,随着戴尔不断加大对VxRail的投入,在研发领域也遭遇了规模化后所带来的全新挑战。
“最初我们团队的产品研发主要还是基于单体程序的方式,大部分流程所需要的工具都是托管在其他地方,交付方面也非常简单,当时只需要一台虚拟机,就可以完成从代码仓库到交付的流程,但为了应对越来越激烈的市场竞争,我们希望能够以更快的速度实现更多的功能,能够把更新的补丁等及时交付给企业客户,因此我们在研发VxRail产品时,也开始以微服务架构和DevOps来重塑我们的工作。”管俊说。
微服务架构对软件工程效能的影响是“显而易见”,具体体现在研发中需要更多的代码仓库来托管代码,同时还要配置CI/CD的交付过程,这也会带来更复杂的集成流水线和交付流水线,而作为工程效能团队,就需要服务更多的项目,更快地响应更多项目在交付上的需求。另一方面,在DevOps的实践中,管俊也发现,一旦产品业务的复杂度提升10倍,那么DevOps的业务复杂度往往会提升20倍,因此唯有借助云原生技术去构建DevOps平台,才能打破这种“困局”。
管俊认为,云原生技术中有几大特性可以为DevOps平台的构建起到“打底”的作用:一是微服务,微服务最大的属性就是自治,这意味着企业在开发过程中可以独立快速的完成演进,同时每一次变动也不会造成非常大的波动范围,非常适合应用研发的“小步快跑”;二是容器,借助容器技术的好处是,能够提供一致性和移动性,能够显著降低研发和运维方面的成本负担;三是,自动化,能够实现基础设施即代码,非常方便应用开发的上线,扩展和迁移等场景;最后是容器编排,它在工作负载的调度、伸缩、网络连通性和升级支持方面都有极大的帮助。因此,借助云原生技术,企业的DevOps平台可以实现最大化的实现“灵活性、扩展性和维护性,非常适合戴尔中国卓越研发中心这种需要应对项目多,产品复杂,战线长等产品研发的团队。
当然,DevOps平台的构建并不是“一蹴而就”的,戴尔中国卓越研发中心在具体实践中也面临着三大挑战,而经过不断地探索与实践,管俊的团队也总结出三个方面的经验:
首先,是DevOps平台的技术选型方面,随着云原生技术的快速爆发,对研发团队而言,技术的丰富性也给DevOps平台的构建工作带来全新的挑战。为此,戴尔提炼出了两大原则,第一大原则就是要考虑成本,这其中既又学习成本,也有安装接入成本,但最重要的是维护成本;第二大原则是坚持代码主义,即“一切代为代码”是DevOps的工程实践核心。
其次,是DevOps平台的持续集成和发布方面,在这方面关键的要点则包括几个部分,其中“一键发布”和“频繁发布”是关键,这样才能更好、更快的上线新的需求和新的业务场景;同时要坚持“吃自己的狗粮”,这意味着团队要主动的、积极的体验自身产品;最后是平台要能够实现“快速回退”,这样即使出现一些小问题,也能够迅速回退到上一个版本,避免更多问题的产生。
最后,对DevOps平台的全方位观测方面,云原生非常重要的一个实践就是观测,传统运维非常关注底层,关注服务是否存活。但云原生时代,大家更关注服务如何存活如何被消费,这样企业才能从技术上和业务上,得到一个全面而真实的数据反馈,这些数据不只是运维数据,也包括运营数据,而基于数据不断地迭代和优化,对应用开发十分重要。
在具体的实践中,戴尔中国卓越研发中心采用了“Prometheus”的监控技术栈。作为CNCF云原生基金会“毕业”的项目,“Prometheus”具有非常全面、可扩展的监控能力,而且运维非常友好,通过简单的埋点与配置,就可以帮助研发团队实现对各个DevOps服务状态的“监控”;借助“Prometheus”,监控1000多个不同指标、保存超过365天的历史数据等等任务,变得轻而易举。
经过三年多的努力,目前戴尔中国卓越研发中心基于DevOps平台取得了不错的成绩,整个研发组织扩展到了2倍以上,团队人员实现了翻倍的增长,管理的代码仓库增加了60倍;交付流水规模增长了10倍;同时整个研发架构也从过去的一台虚拟机+工具/脚本的模式,转变为多数据中心+100多个微服务的全新服务模式,不仅显著提高了研发的效能、提高了软件产品的质量以及用户的满意度,更为戴尔中国卓越研发中心大规模的应用研发提供了充足的保障。
DevOps就绪的超融合解决方案
值得一提的,基于自身在DevOps的最佳实践,戴尔科技集团也打造出了DevOps就绪的超融合解决方案――该方案借助VMware Tanzu,它能够支持企业的DevOps团队轻松访问开源和API驱动的软件工具,为裸机、容器化和虚拟化环境中的现代应用程序提供无缝集成;本机启用的基础架构即代码(laC)支持GitOps实践,能够自动跟踪代码更改,推动DevOps通过IT自动化实现数据和资源的无缝调配,以及部门间的协作共赢,可以说方案的“灵活性”使DevOps团队能够在云原生环境中按需部署、测试、对资源进行扩缩容,从而简化整个应用生命周期管理。
戴尔科技集团企业级云计算及超融合架构师刘磊表示,戴尔科技DevOps就绪的超融合解决方案具有非常鲜明的特色,它的整个底层硬件体系架构是构建在戴尔科技VxRail超融合平台之上;同时整个软件栈又构建在VMware生态之上,因此它可以帮助企业打造基于Kubernetes容器和容器云的基础架构,能够让企业可以更加快速的、方便的、灵活的管理和调度Kubernetes的集群环境。
“今天,VxRail不仅仅是一款超融合的产品,更是完美耦合戴尔和VMware生态的数据中心架构。”刘磊说,它的优势和价值主要体现在以下几个维度:
第一,是完整的戴尔科技和VMware的生态,以及紧偶尔的超融合数据中心解决方案,具备完整的数据中心功能;第二,能够实现硬件平台、超融合平台和虚拟化平台的单一界面的统一管理;第三,能够实现自动化、安全和方便的软件更新,帮助企业实现全生命周期的管理;第四,具备多元化的数据保护解决方案;第五,“灵身定制”的VCF on VxRail,能够帮助企业建立安全稳定的私有云和混合云架构,数据也显示VxRail具备6个9的高可靠性,在极端测试环境中曾连续4个季度“无停机”,此外IDC的数据还证明其较传统的超融合能够降低92%的宕机时间等;最后,它还是与VMware唯一共同开发的超融合架构,是运行VMware生态的最佳基础平台,最大化实现虚拟机粒度的数据保护与数据安全策略。
而所谓的“VMware生态”,则体现在企业可以通过VMware Tanzu、VMware Cloud Foundation(VCF)、以及VMware最新推出的多云管理产品组合VMware Aria,彻底打通不同公有云、私有云、边缘云和企业本地数据中心的环境,为用户提供真正具有一致性的企业级技术架构,真正帮助企业在整个Kubernetes旅程中进一步提高开发者的生产力,实现从构建到生产的端到端安全,以及大规模的安全多云运营。
也正因此,戴尔科技DevOps就绪的超融合解决方案,真正能够保证企业在完整的VMware生态之下去构建一个管理更加方便,更具有弹性的,性能更好的,运行更为稳定安全的一个Kubernetes商业运行环境,帮助企业快速地实现DevOps的变革。
全文总结,随着云原生时代的到来,DevOps这种全新的软件开发模式不仅提高了软件开发的效率和最终产品的表现,更是数字化企业协作及共享文化的体现和应用。而在此过程中,戴尔科技集团不仅“躬身践行”DevOps变革,并基于此打造出了DevOps就绪的超融合解决方案,无疑能够更好地支持混合云、自动化、边缘、DevOps及更多细分应用场景,全面满足企业构建DevOps一体化云平台的需求,并为千行百业的数字化转型提供更为健壮的基础架构支撑,其价值可谓“不止于眼下,更关乎未来”。