DevOps 這麼多年了,你當了多少年的水管(Pipeline)工人了呢?是否經歷了從地端到雲端、VM 到 Container、老爺爺到太空章魚⋯⋯等多個不一樣的年代?
在這場分享中,講者將回顧過往,看一看這些年來 DevOps Pipeline 的歷史軌跡,放眼過去、展望未來,如果再來一次,我們該如何開始一條新的 DevOps Pipeline,如何向著水管工人大師之路邁進。
Photo by Simon Stratford on UnsplashCheng Wei Chen @ DevOpsDays Taipei 2022那些年我們做過的DevOps Pipeline
View Slide
Cheng Wei Chen 陳正瑋Athemaster 炬識科技 / Technology Consultant《Effective DevOps 中⽂版》譯者、GitLab Hero、DevOps Taiwan Community 志⼯https://chengweichen.com
當有人跟你說:「嘿,我們來導入 DevOps 吧!」你覺得他打算⋯⋯?Photo by Camylla Battani on Unsplash
1 CI / CD Pipeline2 講幹話3 ⾃動化部署4 ⾃動化測試5 IaC
12345
QRcode涉及:⼯具、架構、流程Photo by Renel Wackett on Unsplash你調整過多少次 Pipeline?JenkinsGitLab CI1 VM2 VM / Container3 Stage5 StageQRcode 已關閉,現場收集到的數據在下⼀⾴。
2007 - CI (Book)2010 - CD (Book)1990 2000 20151995 20102005 2020 2025CI/CD Pipeline 是個老東⻄我們在這裡
1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)資料來源: https://en.wikipedia.org/wiki/Continuous_integration2010 - CD (Book)1990 2000 20151995 20102005 2020 2025CI/CD Pipeline 是個老東⻄我們在這裡
2009 - 1stDevOpsDays1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)資料來源: https://en.wikipedia.org/wiki/Continuous_integration2010 - CD (Book)1990 2000 20151995 20102005 2020 2025我們在這裡
1999 – VMware2007 - Bamboo2007 - Cruise1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)資料來源: https://en.wikipedia.org/wiki/Continuous_integration2010 - CD (Book)2011 - Jenkins2006 - TeamCity2010 - GoCD2005 - Huden 2009 - 1stDevOpsDays2007 – VirtualBox我們在這裡2000 - Apache Subversion (SVN)2005 - Git1990 2000 20151995 20102005 2020 2025
1999 – VMware2007 - Bamboo2007 - Cruise1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)資料來源: https://en.wikipedia.org/wiki/Continuous_integration2010 - CD (Book)2011 - Jenkins2006 - TeamCity2010 - GoCD2005 - Huden 2009 - 1stDevOpsDays2007 – VirtualBox1990 2000 20151995 20102005 2020 2025我們在這裡2000 - Apache Subversion (SVN)2005 - Git第 1 代CI / CD PipelineCI ServerGUIVMSSHVMAgent
2005 - Git1999 – VMware2007 - Bamboo2007 - Cruise1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)資料來源: https://en.wikipedia.org/wiki/Continuous_integration2010 - CD (Book)2011 - Jenkins2006 - TeamCity2010 - GoCD2005 - Huden 2009 - 1stDevOpsDays2007 – VirtualBox1990 2000 20151995 20102005 2020 20252000 - Apache Subversion (SVN)
1999 – VMware2007 - Bamboo2007 - Cruise1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)2010 - CD (Book)2011 - Jenkins2006 - TeamCity2000 - Apache Subversion (SVN)2010 - GoCD2005 - Huden 2009 - 1stDevOpsDays2007 – VirtualBox資料來源: https://en.wikipedia.org/wiki/Continuous_integration2008 - Bitbucket2016 - Gitea2011 - GitLab2008 - GitHub2005 - Git1990 2000 20151995 20102005 2020 2025
1999 – VMware2007 - Bamboo2007 - Cruise1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)2010 - CD (Book)2011 - Jenkins2006 - TeamCity2000 - Apache Subversion (SVN)2010 - GoCD2005 - Huden 2009 - 1stDevOpsDays2007 – VirtualBox資料來源: https://en.wikipedia.org/wiki/Continuous_integration2008 - Bitbucket2016 - Gitea2005 - Git2011 - Travis CI2011 - CircleCI2012 - GitLab CI2018 - GitHub Action1990 2000 20151995 20102005 2020 20252011 - GitLab2008 - GitHub
1999 – VMware2007 - Bamboo2007 - Cruise1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)2010 - CD (Book)2011 - Jenkins2006 - TeamCity2000 - Apache Subversion (SVN)2010 - GoCD2005 - Huden 2009 - 1stDevOpsDays2007 – VirtualBox資料來源: https://en.wikipedia.org/wiki/Continuous_integration2008 - Bitbucket2016 - Gitea2005 - Git2011 - Travis CI2011 - CircleCI2012 - GitLab CI2018 - GitHub Action1990 2000 20151995 20102005 2020 20252011 - GitLab2008 - GitHub第 2 代CI / CD PipelinePipelineVCSYAMLCI ServiceCI Job
1999 – VMware2007 - Bamboo2007 - Cruise1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)2010 - CD (Book)2011 - Jenkins2006 - TeamCity2000 - Apache Subversion (SVN)2010 - GoCD2005 - Huden 2009 - 1stDevOpsDays2007 – VirtualBox2016 - Gitea2012 - GitLab CI2008 - Bitbucket2005 - Git2011 - Travis CI2011 - CircleCI2018 - GitHub Action2011 - GitLab2008 - GitHub資料來源: https://en.wikipedia.org/wiki/Continuous_integration2014 - Docker (v1.0)2015 - K8s1990 2000 20151995 20102005 2020 2025
1999 – VMware2007 - Bamboo2007 - Cruise1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)2010 - CD (Book)2011 - Jenkins2006 - TeamCity2000 - Apache Subversion (SVN)2010 - GoCD2005 - Huden 2009 - 1stDevOpsDays2007 – VirtualBox2016 - Gitea2012 - GitLab CI2008 - Bitbucket2005 - Git2011 - Travis CI2011 - CircleCI2018 - GitHub Action2011 - GitLab2008 - GitHub資料來源: https://en.wikipedia.org/wiki/Continuous_integration2014 - Docker (v1.0)2015 - K8s1990 2000 20151995 20102005 2020 2025第 2.5 代CI / CD PipelineVM VMContainer
1999 – VMware2007 - Bamboo2007 - Cruise1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)2010 - CD (Book)2011 - Jenkins2006 - TeamCity2000 - Apache Subversion (SVN)2010 - GoCD2005 - Huden 2009 - 1stDevOpsDays2007 – VirtualBox2016 - Gitea2012 - GitLab CI2008 - Bitbucket2005 - Git2011 - Travis CI2011 - CircleCI2018 - GitHub Action2011 - GitLab2008 - GitHub資料來源: https://en.wikipedia.org/wiki/Continuous_integration2014 - Docker (v1.0)2015 - Spinnaker2015 - Buddy2015 - K8s2019 - Argo CD2018 - Jenkins X1990 2000 20151995 20102005 2020 2025
1999 – VMware2007 - Bamboo2007 - Cruise1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)2010 - CD (Book)2011 - Jenkins2006 - TeamCity2000 - Apache Subversion (SVN)2010 - GoCD2005 - Huden 2009 - 1stDevOpsDays2007 – VirtualBox2016 - Gitea2012 - GitLab CI2008 - Bitbucket2005 - Git2011 - Travis CI2011 - CircleCI2018 - GitHub Action2011 - GitLab2008 - GitHub資料來源: https://en.wikipedia.org/wiki/Continuous_integration2014 - Docker (v1.0)2016 - IaC (Book, 1st)2020 - IaC (Book, 2nd)2015 - Spinnaker2015 - Buddy2019 - Argo CD2018 - Jenkins X1990 2000 20151995 20102005 2020 20252017 - GitOps2021 - Terraform v1.0.02021 - Pulumi v2.0.02015 - K8s
1999 – VMware2007 - Bamboo2007 - Cruise1999 – Continuous Integration1999 – eXtreme Programming1994 - Origin ofContinuous integrationby Grady Booch2007 - CI (Book)2010 - CD (Book)2011 - Jenkins2006 - TeamCity2000 - Apache Subversion (SVN)2010 - GoCD2005 - Huden 2009 - 1stDevOpsDays2007 – VirtualBox2016 - Gitea2012 - GitLab CI2008 - Bitbucket2005 - Git2011 - Travis CI2011 - CircleCI2018 - GitHub Action2011 - GitLab2008 - GitHub資料來源: https://en.wikipedia.org/wiki/Continuous_integration2014 - Docker (v1.0)2016 - IaC (Book, 1st)2020 - IaC (Book, 2nd)2015 - Spinnaker2015 - Buddy2019 - Argo CD2018 - Jenkins X1990 2000 20151995 20102005 2020 20252017 - GitOps2021 - Terraform v1.0.0第 3 代CI / CD PipelineContainerVCSYAMLContainerAutomation2021 - Pulumi v2.0.02015 - K8s
QRcodePhoto by PAUL SMITH on Unsplash你現在是哪一個世代的CI/CD Pipeline?QRcode 已關閉,現場收集到的數據在下⼀⾴。
好的程式與架構是 持續演化來的~Photo by Fancycrave on Unsplash江湖傳⾔你會說 Pipeline嗎?你會說 Pipeline 嗎?
好的程式與架構是 持續演化來的~組織架構、文化、流程、Tech Stack 也是 Photo by Fancycrave on Unsplash江湖傳⾔DevOps Pipeline 當然也是
想像與思考PHPDigitalOceanGitLab CIMonolithMembers: 3Laravel這些條件會產生何種 Pipeline?GitLab.comNAS run Docker
想像與思考 2JAVAAWSJenkinsMonolithMembers: 10Spring這些條件會產生何種 Pipeline?BitbucketVM
想像與思考 3GolangAWSGitLab CIMicroserviceDev Team: 30Go Micro這些條件會產生何種 Pipeline?自架 GitLabGCP AzureArgo CDK8sPlatform Team: 6
想像與思考 4JAVAAWSJenkinsMonolithMembers: 10Spring如果加上更多的條件呢?BitbucketVM軟硬整合?金融業?多產品彼此相依?APP + Web?
QRcodePhoto by Joshua J. Cotten on Unsplash有哪些「因素」會影響CI/CD Pipeline 的規劃?QRcode 已關閉,現場收集到的數據在下⼀⾴。
程式語言部署環境可用 IT 資源組織架構工具決策產品交付方式資安規範團隊文化軟體架構系統架構如何 build?如何 test?產業別 產品類型團隊人數產品的品質要求產品迭代速度產品交付速度
全都是相依關係Photo by Fancycrave on Unsplash有辦法只靠⾃⼰搞定?
Photo by Fancycrave on Unsplash建議?
圖片來源:網路迷因以下分享的內容可能不適⽤於你、你的公司或團隊請⼩⼼服⽤。
Mindset圖片來源:https://www.ghibli.jp/works/laputa/• 是⼀趟漫長的旅程太漫長了~長到都⽣青苔了~
Mindset圖片來源:https://www.ghibli.jp/works/laputa/• 持續改善、迭代是常態第三個 Job 壞了誒?沒事~正常迭代嘍~
Mindset圖片來源:https://www.ghibli.jp/works/laputa/• 跨職能、跨部⾨的溝通協調無可避免部署失敗InfraOpsDev炸鍋的 Prod 環境
The Question Behind the QuestionPhoto by Fancycrave on Unsplash• 退後⼀步,了解全貌
The Question Behind the QuestionPhoto by Fancycrave on Unsplash• 退後⼀步,了解全貌• ⼈、流程、⼯具、資源限制, 權衡多項變因的多重相依關係
The Question Behind the QuestionPhoto by Fancycrave on Unsplash• 退後⼀步,了解全貌• ⼈、流程、⼯具、資源限制, 權衡多項變因的多重相依關係• 找出關鍵瓶頸點, 安排超前 2~3 步的規劃
Communicate, collaborate, align goals圖片來源:https://www.ghibli.jp/works/kazetachinu/• 持續溝通不能少有在⽤ Docker 的舉⼿!
Communicate, collaborate, align goals圖片來源:https://www.ghibli.jp/works/kazetachinu/• 對⿑團隊對於 Pipeline 的期待以後 K8s 就歸你管吧!……
Communicate, collaborate, align goals圖片來源:https://www.ghibli.jp/works/kazetachinu/• 建立共同的 Pipeline 使⽤原則哪個蠢貨在週五按下Deploy 的!你老闆啊
Communicate, collaborate, align goals圖片來源:https://www.ghibli.jp/works/kazetachinu/• 避免落入無效的⾃動化沒有測試,就全⾃動部署,錯了嗎?
First success, Small WinsPhoto by Fancycrave on Unsplash• 搶下灘頭堡• 借⼒使⼒• 越過死亡⼭⾕死亡山谷灘頭堡Small WinSmall Win
Knowledge managementPhoto by Fancycrave on Unsplash• 關鍵知識、決策、技能的• 保存• 交流• 傳承
Photo by Fancycrave on Unsplash更實務或技術⼀點的建議?
釐清是哪個世代的 PipelinePhoto by Fancycrave on Unsplash• 1• 2• 2.5• 3
建立管理相依關係的原則Photo by Fancycrave on Unsplash• Dependency• Package• Release• Artifact• Container• Secret• Infrastructure• Environmentmanagement
⼩處著⼿,持續迭代Photo by Fancycrave on Unsplash• 不要妄想⼀條龍,CI、CD 是可以拆開的• Everything as Code• 良好的軟⼯技巧、架構設計• 模板、模組、繼承• 測試再測試
好多書不讀嗎?Docker或ContainerBooksMore…
Photo by Fancycrave on Unsplash總結 & 回顧
程式語言部署環境可用 IT 資源組織架構工具決策產品交付方式資安規範團隊文化軟體架構系統架構如何 build?如何 test?產業別 產品類型團隊人數產品的品質要求產品迭代速度產品交付速度全都是相依關係有辦法只靠⾃⼰搞定?
實踐 GitOps 的難題?GitOps 解決了什麼新問題?Photo by Camylla Battani on Unsplash兩個延伸題目,留給大家回去思考看看
• Mindset• The Question Behind the Question• First success, Small Wins• Communicate, collaborate, align goals• Knowledge managementPhoto by Fancycrave on Unsplash個⼈⼼得
• 釐清是哪個世代的 Pipeline• 建立管理相依關係的原則• ⼩處著⼿,持續迭代Photo by Fancycrave on Unsplash個⼈⼼得
Photo by Clark Tibbs on UnsplashThank You