什么是 DevOps?
https://aws.amazon.com/cn/devops/what-is-devops/
DevOps 模式定義
DevOps 集文化理念、實踐和工具于一身,可以提高組織高速交付應用程序和服務的能力。
DevOps 的工作原理
在 DevOps 模式下,開發團隊和運營團隊都不再是“孤立”的團隊。有時,這兩個團隊會合為一個團隊,他們的工程師會在應用程序的整個生命周期(從開發測試到部署再到運營)內相互協作,開發出一系列不限于單一職能的技能。
在一些 DevOps 模式下,質保和安全團隊也會與開發和運營團隊更緊密地結合在一起,貫穿應用程序的整個生命周期。當安全是所有 DevOps 團隊成員的工作重心時,這有時被稱為“DevSecOps”。
他們使用能夠幫助其快速可靠地操作和發展應用程序的技術體系和工具。這些工具還可以幫助工程師獨立完成通常需要其他團隊協作才能完成的任務(例如部署代碼或預置基礎設施),從而進一步提高團隊的工作速度。
DevOps 的優勢
- 速度
- 快速交付
- 可靠性
-
規模
- 例如,基礎設施即代碼能夠幫助您以一種可重復且更有效的方式來管理部署、測試和生產環境。
-
增強合作
- 開發人員和運營團隊密切合作,共同承擔諸多責任,并將各自的工作流程相互融合。
- 安全性
如何采用 DevOps 模式
DevOps 的文化理念
簡單來說,DevOps 的宗旨就是消除兩個傳統上孤立的團隊(開發團隊和運營團隊)之間的壁壘。
有些組織甚至沒有獨立的開發團隊和運營團隊,工程師可能身兼兩職。利用 DevOps,這兩個團隊可以攜手合作,共同提高開發人員的生產力,同時增強運營的可靠性。他們力求頻繁溝通、提高效率,并改善客戶服務的質量。他們能夠完全掌控自己的服務,并且經常越過自己的既定角色或職能的傳統工作范疇,思考最終用戶的需求以及解決這些需求。
質保和安全團隊也可以與這兩個團隊緊密協作。凡是采用 DevOps 模式的組織,無論組織結構如何,參與團隊都會將整個開發和基礎設施生命周期視為己任。
DevOps 實踐說明
一個基本實踐經驗就是要頻繁地進行小規模更新。這是組織能為客戶快速提供創新的有效方式。
此外,組織還可以使用微服務架構來提升應用程序的靈活性,從而加快創新步伐。
但是,微服務與較高的發布頻率相結合會導致部署量大幅度增加,可能會帶來運營挑戰。因此,持續集成和持續交付等 DevOps 實踐經驗有助于解決這些問題,讓組織能夠以安全可靠的方式快速交付。
與基礎設施即代碼和配置管理一樣,基礎設施自動化實踐經驗也有助于維持計算資源的彈性和對頻繁變更的適應性。
此外,進行監控和記錄這一實踐經驗可幫助工程師追蹤應用程序和基礎設施的性能,以便他們快速應對出現的問題。
DevOps 實踐經驗
1. 持續集成 CI
采用持續集成時,開發人員會定期將他們的代碼變更合并到一個中央存儲庫中,之后系統會自動運行構建和測試操作。持續集成的主要目標是更快發現并解決錯誤,提高軟件質量,并縮短驗證和發布新軟件更新所需的時間。
2. 持續交付 CD
采用持續交付時,系統會對代碼變更自動進行構建和測試,并為發布到生產環境做好準備。
持續交付可以在構建階段后將所有代碼變更都部署到測試環境和/或生產環境中,從而實現對持續集成的擴展。當持續交付得以正確實施時,開發人員將始終能夠獲得一個已通過標準化測試流程的部署就緒型構建工件。
3. 微服務
微服務架構是一種將單個應用程序構建為一系列小服務的設計方法。其中每個服務均按各自的流程運行,并利用一種輕型機制(通常為基于 HTTP 的應用程序編程接口 (API))通過一個明確定義的接口與其他服務進行通信。
4. 基礎設施即代碼
基礎設施通過代碼和軟件部署技術(例如版本控制和持續集成)得以預置和管理。
借助云的 API 驅動型模式,開發人員和系統管理員能夠以編程方式與基礎設施進行大規模互動,而無需手動設置和配置資源。
配置管理
開發人員和系統管理員使用代碼將操作系統和主機配置、操作性任務等自動化。代碼的使用實現了配置變更的可重復性和標準化。它將開發人員和系統管理員從手動配置操作系統、系統應用程序或服務器軟件的任務中解放出來。策略即代碼
由于基礎設施及其配置全都通過云進行代碼編寫,所以組織可以動態地大規模監控與實現合規性。因此,組織可以自動跟蹤、驗證和重新配置由代碼描述的基礎設施。
5. 監控和日志記錄
通過對應用程序和基礎設施生成的數據進行采集、分類和分析,組織可以了解變更或更新如何影響用戶,同時深入了解出現問題或意外變故的根本原因。此外,創建警報或對這些數據執行實時分析也能幫助組織更主動地監控其服務。
6. 溝通與合作
DevOps 和 AWS
https://aws.amazon.com/cn/devops/
AWS 可以提供一套靈活的服務,讓各家公司利用 AWS 和 DevOps 實踐經驗來更加快速、可靠地構建和交付產品。
這些服務可以簡化基礎設施的預置和管理、應用程序代碼的部署、軟件發布流程的自動化以及應用程序和基礎設施性能的監控。
AWS 提供的 DevOps 工具
1. 持續集成和持續交付
AWS 開發人員工具可以幫助您安全地對應用程序的源代碼進行存儲和版本控制,還可幫助您自動構建、測試應用程序并將其部署至 AWS 或本地環境。
您可以通過 AWS CodePipeline 來構建一個組合或分別使用 AWS CodeBuild、AWS CodeDeploy 和各種其他工具的持續集成或持續交付工作流。
-
軟件發布工作流 AWS CodePipeline
- https://aws.amazon.com/cn/codepipeline/
-
AWS CodePipeline 是一種持續集成與持續交付服務,可以實現快速而可靠的應用程序和基礎設施更新。每次更改代碼時,CodePipeline 都會根據您定義的發布流程模型來構建、測試和部署您的代碼。這使您能夠快速而可靠地提供各種功能和更新。
自動化的持續集成和持續交付發布工作流程
-
構建與測試代碼 AWS CodeBuild
- https://aws.amazon.com/cn/codebuild/
- AWS CodeBuild 是一項完全托管的生成服務,可編譯源代碼、運行測試以及生成可供部署的軟件包。
-
部署自動化 AWS CodeDeploy
- https://aws.amazon.com/cn/codedeploy/
- AWS CodeDeploy 可將代碼自動部署至任何實例,包括 Amazon EC2 實例和本地服務器。借助 AWS CodeDeploy,您可以更輕松地快速推出新功能、避免在應用程序部署過程中出現停機,并簡化應用程序的更新工作。
-
統一 CI/CD 項目 AWS CodeStar
- https://aws.amazon.com/cn/codestar/
- AWS CodeStar 可以讓您在 AWS 上快速開發、構建和部署應用程序。AWS CodeStar 提供一個統一用戶界面,您可以借此在一個位置輕松管理您的軟件開發活動。
AWS CodeStar 支持的服務和工具
2. 微服務
-
生產 Docker 平臺 Amazon Elastic Container Service
- https://aws.amazon.com/cn/ecs/
-
Amazon Elastic Container Service (ECS) 是一項高度可擴展的高性能容器管理服務,支持 Docker 容器,并讓您能夠在托管的 Amazon EC2 實例群集上輕松運行應用程序。
Amazon ECS 的工作原理
-
無服務器計算 AWS Lambda
- https://aws.amazon.com/cn/lambda/
-
AWS Lambda 讓您無需預置或管理服務器即可運行代碼。借助 Lambda,您幾乎可以為任何類型的應用程序或后端服務運行代碼,而且全完全無需管理。只需上傳您的代碼,Lambda 就會處理運行和擴展代碼所需的一切工作并保證高可用性。
AWS Lambda 工作原理
3. 基礎設施即代碼
使用代碼和模板來預置、配置和管理您的 AWS 基礎設施資源。監控并實現基礎設施合規性。
-
模板化的基礎設施預置 AWS CloudFormation
- https://aws.amazon.com/cn/cloudformation/
-
AWS CloudFormation 向開發人員和系統管理員提供了一種用于創建和管理一批相關 AWS 資源的簡便方法,并通過有序且可預測的方式對其進行預置和更新。您可以使用 AWS CloudFormation 的示例模板,也可以創建自己的模板。
AWS CloudFormation 工作原理
-
Chef 配置管理 AWS OpsWorks
- https://aws.amazon.com/cn/opsworks/
- AWS OpsWorks 是一項配置管理服務,其使用的 Chef 自動化平臺可以將服務器配置作為代碼來處理。OpsWorks 利用 Chef 來自動處理您在 Amazon Elastic Compute Cloud (Amazon EC2) 實例上或本地計算環境中的服務器的配置、部署和托管工作。
-
配置管理 Amazon EC2 Systems Manager
- https://aws.amazon.com/cn/systems-manager/
- Amazon EC2 Systems Manager 是一項管理服務,可以幫助您自動收集軟件清單、應用操作系統補丁、創建系統映像以及配置 Windows 和 Linux 操作系統。
-
策略即代碼 AWS Config
- https://aws.amazon.com/cn/config/
- AWS Config 是一項完全托管型服務,可為您提供 AWS 資源庫存、配置歷史記錄和配置更改通知,以增強安全性和方便管理。
4. 監控和日志記錄
-
云和網絡監控 Amazon CloudWatch
- https://aws.amazon.com/cn/cloudwatch/
-
Amazon CloudWatch 是一項針對 AWS 云資源和在 AWS 上運行的應用程序的監控服務。您可以使用 Amazon CloudWatch 來收集和跟蹤各項指標、收集和監控日志文件、設置警報以及自動應對 AWS 資源的更改。
Amazon CloudWatch 工作原理
-
分布式跟蹤 AWS X-Ray
- https://aws.amazon.com/cn/xray/
-
AWS X-Ray 可以幫助開發人員分析與調試分布式生產應用程序,例如使用微服務架構構建的應用程序。借助 X-Ray,您可以了解應用程序及其底層服務的執行方式,從而識別導致性能問題和錯誤的根本原因并將其排除。
AWS X-Ray 工作原理
-
活動和 API 使用情況跟蹤 AWS CloudTrail
- https://aws.amazon.com/cn/cloudtrail/
-
AWS CloudTrail 是一種記錄賬戶的 AWS API 調用,并向您發送日志文件的 Web 服務。記錄的信息包括 API 調用者的身份、API 調用的時間、API 調用者的源 IP 地址、請求參數以及 AWS 服務返回的響應元素。
AWS CloudTrail 工作原理
5. 平臺即服務
無需預置和管理基礎設施與應用程序體系即可部署 Web 應用程序。
-
運行和管理 Web 應用 AWS Elastic Beanstalk
- https://aws.amazon.com/cn/elasticbeanstalk/
- AWS Elastic Beanstalk 是一項易于使用的服務,用于在熟悉的服務器(例如 Apache 、Nginx、Passenger 和 IIS )上部署和擴展使用 Java、.NET、PHP、Node.js、Python、Ruby、GO 和 Docker 開發的 Web 應用程序和服務。
您只需上傳代碼,Elastic Beanstalk 即可自動處理包括容量預置、負載均衡、自動擴展和應用程序運行狀況監控在內的部署工作。同時,您能夠完全控制為應用程序提供支持的 AWS 資源,并可以隨時訪問底層資源。
6. 版本控制
-
私有 Git 托管 AWS CodeCommit
- https://aws.amazon.com/cn/codecommit/
- AWS CodeCommit 是一種完全托管的源代碼控制服務,這項服務使公司能夠輕松地托管安全且高度可擴展的私有 Git 存儲庫。您可以使用 CodeCommit 將來自源代碼的任何數據安全存儲為二進制文件,而且它可以無縫兼容您現有的 Git 工具。