什么是 DevOps?
https://aws.amazon.com/cn/devops/what-is-devops/
DevOps 模式定義
DevOps 集文化理念、實踐和工具于一身腊脱,可以提高組織高速交付應(yīng)用程序和服務(wù)的能力撞羽。
DevOps 的工作原理
在 DevOps 模式下,開發(fā)團隊和運營團隊都不再是“孤立”的團隊。有時,這兩個團隊會合為一個團隊,他們的工程師會在應(yīng)用程序的整個生命周期(從開發(fā)測試到部署再到運營)內(nèi)相互協(xié)作颤芬,開發(fā)出一系列不限于單一職能的技能。
在一些 DevOps 模式下套鹅,質(zhì)保和安全團隊也會與開發(fā)和運營團隊更緊密地結(jié)合在一起站蝠,貫穿應(yīng)用程序的整個生命周期。當(dāng)安全是所有 DevOps 團隊成員的工作重心時卓鹿,這有時被稱為“DevSecOps”菱魔。
他們使用能夠幫助其快速可靠地操作和發(fā)展應(yīng)用程序的技術(shù)體系和工具。這些工具還可以幫助工程師獨立完成通常需要其他團隊協(xié)作才能完成的任務(wù)(例如部署代碼或預(yù)置基礎(chǔ)設(shè)施)吟孙,從而進一步提高團隊的工作速度澜倦。
DevOps 的優(yōu)勢
- 速度
- 快速交付
-
可靠性
- 使用持續(xù)集成和持續(xù)交付等實踐經(jīng)驗來測試每次變更是否安全以及能夠正常運行巷挥。進行監(jiān)控和記錄實踐經(jīng)驗?zāi)軌驇椭鷮崟r了解當(dāng)前的性能栋艳。
-
規(guī)模
- 例如,基礎(chǔ)設(shè)施即代碼能夠幫助您以一種可重復(fù)且更有效的方式來管理部署句各、測試和生產(chǎn)環(huán)境吸占。
-
增強合作
- 開發(fā)人員和運營團隊密切合作,共同承擔(dān)諸多責(zé)任凿宾,并將各自的工作流程相互融合矾屯。
- 安全性
如何采用 DevOps 模式
DevOps 的文化理念
簡單來說,DevOps 的宗旨就是消除兩個傳統(tǒng)上孤立的團隊(開發(fā)團隊和運營團隊)之間的壁壘初厚。
有些組織甚至沒有獨立的開發(fā)團隊和運營團隊件蚕,工程師可能身兼兩職。利用 DevOps产禾,這兩個團隊可以攜手合作排作,共同提高開發(fā)人員的生產(chǎn)力,同時增強運營的可靠性亚情。他們力求頻繁溝通妄痪、提高效率,并改善客戶服務(wù)的質(zhì)量楞件。他們能夠完全掌控自己的服務(wù)衫生,并且經(jīng)常越過自己的既定角色或職能的傳統(tǒng)工作范疇裳瘪,思考最終用戶的需求以及解決這些需求。
質(zhì)保和安全團隊也可以與這兩個團隊緊密協(xié)作罪针。凡是采用 DevOps 模式的組織彭羹,無論組織結(jié)構(gòu)如何,參與團隊都會將整個開發(fā)和基礎(chǔ)設(shè)施生命周期視為己任泪酱。
DevOps 實踐說明
一個基本實踐經(jīng)驗就是要頻繁地進行小規(guī)模更新派殷。這是組織能為客戶快速提供創(chuàng)新的有效方式。
此外墓阀,組織還可以使用微服務(wù)架構(gòu)來提升應(yīng)用程序的靈活性毡惜,從而加快創(chuàng)新步伐。
但是岂津,微服務(wù)與較高的發(fā)布頻率相結(jié)合會導(dǎo)致部署量大幅度增加虱黄,可能會帶來運營挑戰(zhàn)。因此吮成,持續(xù)集成和持續(xù)交付等 DevOps 實踐經(jīng)驗有助于解決這些問題橱乱,讓組織能夠以安全可靠的方式快速交付。
與基礎(chǔ)設(shè)施即代碼和配置管理一樣粱甫,基礎(chǔ)設(shè)施自動化實踐經(jīng)驗也有助于維持計算資源的彈性和對頻繁變更的適應(yīng)性泳叠。
此外,進行監(jiān)控和記錄這一實踐經(jīng)驗可幫助工程師追蹤應(yīng)用程序和基礎(chǔ)設(shè)施的性能茶宵,以便他們快速應(yīng)對出現(xiàn)的問題危纫。
DevOps 實踐經(jīng)驗
1. 持續(xù)集成 CI
采用持續(xù)集成時,開發(fā)人員會定期將他們的代碼變更合并到一個中央存儲庫中乌庶,之后系統(tǒng)會自動運行構(gòu)建和測試操作种蝶。持續(xù)集成的主要目標是更快發(fā)現(xiàn)并解決錯誤,提高軟件質(zhì)量瞒大,并縮短驗證和發(fā)布新軟件更新所需的時間螃征。
2. 持續(xù)交付 CD
采用持續(xù)交付時,系統(tǒng)會對代碼變更自動進行構(gòu)建和測試透敌,并為發(fā)布到生產(chǎn)環(huán)境做好準備盯滚。
持續(xù)交付可以在構(gòu)建階段后將所有代碼變更都部署到測試環(huán)境和/或生產(chǎn)環(huán)境中,從而實現(xiàn)對持續(xù)集成的擴展酗电。當(dāng)持續(xù)交付得以正確實施時魄藕,開發(fā)人員將始終能夠獲得一個已通過標準化測試流程的部署就緒型構(gòu)建工件。
3. 微服務(wù)
微服務(wù)架構(gòu)是一種將單個應(yīng)用程序構(gòu)建為一系列小服務(wù)的設(shè)計方法撵术。其中每個服務(wù)均按各自的流程運行背率,并利用一種輕型機制(通常為基于 HTTP 的應(yīng)用程序編程接口 (API))通過一個明確定義的接口與其他服務(wù)進行通信。
4. 基礎(chǔ)設(shè)施即代碼
基礎(chǔ)設(shè)施通過代碼和軟件部署技術(shù)(例如版本控制和持續(xù)集成)得以預(yù)置和管理。
借助云的 API 驅(qū)動型模式退渗,開發(fā)人員和系統(tǒng)管理員能夠以編程方式與基礎(chǔ)設(shè)施進行大規(guī)囊莆龋互動蕴纳,而無需手動設(shè)置和配置資源会油。
配置管理
開發(fā)人員和系統(tǒng)管理員使用代碼將操作系統(tǒng)和主機配置、操作性任務(wù)等自動化古毛。代碼的使用實現(xiàn)了配置變更的可重復(fù)性和標準化翻翩。它將開發(fā)人員和系統(tǒng)管理員從手動配置操作系統(tǒng)、系統(tǒng)應(yīng)用程序或服務(wù)器軟件的任務(wù)中解放出來稻薇。策略即代碼
由于基礎(chǔ)設(shè)施及其配置全都通過云進行代碼編寫嫂冻,所以組織可以動態(tài)地大規(guī)模監(jiān)控與實現(xiàn)合規(guī)性。因此塞椎,組織可以自動跟蹤桨仿、驗證和重新配置由代碼描述的基礎(chǔ)設(shè)施。
5. 監(jiān)控和日志記錄
通過對應(yīng)用程序和基礎(chǔ)設(shè)施生成的數(shù)據(jù)進行采集案狠、分類和分析服傍,組織可以了解變更或更新如何影響用戶,同時深入了解出現(xiàn)問題或意外變故的根本原因骂铁。此外吹零,創(chuàng)建警報或?qū)@些數(shù)據(jù)執(zhí)行實時分析也能幫助組織更主動地監(jiān)控其服務(wù)。
6. 溝通與合作
DevOps 和 AWS
https://aws.amazon.com/cn/devops/
AWS 可以提供一套靈活的服務(wù)拉庵,讓各家公司利用 AWS 和 DevOps 實踐經(jīng)驗來更加快速灿椅、可靠地構(gòu)建和交付產(chǎn)品。
這些服務(wù)可以簡化基礎(chǔ)設(shè)施的預(yù)置和管理钞支、應(yīng)用程序代碼的部署茫蛹、軟件發(fā)布流程的自動化以及應(yīng)用程序和基礎(chǔ)設(shè)施性能的監(jiān)控。
AWS 提供的 DevOps 工具
1. 持續(xù)集成和持續(xù)交付
AWS 開發(fā)人員工具可以幫助您安全地對應(yīng)用程序的源代碼進行存儲和版本控制烁挟,還可幫助您自動構(gòu)建婴洼、測試應(yīng)用程序并將其部署至 AWS 或本地環(huán)境。
您可以通過 AWS CodePipeline 來構(gòu)建一個組合或分別使用 AWS CodeBuild信夫、AWS CodeDeploy 和各種其他工具的持續(xù)集成或持續(xù)交付工作流窃蹋。
-
軟件發(fā)布工作流 AWS CodePipeline
- https://aws.amazon.com/cn/codepipeline/
-
AWS CodePipeline 是一種持續(xù)集成與持續(xù)交付服務(wù),可以實現(xiàn)快速而可靠的應(yīng)用程序和基礎(chǔ)設(shè)施更新静稻。每次更改代碼時警没,CodePipeline 都會根據(jù)您定義的發(fā)布流程模型來構(gòu)建、測試和部署您的代碼振湾。這使您能夠快速而可靠地提供各種功能和更新杀迹。
自動化的持續(xù)集成和持續(xù)交付發(fā)布工作流程
-
構(gòu)建與測試代碼 AWS CodeBuild
- https://aws.amazon.com/cn/codebuild/
- AWS CodeBuild 是一項完全托管的生成服務(wù),可編譯源代碼押搪、運行測試以及生成可供部署的軟件包树酪。
-
部署自動化 AWS CodeDeploy
- https://aws.amazon.com/cn/codedeploy/
- AWS CodeDeploy 可將代碼自動部署至任何實例浅碾,包括 Amazon EC2 實例和本地服務(wù)器。借助 AWS CodeDeploy续语,您可以更輕松地快速推出新功能垂谢、避免在應(yīng)用程序部署過程中出現(xiàn)停機,并簡化應(yīng)用程序的更新工作疮茄。
-
統(tǒng)一 CI/CD 項目 AWS CodeStar
- https://aws.amazon.com/cn/codestar/
- AWS CodeStar 可以讓您在 AWS 上快速開發(fā)滥朱、構(gòu)建和部署應(yīng)用程序。AWS CodeStar 提供一個統(tǒng)一用戶界面力试,您可以借此在一個位置輕松管理您的軟件開發(fā)活動徙邻。
AWS CodeStar 支持的服務(wù)和工具
2. 微服務(wù)
使用容器或無服務(wù)器計算來構(gòu)建和部署微服務(wù)架構(gòu)。
-
生產(chǎn) Docker 平臺 Amazon Elastic Container Service
- https://aws.amazon.com/cn/ecs/
-
Amazon Elastic Container Service (ECS) 是一項高度可擴展的高性能容器管理服務(wù)畸裳,支持 Docker 容器缰犁,并讓您能夠在托管的 Amazon EC2 實例群集上輕松運行應(yīng)用程序。
Amazon ECS 的工作原理
-
無服務(wù)器計算 AWS Lambda
- https://aws.amazon.com/cn/lambda/
-
AWS Lambda 讓您無需預(yù)置或管理服務(wù)器即可運行代碼怖糊。借助 Lambda帅容,您幾乎可以為任何類型的應(yīng)用程序或后端服務(wù)運行代碼,而且全完全無需管理蓬抄。只需上傳您的代碼丰嘉,Lambda 就會處理運行和擴展代碼所需的一切工作并保證高可用性。
AWS Lambda 工作原理
3. 基礎(chǔ)設(shè)施即代碼
使用代碼和模板來預(yù)置嚷缭、配置和管理您的 AWS 基礎(chǔ)設(shè)施資源饮亏。監(jiān)控并實現(xiàn)基礎(chǔ)設(shè)施合規(guī)性。
-
模板化的基礎(chǔ)設(shè)施預(yù)置 AWS CloudFormation
- https://aws.amazon.com/cn/cloudformation/
-
AWS CloudFormation 向開發(fā)人員和系統(tǒng)管理員提供了一種用于創(chuàng)建和管理一批相關(guān) AWS 資源的簡便方法阅爽,并通過有序且可預(yù)測的方式對其進行預(yù)置和更新路幸。您可以使用 AWS CloudFormation 的示例模板,也可以創(chuàng)建自己的模板付翁。
AWS CloudFormation 工作原理
-
Chef 配置管理 AWS OpsWorks
- https://aws.amazon.com/cn/opsworks/
- AWS OpsWorks 是一項配置管理服務(wù)简肴,其使用的 Chef 自動化平臺可以將服務(wù)器配置作為代碼來處理。OpsWorks 利用 Chef 來自動處理您在 Amazon Elastic Compute Cloud (Amazon EC2) 實例上或本地計算環(huán)境中的服務(wù)器的配置百侧、部署和托管工作砰识。
-
配置管理 Amazon EC2 Systems Manager
- https://aws.amazon.com/cn/systems-manager/
- Amazon EC2 Systems Manager 是一項管理服務(wù),可以幫助您自動收集軟件清單佣渴、應(yīng)用操作系統(tǒng)補丁辫狼、創(chuàng)建系統(tǒng)映像以及配置 Windows 和 Linux 操作系統(tǒng)。
-
策略即代碼 AWS Config
- https://aws.amazon.com/cn/config/
- AWS Config 是一項完全托管型服務(wù)辛润,可為您提供 AWS 資源庫存膨处、配置歷史記錄和配置更改通知,以增強安全性和方便管理。
4. 監(jiān)控和日志記錄
-
云和網(wǎng)絡(luò)監(jiān)控 Amazon CloudWatch
- https://aws.amazon.com/cn/cloudwatch/
-
Amazon CloudWatch 是一項針對 AWS 云資源和在 AWS 上運行的應(yīng)用程序的監(jiān)控服務(wù)真椿。您可以使用 Amazon CloudWatch 來收集和跟蹤各項指標鹃答、收集和監(jiān)控日志文件、設(shè)置警報以及自動應(yīng)對 AWS 資源的更改突硝。
Amazon CloudWatch 工作原理
-
分布式跟蹤 AWS X-Ray
- https://aws.amazon.com/cn/xray/
-
AWS X-Ray 可以幫助開發(fā)人員分析與調(diào)試分布式生產(chǎn)應(yīng)用程序测摔,例如使用微服務(wù)架構(gòu)構(gòu)建的應(yīng)用程序。借助 X-Ray狞换,您可以了解應(yīng)用程序及其底層服務(wù)的執(zhí)行方式避咆,從而識別導(dǎo)致性能問題和錯誤的根本原因并將其排除舟肉。
AWS X-Ray 工作原理
-
活動和 API 使用情況跟蹤 AWS CloudTrail
- https://aws.amazon.com/cn/cloudtrail/
-
AWS CloudTrail 是一種記錄賬戶的 AWS API 調(diào)用修噪,并向您發(fā)送日志文件的 Web 服務(wù)。記錄的信息包括 API 調(diào)用者的身份路媚、API 調(diào)用的時間黄琼、API 調(diào)用者的源 IP 地址、請求參數(shù)以及 AWS 服務(wù)返回的響應(yīng)元素整慎。
AWS CloudTrail 工作原理
5. 平臺即服務(wù)
無需預(yù)置和管理基礎(chǔ)設(shè)施與應(yīng)用程序體系即可部署 Web 應(yīng)用程序脏款。
-
運行和管理 Web 應(yīng)用 AWS Elastic Beanstalk
- https://aws.amazon.com/cn/elasticbeanstalk/
- AWS Elastic Beanstalk 是一項易于使用的服務(wù),用于在熟悉的服務(wù)器(例如 Apache 裤园、Nginx撤师、Passenger 和 IIS )上部署和擴展使用 Java、.NET拧揽、PHP剃盾、Node.js、Python淤袜、Ruby痒谴、GO 和 Docker 開發(fā)的 Web 應(yīng)用程序和服務(wù)。
您只需上傳代碼铡羡,Elastic Beanstalk 即可自動處理包括容量預(yù)置积蔚、負載均衡、自動擴展和應(yīng)用程序運行狀況監(jiān)控在內(nèi)的部署工作烦周。同時尽爆,您能夠完全控制為應(yīng)用程序提供支持的 AWS 資源,并可以隨時訪問底層資源读慎。
6. 版本控制
-
私有 Git 托管 AWS CodeCommit
- https://aws.amazon.com/cn/codecommit/
- AWS CodeCommit 是一種完全托管的源代碼控制服務(wù)漱贱,這項服務(wù)使公司能夠輕松地托管安全且高度可擴展的私有 Git 存儲庫。您可以使用 CodeCommit 將來自源代碼的任何數(shù)據(jù)安全存儲為二進制文件贪壳,而且它可以無縫兼容您現(xiàn)有的 Git 工具饱亿。