考研软件工程,考研软件工程专业考哪些科目
DevOps
现在的软件和软件工程领域,早已远离了“刀耕火种”的年代。摆在我们面前的是模块化的高级编程语言、高度集成的环境,各种库、各种框架,弹性计算带来的流水线和自动化工具,我们正处在一个“敏捷”的时代。
软件开发一直以来都是一项复杂的工作,自从有人将其与项目管理相结合,软件工程便应运而生。上世纪七八十年代的软件危机让人们意识到软件工程领域的风险与挑战,《人月神话》一书更是以“没有银弹”的论断直言没有任何一项技术或方法可使软件工程的生产力在十年内提高10倍。
如今时过境迁,软件工程领域的新方法、新工具层出不穷,最初的“银弹”一说早已不再适用,而打破这一瓶颈的当下最为业界关注的方法论,莫过于DevOps。
什么是DevOps
DevOps是一种重视“软件开发人员(Dev)”和“运维技术人员(Ops)”之间沟通合作的文化、运动或惯例,是软件开发领域最近十年来兴起且当下普遍成熟运用的方法论。它和传统的瀑布模型、螺旋模型等理念不同,其核心是“敏捷”,结果是自动化。DevOps是敏捷开发的延伸,通过“软件交付”和“架构变更”的流程自动化,使构建、测试、发布软件能够更快捷、频繁并且可靠。
传统的软件开发组织结构中开发、运维和质量保障部门之间相互独立、各司其职。随着需求膨胀和响应迭代频率的加剧,行业对敏捷开发的要求更高,不仅交付快捷频繁,而且质量可靠,这对传统的组织结构变革提出了要求。DevOps在流程重塑上为部门间沟通与协作架起了桥梁,围绕敏捷开发应对现实需求实现软件成品的持续集成、持续交付和持续部署,这也就是CI/CD管道,构成了DevOps的主干。
业界一般认为“DevOps之父”是来自比利时的帕特里克·德布瓦(Patrick Debois)。2007年,对IT组织结构颇有兴趣的帕特里克在从事大型数据中心迁移工作中意识到,开发团队和运维团队之间的信息鸿沟和组织冲突往往造成 IT项目的结果令人沮丧,作为一名敏捷开发的拥护者,他此后为改变这种状况而努力。
帕特里克·德布瓦(Patrick Debois)被认为是“DevOps之父”。
2008年6月,旧金山首届Velocity大会的交流中诞生了一个名为The Agile Admin的博客。同年8月,多伦多敏捷大会上帕特里克与另一名敏捷开发者安德鲁·谢弗进行了漫长的讨论,DevOps萌芽开始生发。
2009年6月举办的圣荷西第二届Velocity大会是一个重要转折点,会上的一个名为《10+Deploys Per Day: Dev and Ops Cooperation at Flickr》的演讲引起了帕特里克的共鸣,使之下定决心在自己老家比利时举办一个类似Velocity的大会。同年10月,帕特里克在比利时根特举办“社区版Velocity大会”DevOpsDays,来自世界各地的敏捷开发者、运维工程师、IT爱好者蜂拥而至,大会出乎意料地成功,DevOps这个名词也正式诞生。
2010年,The Agile Admin博客发表“What is DevOps”一文详细定义了DevOps的概念与体系,越来越多的IT从业者认识到DevOps的理念和意义。同年在德国汉堡第二届DevOpsDays大会上,《持续交付》一书的作者杰兹·汉布尔发表了关于“持续交付”的重要演讲。由于持续交付(CD)是持续集成(CI)的延伸,这与2008年敏捷大会的观点一致,因而CI/CD成为了DevOps的核心理念之一,而非另成一系。
此后,发展成型的DevOps作为一个软件工程领域新的方法论逐渐被行业所运用,软件开发敏捷与质量齐头并进的时代加速到来了。
DevOps给开发者世界带来了什么
现在的软件和软件工程领域,早已远离了刀耕火种的年代。摆在我们面前的是模块化的高级编程语言、高度集成的环境,各种库、各种框架,弹性计算带来的流水线和自动化工具,我们正处在一个“敏捷”的时代。
DevOps是这个时代的方法论产物,有了这个理念,开发者世界在之后的十年里诞生了一批质量优秀且普遍适用的生产力工具和成熟的解决方案,Docker、Kubernetes就是其中的典型案例。
Docker是虚拟化技术发展到一定阶段衍伸出的容器技术。作为一款开源的应用容器引擎,Docker在操作系统层实现虚拟化,比虚拟机(硬件虚拟化)更具便捷性和高效性。加之容器多用于软件应用部署的标准化单元,可以不受硬件基础设施和操作系统的局限,方便地部署到不同空间,因此它是DevOps自动化部署绝佳的实现工具。
Kubernetes简称k8s,提供了一个综合的基于容器构建分布式系统的基础架构环境。简单说,它是一个开源的容器编排引擎。当Docker还在茁壮成长的时候,k8s迅速出世,为生产级大规模容器化支起了标准。如果说Docker是集装箱的话,k8s则是自动化的码头。在k8s中可以创建多个容器,每个容器里运行一个应用实例,通过内置负载均衡对规模化实例访问、管理,实现了从容器到容器云的飞跃。
DevOps所孕育的产物远不止此,除了容器化技术之外,还有测试、包管理、评估与分析工具等,全链整合开发与运维全职能,贯穿了CI/CD全过程,持续拉升着软件工程行业的敏捷与自动化能力水平。DevOps的时代同时也是云的时代,是分布式算力的时代。DevOps和云是相辅相成的,没有云的弹性和按需分配,DevOps的理念就很难落地;DevOps的发展则加速了云技术的演化和丰富。
需求仍然在持续膨胀的今天,DevOps以及与之伴生的生产力工具,无疑在软件工程领域开辟了高度自动化的先河,这是好的一面;流水线的环境带来了效率,但也让许多开发者变成了大机器的零部件,疲于满足需求而减少顾及创新,这种趋向值得业界警觉。毕竟,高度文明变成空中楼阁,是技术进程所不愿经过之地。(本文作者系高级工程师,科技专栏作者,中国计算机学会会员)
编校:苑宝平, 审读:郭丽
点击下方
即可网购。
考研软件工程(考研软件工程专业考哪些科目)