在云计算时代,组织面临着比以往更快交付业务和客户价值的压力。为了做到这一点,企业和独立软件供应商便将他们的敏捷软件开发实践与DevOps以及最近的微服务一起提升到了一个新的层次。
将这两种技术结合起来可以极大地提高效率。其实,某种程度上,正是这种快速的发展推动了今天的新兴技术,如大数据、机器学习和其他下一代IT概念。
如何理解DevOps和微服务?
DevOps是一种方法,它使开发人员和IT运营人员能够更紧密地协作,从而更快地交付高质量的软件。DevOps通过让开发人员了解他们的软件将在其中运行的生产环境来帮助他们提高软件质量,从而使他们受益。
虽然DevOps可以模拟生产环境(这是DevOps早期的标准),但是模拟的环境从未完全匹配生产环境。最近,组织已经将DevOps实践转移到云中,在云中可以更准确地复制生产环境。DevOps使开发人员可以看到IT运营,反之亦然,这减少了两个角色之间的传统摩擦,增加了协作。
与敏捷一样,DevOps将软件程序分解成更小的部分,以提高软件交付速度和质量。DevOps的一个标志是“持续”实践,包括持续集成、持续测试、持续交付和持续部署,所有这些都有助于软件产品和软件相关实践的持续改进。
而微服务体系结构是一种软件开发技术,是面向服务体系结构(SOA)的一种类型。与不使用微服务的敏捷或DevOps相比,它产生的功能更小(因此模块化程度更高)。
顾名思义,微服务是服务自身的一小部分功能。由于它们是独立的构建块,因此使应用程序更易于创建、测试和理解。模块化的一个好处是多个DevOps团队可以并行构建和部署微服务。微服务和容器通常在任意数量的公有云或私有云环境中组合使用。
此外,微服务可以部署在任何云中,例如,这可以使开发人员不必为微软Azure和亚马逊Web服务编写特定于平台的代码。简而言之,微服务节省了时间和金钱,并提供了新的开发和部署级别的灵活性。
结合DevOps和微服务的好处
微服务支持持续的交付和部署,这两者都加速了软件的交付。大多数组织都在朝着或实现持续交付的方向前进,这意味着在月与年、周与月、天与周、小时与天之间不断发布软件。
持续的部署每天可以产生成百上千个版本。它通常由亚马逊、Facebook和谷歌等云原生厂商实践。
事实上,微服务源自云本地公司的DevOps实践,这些公司希望更快地交付软件并提高产品质量。微服务和DevOps的一些好处是:
- 更频繁的软件发布
- 更好质量的代码
- 软件的可重用性
- 可扩展性
- 弹性
- 更高水平的自动化
- 灵活性(使用新数据源、框架、库和其他资源的能力)
- 自由(不同的团队可以使用他们喜欢的工具和语言)
- 基于云计算架构
- DevOps更高的生产力水平
DevOps如何与微服务协同工作
微服务使DevOps团队能够并行开发独立的功能片段。而不是将代码从一种类型的专家转移到另一种类型的专家(例如,开发、测试、生产),跨功能团队协作地构建、测试、发布、监控和维护应用程序。
为了加快流程并减少手工错误,构建微服务的DevOps团队利用自动化的连续交付管道,使他们能够以安全可靠的方式试验新特性,并从失败中快速恢复。
为了确保产品质量,持续测试被添加到持续集成和持续交付(或部署)中。实现持续的质量不仅仅包括测试。具体来说,它包括其他质量元素,如安全性、与用户需求的一致性、业务风险缓解和度量价值。
微服务的独立性帮助DevOps团队在更短的时间内完成更多的工作。与导致整个应用程序崩溃的单片软件不同,微服务缺陷往往仅限于该微服务。然而,微服务失败会使其他微服务“承受压力”,这可能意味着其他微服务无法与失败的微服务通信。
微服务的模块化支持增量发布,这是DevOps的目标之一。总之,微服务和DevOps:
- 加速创新
- 让DevOps团队更加高效
- 减少错误
- 降低软件开发成本
- 提高产品质量
- 推动更高层次的业务价值
在未来几年,微服务和devops的结合将会发生怎样的变化?
如前所述,微服务已经使DevOps团队的工作效率更高了。展望未来,这两者的结合将带来更高的效率。此外,终端用户体验到的与应用程序相关的摩擦也会减少:
云本地开发将补充云本地部署。虽然能够在任何云中运行微服务是非常有效的,但软件通常都在向云转移。在哪里开发云应用程序比在云本身中更好?首先,在发布之前更容易捕获应用程序错误。
机器学习和人工智能正在进入DevOps和微服务工具。智能工具的好处之一是更深入地了解DevOps管道、代码、配置更改、性能等。
更多的DevOps团队将采用微服务,使企业应用程序更具价值、可伸缩性、弹性和适应性。
微服务帮助开启了“后应用”时代,在这个时代,用户打开单个应用的时间减少,而花在应用之外的时间增多。例如,你可以问Alexa这样的虚拟助手,“今天的天气预报是什么?”在电话里,天气预报可以作为通知推送。可能性实际上是无穷无尽的。