据 Stastista 统计,2021 年有74 ZB的数据可用。随着 5G 网络和 AI 等新技术的发展,预计随着时间的推移,数据产量将越来越多。问题是如何使这些数据更易于访问?
DevOps 代表开发和运营。它是一组旨在将开发、质量保证和运营(部署和集成)合并为一个单一且连续的过程 [1]。DevOps 的主要目标是缩短系统开发生命周期并提供高质量的软件持续交付。DevOps 不仅仅是一系列的行动,它同时也在改善跨职能团队沟通的文化以及赋能创新。换句话说,DevOps 更多的是关于团队合作,它的成功取决于 DevOps 团队使用的原则和实践。
在一方面,DevOps被采用去解决开发团队面临的许多问题,诸如按时交付和长发布周期。在另一方面,运营团队必须随着需求的增加来管理资源,处理在生产环境中执行的应用程序需求,并诊断和解决与生产相关的问题。为了解决上述问题,DevOps 应运而生、通过实施 DevOps,开发和运营团队不再孤立地工作,测试和部署变成了包含在开发阶段的阶段,团队成员能够专注于业务服务,而不是花时间在测试、部署和设计。因此团队能够通过自动化流程避免生产中的错误以及延迟,因为部署和运营现在能够协同工作和执行类似的时间表。
如果要将 DevOps纳入企业团队运作当中,了解 DevOps 原则和实践是首要。
1. 增量发布:当开发人员不得不等待很长时间来提交代码和测试时,可能会出现错误和不兼容问题。在 DevOps 中,团队以增量方式(有时一天多次)提交他们的代码。这样的话,团队将能够更快地响应可能出现的问题。
2. 自动化:这可能是进行 DevOps 最关键的部分!在 DevOps 中,有必要使尽可能多的软件开发自动化。这将允许团队只专注于编写代码,而自动化完成构建、测试和提醒开发人员以防出现问题的工作。
3. Pipeline:这是代码需要通过才能部署到生产环境中的一组任务。也就是说,首先代码需要由团队开发,然后需要通过编译代码来创建构建。构建后,可以执行测试以保证源代码的行为符合预期。最后,代码可以部署到最终用户。
1. 续集成和交付 (CI/CD):该原则鼓励开发人员每天多次将代码提交到中央存储库 (CI),然后快速持续地发布代码更新 (CD)。
2. 微服务:微服务是一组相互通信但独立开发、部署和维护的独立服务。随着 DevOps 的高部署率,微服务有助于保持系统稳定,同时能够分离并快速解决问题。
3. 沟通与协作:通过聊天、问题跟踪系统或 wiki 进行信息共享和便携沟通是运用 DevOps方法论的成功关键。这有助于在不同团队之间进行有效的沟通和制定一致目标。
此时的主要目标是形成自动化交付管道和集成过程。为此,可以使用许多工具,如下图所示。
持续交付管道和工具(图片摘自 [6])
交付管道(Delivery Pipeline)的每个步骤都应根据具体需求来选择特定工具。为了帮助选择适合的工具,以下为 DevOps 中最常用的 10 种工具:
- Git用于编码和构建
- Slack作为沟通平台
- Jenkins 用于构建、测试和部署
- Puppet用于部署和操作
- Docker用于构建、部署和操作
- Selenium用于测试
- Kubernetes用于构建、部署和操作
- Elasticsearch用于监控
- 腾讯云、AWS 或 Azure用于云计算存储
- Prometheus 用于存储数据和监控。
TLDR-总结:DevOps 是一种生命周期投资,是一份团队承担,它能够实现更好的软件开发和交付实践,并加速持续交付。
参考文献:
[1] https://www.altexsoft.com/blog/engineering/devops-principles-practices-and-devops-engineer-role/
[2] https://phoenixnap.com/blog/devops-principles
[3] https://www.altexsoft.com/blog/engineering/devops-principles-practices-and-devops-engineer-role/
[4] https://puppet.com/resources/report/2015-state-devops-report/
[5] https://puppet.com/blog/2017-state-devops-report-here/
[6] https://www.bogotobogo.com/DevOps/DevOps_CI_CD_Pipeline_Sample.php
TARS基金会是Linux基金会下的非营利性、微服务基金会,致力于建设一个强大而灵活的微服务生态系统。