2018/5/25編程
前言:aws 這份定義清晰明瞭,值得回顧。安全
DevOps 集文化理念、實踐和工具於一身,能夠提升組織高速交付應用程序和服務的能力,與使用傳統軟件開發和基礎設施管理流程相比,可以幫助組織更快地發展和改進產品。這種速度使組織可以更好地服務其客戶,並在市場上更高效地參與競爭。服務器
在 DevOps 模式下,開發團隊和運營團隊都再也不是「孤立」的團隊。有時,這兩個團隊會合爲一個團隊,他們的工程師會在應用程序的整個生命週期(從開發測試到部署再到運營)內相互協做,開發出一系列不限於單一職能的技能。架構
在一些 DevOps 模式下,質保和安全團隊也會與開發和運營團隊更緊密地結合在一塊兒,貫穿應用程序的整個生命週期。當安全是全部 DevOps 團隊成員的工做重心時,這有時被稱爲「DevSecOps」。
這些團隊會使用實踐經驗自動執行以前手動操做的緩慢流程。他們使用可以幫助其快速可靠地操做和發展應用程序的技術體系和工具。這些工具還能夠幫助工程師獨立完成一般須要其餘團隊協做才能完成的任務(例如部署代碼或預置基礎設施),從而進一步提升團隊的工做速度。框架
高速運轉,讓您能夠更快速地針對客戶進行創新、更好地適應不斷變化的市場,同時更有效地推進業務成果。DevOps 模式可以幫助您的開發人員和運營團隊實現這些目標。例如,微服務和持續交付可以讓團隊充分掌控服務,而後更快速地發佈更新。編程語言
提升發佈的頻率和速度,以便您可以更快速地進行創新並完善產品。您發佈新功能和修復錯誤的速度越快,就越能快速地響應客戶需求並創建競爭優點。持續集成和持續交付是自動執行軟件發佈流程(從構建到部署)的兩項實踐經驗。分佈式
確保應用程序更新和基礎設施變動的品質,以便您可以在保持最終用戶優質體驗的同時,更加快速可靠地進行交付。使用持續集成和持續交付等實踐經驗來測試每次變動是否安全以及可以正常運行。進行監控和記錄實踐經驗可以幫助您實時瞭解當前的性能。ide
大規模運行和管理您的基礎設施及開發流程。自動化和一致性可在下降風險的同時,幫助您有效管理複雜或不斷變化的系統。例如,基礎設施即代碼可以幫助您以一種可重複且更有效的方式來管理部署、測試和生產環境。微服務
創建一個適應 DevOps 文化模式的更高效的團隊,強調主人翁精神和責任感。開發人員和運營團隊密切合做,共同承擔諸多責任,並將各自的工做流程相互融合。這有助於減小效率低下的工做,同時節約你們的時間(例如,縮短開發人員和運營團隊之間的交接時間,編寫將運行環境考慮在內的代碼)。工具
在快速運轉的同時保持控制力和合規性。利用自動實施的合規性策略、精細控制和配置管理技術,您能夠在不犧牲安全性的前提下采用 DevOps 模式。例如,利用基礎設施即代碼和策略即代碼,您能夠大規模定義並追蹤合規性。
軟件和 Internet 改變了咱們身處的世界,同時也改變了購物、娛樂、銀行等行業的運營方式。軟件再也不僅僅是爲業務提供支持,而是成爲業務的方方面面都不可或缺的組成部分。當前,公司經過採用在線服務或應用程序交付的軟件,在各類設備上與客戶進行互動。他們還使用軟件改變了價值鏈的各個部分(例如物流、通訊和運營),從而提升運營效率。在整個 20 世紀,生產實體產品的公司經過工業自動化改變了其設計、構建和交付產品的方式,而在當今的環境中,公司必須以一樣的方式來改變其構建和交付軟件的方式。
向 DevOps 的過渡須要文化理念和心態上的轉變。簡單來講,DevOps 的宗旨就是消除兩個傳統上孤立的團隊(開發團隊和運營團隊)之間的壁壘。有些組織甚至沒有獨立的開發團隊和運營團隊,工程師可能身兼兩職。利用 DevOps,這兩個團隊能夠攜手合做,共同提升開發人員的生產力,同時加強運營的可靠性。他們力求頻繁溝通、提升效率,並改善客戶服務的質量。他們可以徹底掌控本身的服務,而且常常越過本身的既定角色或職能的傳統工做範疇,思考最終用戶的需求以及解決這些需求。質保和安全團隊也能夠與這兩個團隊緊密協做。凡是採用 DevOps 模式的組織,不管組織結構如何,參與團隊都會將整個開發和基礎設施生命週期視爲己任。
有一些重要的實踐經驗可以經過自動實施和簡化軟件開發與基礎設施管理流程,幫助組織加快創新速度。這些實踐經驗有大部分須要經過適當的工具來完成。
其中一個基本實踐經驗就是要頻繁地進行小規模更新。這是組織能爲客戶快速提供創新的有效方式。與傳統發佈實踐中偶爾的更新相比,這種更新一般更具漸進性質。頻繁的小規模更新可以下降每次部署的風險。它們能夠幫助團隊更快速地處理錯誤,由於團隊可以肯定引起錯誤的最近一次部署。雖然更新的節奏和規模可能有所不一樣,但使用 DevOps 模式的組織與使用傳統軟件部署實踐的組織相比,會更頻繁更新。
此外,組織還可使用微服務架構來提高應用程序的靈活性,從而加快創新步伐。微服務架構將大型的複雜系統拆分爲簡單的獨立項目。應用程序被拆分爲許多單個組件(服務),每一個服務限定到單個目的或功能,這些服務既能夠與其同級服務相互獨立運行,也能夠與應用程序一塊兒做爲總體運行。這種架構下降了更新應用程序的協調開銷,當每一個服務都與掌控各項服務的敏捷小型團隊一一對應時,組織就能夠實現更快的發展。
可是,微服務與較高的發佈頻率相結合會致使部署量大幅度增長,可能會帶來運營挑戰。所以,持續集成和持續交付等 DevOps 實踐經驗有助於解決這些問題,讓組織可以以安全可靠的方式快速交付。與基礎設施即代碼和配置管理同樣,基礎設施自動化實踐經驗也有助於維持計算資源的彈性和對頻繁變動的適應性。此外,進行監控和記錄這一實踐經驗可幫助工程師追蹤應用程序和基礎設施的性能,以便他們快速應對出現的問題。
綜合採用上述實踐經驗,能夠幫助組織向客戶更快交付更可靠的更新。對重要 DevOps 實踐經驗的簡要介紹以下。
如下列舉了一些 DevOps 最佳實踐:
您能夠從下文中瞭解每種實踐的詳細信息。
持續集成
持續集成是一種軟件開發實踐經驗,採用持續集成時,開發人員會按期將他們的代碼變動合併到一箇中央存儲庫中,以後系統會自動運行構建和測試操做。持續集成的主要目標是更快發現並解決錯誤,提升軟件質量,並縮短驗證和發佈新軟件更新所需的時間。
持續交付
持續交付是一種軟件開發實踐經驗,採用持續交付時,系統會對代碼變動自動進行構建和測試,併爲發佈到生產環境作好準備。持續交付能夠在構建階段後將全部代碼變動都部署到測試環境和/或生產環境中,從而實現對持續集成的擴展。當持續交付得以正確實施時,開發人員將始終可以得到一個已經過標準化測試流程的部署就緒型構建工件。
微服務
微服務架構是一種將單個應用程序構建爲一系列小服務的設計方法。其中每一個服務均按各自的流程運行,並利用一種輕型機制(一般爲基於 HTTP 的應用程序編程接口 (API))經過一個明肯定義的接口與其餘服務進行通訊。微服務圍繞着業務能力進行構建,每項服務均限定到單個目的。您可使用不一樣的框架或編程語言來編寫微服務,並將其做爲單個服務或一組服務進行獨立部署。
基礎設施即代碼
基礎設施即代碼是一種實踐經驗,其中基礎設施經過代碼和軟件部署技術(例如版本控制和持續集成)得以預置和管理。藉助雲的 API 驅動型模式,開發人員和系統管理員可以以編程方式與基礎設施進行大規模互動,而無需手動設置和配置資源。所以,工程師可使用基於代碼的工具來鏈接基礎設施,而且可以以處理應用程序代碼的方式來處理基礎設施。基礎設施和服務器由代碼進行定義,所以可使用標準化模式進行快速部署、使用最新補丁和版本進行更新,或者以可重複的方式進行復制。
配置管理
開發人員和系統管理員使用代碼將操做系統和主機配置、操做性任務等自動化。代碼的使用實現了配置變動的可重複性和標準化。它將開發人員和系統管理員從手動配置操做系統、系統應用程序或服務器軟件的任務中解放出來。
策略即代碼
因爲基礎設施及其配置全都經過雲進行代碼編寫,因此組織能夠動態地大規模監控與實現合規性。所以,組織能夠自動跟蹤、驗證和從新配置由代碼描述的基礎設施。這樣一來,組織可以更加輕鬆地掌控資源變動,並確保安全措施以分佈式方式獲得妥善執行(例如,採用 PCI-DSS 或 HIPAA 確保信息安全性或合規性)。這使組織內部的團隊可以更快速地運做,由於不合規的資源可能被自動標記爲須要進一步調查,甚至被自動糾正爲合規資源。
監控和日誌記錄
組織對各項指標和日誌進行監控,以瞭解應用程序和基礎設施性能如何影響其產品的最終用戶體驗。經過對應用程序和基礎設施生成的數據進行採集、分類和分析,組織能夠了解變動或更新如何影響用戶,同時深刻了解出現問題或意外變故的根本緣由。因爲服務必須全天候持續可用,並且應用程序和基礎設施的更新頻率不斷提升,所以主動監控變得日益重要。此外,建立警報或對這些數據執行實時分析也能幫助組織更主動地監控其服務。
溝通與合做
加強組織內部的溝通與合做是 DevOps 文化的一個重要方面。DevOps 工具的使用和軟件交付流程的自動化可以以物理方式將開發和運行的工做流程及職責結合起來,從而創建團隊之間的相互協做。在此基礎上,這些團隊樹立了強大的文化規範,提倡信息共享和經過聊天應用程序、問題或項目追蹤系統以及 Wikis 來促進溝通。這有助於加快開發人員、運營團隊甚至其餘團隊(如營銷團隊或銷售團隊)之間的溝通,從而使組織的各個部門圍繞共同的目標和項目更緊密地結合在一塊兒。