傻瓜指南:使用開源工具構建 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 鏈

我們開始談正事吧。

第一步:CI/CD 平台

首先,你需要一個 CI/CD 工具。 Jenkins 是一個 MIT 許可的開源 CI/CD 工具,用 Java 編寫,它推廣了 DevOps 運動,並已成為 CICD 的事實標準。

什麼是詹金斯? 想像一下,您擁有一個用於各種服務和工具的神奇控制面板。 像 Jenkins 這樣的 CI/CD 工具本身是無用的,但是有了不同的工具和服務,它就會變得無所不能。

除了Jenkins,還有很多其他的開源工具,任選其一。

傻瓜指南:使用開源工具構建 DevOps 鏈

下面是使用 CI/CD 工具的 DevOps 流程

傻瓜指南:使用開源工具構建 DevOps 鏈

您在 localhost 中有一個 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 與開放式敏捷工具集成:

來源: www.habr.com

添加評論