一文看懂微服務架構及DevOps
DevOps是什麼?
DevOps是通過:
平臺(Platform)、流程(Process)和人(People)的有機整合,以C(協作)A(自動化)L(精益)M(度量)S(共享)文化為指引,旨在建立一種可以快速交付價值並且具有持續改進能力的現代化 IT 組織。
瀑布開發模式
瀑布模型(Waterfall Model)是Royce在1970年提出的,他把大型軟體開發分為:分析與程式設計,象工廠流水線一樣把軟體開發過程分成各種工序,並且每個工序可以根據軟體產品的規模、參與人員的多少進一步細分成更細的工序。該模型非常符合軟體工程學的分層設計思路,所以成為軟體開發企業使用最多的開發模型。
敏捷開發模式
敏捷是一種迭代的、基於團隊的開發方法。這種方法強調以完整的功能元件快速交付應用程式。所有的時間都被“固定時間盒”劃分為“衝刺(通常稱迭代)”階段。而不是建立任務和時間表。每個迭代週期都有一個定義的持續時間(通常以周為單位),其中包含在迭代開始時計劃的可交付成果的執行列表。交付物根據客戶確定的業務價值進行優先順序排序。如果迭代中所有計劃的工作都不能完成,那麼工作將被重新排序,這些資訊將用於未來的迭代計劃。當工作完成時,專案團隊和客戶可以通過每日構建和迭代演示對其進行審查和評估。敏捷依賴於整個專案中非常高水平的客戶參與,特別是在這些評審期間。
DevOps變化進度
Scrum的理念
Scrum敏捷軟體開發強調的是在一個固定的時間內,利用一切合理的開發資源,完成客戶的一定需求。總體的專案是由一個一個小的衝刺(Sprint)組成的。每個小的衝刺(Sprint)都有很清晰明確的需求,而且也有明確的需求驗收標準,從而能夠把一個大的專案逐漸分解到小衝刺中,為按時保質地完成交付提供支援。
從瀑布到敏捷轉型的要點
- 瀑布模型的核心思想是按工序將問題簡化,將功能的實現與設計分開,便於分工協作。將軟體生命週期劃分為制訂計劃、需求分析、軟體設計、程式編寫、軟體測試和執行維護6個基本活動,並且規定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。
- 瀑布模型有以下特點:
- 為專案提供了按階段劃分的檢查點。
- 當前一階段任務完成後,只需要去關注後續階段。
- 瀑布模型強調文件的作用,並要求每個階段都要仔細檢查。但是,這種模型的線性過程太理想化,其主要問題在於:
各個階段的劃分完全固定,階段之間產生大量的文件,極大地增加了工作量。
由於開發模型是線性的,使用者只有等到整個過程的末期才能見到開發成果,從而增加了開發的風險。
在瀑布開發模式下,早期的錯誤可能要等到開發後期的測試階段才能發現,進而帶來嚴重的後果。
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 管道",需要開發和運維團隊以敏捷方式協同支援。