傻瓜指南:使用开源工具构建 DevOps 链

傻瓜指南:使用开源工具构建 DevOps 链
适合初学者,只需五个步骤即可创建您的第一个 DevOps 链。

DevOps 已成为解决开发流程过慢、脱节和其他问题的灵丹妙药。 但您需要具备最少的 DevOps 知识。 它将涵盖 DevOps 链以及如何用五步创建一个等概念。 这不是一个完整的指南,而只是一条可以扩展的“鱼”。 让我们从历史开始吧。

我对 DevOps 的介绍

我曾经在花旗集团的云部门工作,开发了一个 IaaS Web 应用程序来管理花旗的云基础设施,但我一直对如何简化开发链并改善开发人员文化感兴趣。 我们的云架构和基础设施首席技术官 Greg Lavender 向我推荐了这本书 凤凰计划。 它完美地解释了 DevOps 原则,读起来就像一本小说。

背面的表格显示了公司推出新版本的频率:

傻瓜指南:使用开源工具构建 DevOps 链

亚马逊、谷歌和 Netflix 是如何推出如此多的产品的? 很简单:他们想出了如何创建近乎完美的 DevOps 链。

在我们转向 DevOps 之前,花旗的情况并非如此。 当时,我的团队有不同的环境,但我们手动交付到开发服务器。 所有开发人员只能访问一台基于 IBM WebSphere Application Server Community Edition 的开发服务器。 当我们试图同时交付时,服务器崩溃了,我们每次都必须“痛苦地”相互协商。 我们的代码测试覆盖率也不足,手动交付过程需要大量人力,并且无法在某些任务或客户需求的帮助下跟踪代码交付。

很明显,我迫切需要做一些事情,而且我找到了一位志同道合的同事。 我们决定一起创建第一个 DevOps 链 - 他设置了虚拟机和 Tomcat 应用程序服务器,我负责 Jenkins、与 Atlassian Jira 和 BitBucket 的集成以及测试的代码覆盖率。 该项目取得了成功:我们完全自动化了开发链,在开发服务器上实现了几乎 100% 的正常运行时间,可以跟踪和提高测试代码覆盖率,并且 Git 分支可以链接到 Jira 交付和问题。 我们用来构建 DevOps 链的几乎所有工具都是开源的。

事实上,这条链被简化了,因为我们甚至没有使用 Jenkins 或 Ansible 应用高级配置。 但我们成功了。 也许这是原则的结果 帕累托 (又名 80/20 规则)。

DevOps 和 CI/CD 链的简要描述

DevOps 有不同的定义。 DevOps 与敏捷一样,包含不同的学科。 但大多数人都会同意以下定义:DevOps 是软件开发的一种方法或生命周期,其主要原则是创造一种开发人员和其他员工“处于同一波长”的文化,体力劳动被自动化,每个人都做自己最擅长的事情,交货频率增加,生产力提高,灵活性提高。

虽然工具本身不足以创建 DevOps 环境,但您离不开它们。 其中最重要的是持续集成和持续交付(CI/CD)。 每个环境的链条中有不同的阶段(例如,DEV(开发)、INT(集成)、TST(测试)、QA(质量控制)、UAT(用户验收测试)、STG(准备)、PROD(使用)),手动任务被自动化,开发人员可以生成高质量的代码,交付它,并且可以轻松地重建。

本说明描述了如何使用开源工具分五个步骤创建 DevOps 链,如下图所示。

傻瓜指南:使用开源工具构建 DevOps 链

我们开始谈正事吧。

第1步:CI/CD平台

首先,你需要一个 CI/CD 工具。 Jenkins 是一个用 Java 编写的开放式 CI/CD 工具,具有 MIT 许可证,它开始了 DevOps 运动的普及,并已成为 CICD 的事实上的标准。

什么是詹金斯? 想象一下,您有一个用于各种服务和工具的神奇控制面板。 像 Jenkins 这样的 CI/CD 工具本身是无用的,但通过不同的工具和服务,它就变得万能了。

除了Jenkins之外还有很多其他开源工具,选择任意一种即可。

傻瓜指南:使用开源工具构建 DevOps 链

这就是使用 CI/CD 工具的 DevOps 流程

傻瓜指南:使用开源工具构建 DevOps 链

您在本地主机中有一个 CI/CD 工具,但还没有什么可做的。 让我们继续下一步。

第 2 步:版本控制

测试 CI/CD 工具魔力的最佳(也许也是最简单)方法是将其与源代码控制管理 (SCM) 工具集成。 为什么需要版本控制? 假设您正在申请。 你用Java、Python、C++、Go、Ruby、JavaScript或任何其他语言编写它,其中有一辆马车和一辆小车。 您编写的内容称为源代码。 首先,特别是如果您独自工作,您可能希望将所有内容保存到本地目录。 但随着项目的发展和更多人的加入,您需要一种共享代码更改但避免合并冲突的方法。 您还需要以某种方式恢复以前的版本,而不使用备份和使用代码文件的复制粘贴方法。

