1. 程式人生 > 其它 >一文看懂微服務架構及DevOps

一文看懂微服務架構及DevOps

DevOps是什麼?

DevOps是通過:

平臺(Platform)、流程(Process)和人(People)的有機整合,以C(協作)A(自動化)L(精益)M(度量)S(共享)文化為指引,旨在建立一種可以快速交付價值並且具有持續改進能力的現代化 IT 組織。

瀑布開發模式

瀑布模型(Waterfall Model)是Royce在1970年提出的,他把大型軟體開發分為:分析與程式設計,象工廠流水線一樣把軟體開發過程分成各種工序,並且每個工序可以根據軟體產品的規模、參與人員的多少進一步細分成更細的工序。該模型非常符合軟體工程學的分層設計思路,所以成為軟體開發企業使用最多的開發模型。

敏捷開發模式

敏捷是一種迭代的、基於團隊的開發方法。這種方法強調以完整的功能元件快速交付應用程式。所有的時間都被“固定時間盒”劃分為“衝刺(通常稱迭代)”階段。而不是建立任務和時間表。每個迭代週期都有一個定義的持續時間(通常以周為單位),其中包含在迭代開始時計劃的可交付成果的執行列表。交付物根據客戶確定的業務價值進行優先順序排序。如果迭代中所有計劃的工作都不能完成,那麼工作將被重新排序,這些資訊將用於未來的迭代計劃。當工作完成時,專案團隊和客戶可以通過每日構建和迭代演示對其進行審查和評估。敏捷依賴於整個專案中非常高水平的客戶參與,特別是在這些評審期間。

DevOps變化進度

Scrum的理念

Scrum敏捷軟體開發強調的是在一個固定的時間內,利用一切合理的開發資源,完成客戶的一定需求。總體的專案是由一個一個小的衝刺(Sprint)組成的。每個小的衝刺(Sprint)都有很清晰明確的需求,而且也有明確的需求驗收標準,從而能夠把一個大的專案逐漸分解到小衝刺中,為按時保質地完成交付提供支援。

從瀑布到敏捷轉型的要點

  1. 瀑布模型的核心思想是按工序將問題簡化,將功能的實現與設計分開,便於分工協作。將軟體生命週期劃分為制訂計劃、需求分析、軟體設計、程式編寫、軟體測試和執行維護6個基本活動,並且規定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。
  2. 瀑布模型有以下特點:
  • 為專案提供了按階段劃分的檢查點。
  • 當前一階段任務完成後,只需要去關注後續階段。
  • 瀑布模型強調文件的作用,並要求每個階段都要仔細檢查。但是,這種模型的線性過程太理想化,其主要問題在於:

各個階段的劃分完全固定,階段之間產生大量的文件,極大地增加了工作量。

由於開發模型是線性的,使用者只有等到整個過程的末期才能見到開發成果,從而增加了開發的風險。

在瀑布開發模式下,早期的錯誤可能要等到開發後期的測試階段才能發現,進而帶來嚴重的後果。

3.在做大的變革之前,積極聽取其他成員的意見,努力理解其他成員的觀點,獲得團隊主要成員的支援,是保證變革成功的重要一環。

4.軟體開發根本就沒有什麼靈丹妙藥可言。雖然敏捷可以很快開發出優秀的應用軟體,但不是說這項技術適合每個專案。在實施敏捷之前,一定對現有專案做好分析,對症下藥。

5.在Scrum開發模式下,為每個Sprint起一個名字,不但可以增加團隊軟體開發的樂趣,提高大家的參與度,還可以記錄下Scrum Team當時的心情。

DevOps實踐六大原則

DevOps 的三大支柱

人(People)、流程(Process)和平臺(Platform)

DevOps = 人 + 流程 + 平臺

人 + 流程 = 文化

流程 + 平臺 = 工具

平臺 + 人 = 賦能

DevOps工具系統

專案管理(PM):jira。運營可以上去提問題,可以看到各個問題的完整的工作流,待解決未解決等;

程式碼管理:gitlab。jenkins或者K8S都可以整合gitlab,進行程式碼管理,上線,回滾等;

持續整合CI(Continuous Integration):gitlab ci。開發人員提交了新程式碼之後,立刻進行構建、(單元)測試。根據測試結果,我們可以確定新程式碼和原有程式碼能否正確地整合在一起。

持續交付CD(Continuous Delivery):gitlab cd。完成單元測試後,可以把程式碼部署到連線資料庫的 Staging 環境中更多的測試。如果程式碼沒有問題,可以繼續手動部署到生產環境中。

映象倉庫:VMware Harbor,私服nexus

容器:Docker

容器平臺: Rancher

編排:K8S

服務治理:Consul

指令碼語言:Python

日誌管理:Cat+Sentry,還有種常用的是ELK

系統監控:Prometheus

負載均衡:Nginx

閘道器:Kong,zuul

鏈路追蹤:Zipkin

產品和UI圖:藍湖

公司內部文件:Confluence

報警:zabbix,微信企業號

DevOps 可讓您通過持續部署來實現擴充套件

持續整合和持續部署管道(CI/CD)是實施 DevOps 的一大重要成果。CI/CD 可幫助您頻繁地向客戶交付應用並檢驗軟體質量,而且只需極少的人工干預。

具體而言,CI/CD 在整個應用生命週期內(從整合和測試階段,到交付和部署)都引入了持續自動化和持續監控,讓您能夠快速識別和改正問題與缺陷。這些彼此關聯的實踐通常被統稱為"CI/CD 管道",需要開發和運維團隊以敏捷方式協同支援。