在这里,您离不开 SCM。 SCM 将代码存储在存储库中、管理其版本并在开发人员之间进行协调。

SCM 工具有很多,但 Git 当之无愧地成为事实上的标准。 我建议使用这个,但还有其他选择。

傻瓜指南:使用开源工具构建 DevOps 链

这就是添加 SCM 后 DevOps 管道的样子。

傻瓜指南:使用开源工具构建 DevOps 链

CI/CD工具可以自动化源代码上传下载和团队协作。 不错? 但我们现在如何才能将其变成一个受数十亿用户喜爱的可用应用程序呢?

第 3 步:构建自动化工具

一切都在按其应有的方式进行。 您可以上传代码并向版本控制提交更改,并邀请朋友与您一起工作。 但您还没有该应用程序。 要使其成为 Web 应用程序,必须对其进行编译和打包以供交付或作为可执行文件运行。 (解释型编程语言,例如 JavaScript 或 PHP,不需要编译。)

使用构建自动化工具。 无论您选择哪种工具,它都会以所需的格式收集代码并自动进行清理、编译、测试和交付。 构建工具因语言而异,但通常使用以下开源选项。

傻瓜指南:使用开源工具构建 DevOps 链

完美的! 现在让我们将构建自动化工具配置文件插入到版本控制系统中,以便 CI/CD 工具构建它们。

傻瓜指南:使用开源工具构建 DevOps 链

感觉很好。 但我们现在应该把这一切推广到哪里呢?

第 4 步:Web 应用程序服务器

因此,您有一个可以执行或推出的打包文件。 要使应用程序真正有用,它必须具有某种服务或接口,但您需要将它们全部放在某个地方。

Web 应用程序可以托管在 Web 应用程序服务器上。 应用程序服务器提供了一个环境,您可以在其中执行包中的程序逻辑、呈现界面并通过套接字公开 Web 服务。 您需要一个 HTTP 服务器和几个其他环境(例如虚拟机)来安装应用程序服务器。 现在,让我们假设您在进行过程中已经弄清楚了这一点(尽管我将在下面讨论容器)。

有几个开放的 Web 应用程序服务器。

傻瓜指南:使用开源工具构建 DevOps 链

我们已经几乎拥有了一条正在运行的 DevOps 链。 做得好!

傻瓜指南:使用开源工具构建 DevOps 链

原则上,你可以到此为止,剩下的你可以自己处理,但也值得谈谈代码的质量。

第 5 步:测试覆盖率

测试需要花费大量的时间和精力,但最好立即发现错误并改进代码以取悦最终用户。 为此,有许多开放工具不仅可以测试代码,还可以提供如何改进代码的建议。 大多数 CI/CD 工具可以连接到这些工具并自动化该过程。

测试分为两部分:用于编写和运行测试的测试框架,以及用于提高代码质量的提示工具。

测试框架

傻瓜指南:使用开源工具构建 DevOps 链

具有质量提示的工具

傻瓜指南:使用开源工具构建 DevOps 链

大多数这些工具和框架都是为 Java、Python 和 JavaScript 编写的,因为 C++ 和 C# 是专有的(尽管 GCC 是开源的)。

我们已经应用了测试覆盖率工具,现在 DevOps 管道应该如指南开头的图片所示。

附加步骤

集装箱

正如我所说,应用程序服务器可以托管在虚拟机或服务器上,但容器更受欢迎。

什么是容器? 简而言之,在虚拟机中,操作系统往往比应用程序占用更多的空间,而容器通常只需要很少的库和配置。 在某些情况下,虚拟机是必不可少的,但容器可以将应用程序与服务器一起容纳,而无需额外成本。

对于容器,通常使用 Docker 和 Kubernetes,尽管还有其他选择。

傻瓜指南:使用开源工具构建 DevOps 链

阅读有关 Docker 和 Kubernetes 的文章 Opensource.com:

中间件自动化工具

我们的 DevOps 链专注于协作构建和交付应用程序,但您还可以使用 DevOps 工具做其他很酷的事情。 例如,使用基础设施即代码 (IaC) 工具,也称为中间件自动化工具。 这些工具有助于自动化中间件的安装、管理和其他任务。 例如,自动化工具可以采用正确配置的应用程序(Web 应用程序服务器、数据库、监控工具)并将其部署到应用程序服务器。

以下是一些开源中间件自动化工具选项:

傻瓜指南:使用开源工具构建 DevOps 链

详细内容见文章 Opensource.com:

而现在呢?

这只是冰山一角。 DevOps 链可以做更多事情。 从 CI/CD 工具开始,看看还有什么可以自动化,让您的工作变得更轻松。 别忘了 开放的通讯工具 进行有效的协作。

这里还有一些关于 DevOps 适合初学者的好文章:

您还可以将 DevOps 与开放工具集成以实现敏捷:

来源: habr.com

添加评论