DevOps高階工程技術實踐 === > DevOpsDays Taipei 2022 講師版 > TW MVC .net Conf Mini 2022 ![](https://hackmd.io/_uploads/rkwUPbr8o.png) * 開場,Agile Summit 2022 你有來嗎? 送... ### Agile Summit 2022的小結論 * 沒有技術能力支撐的開發團隊,就如同沒有體力支撐的球隊 * DevOps成就了敏捷的承諾 * 沒有技術能力和工程方法支撐的敏捷,只能凸顯問題。 ref: https://www.facebook.com/DotNetWalker/posts/pfbid0xkHmfNSms9tEqzbYfMUm64UwJso7PjpbAwxybwXmkHMkW1dEWBGVYBF49E3qUq5Gl ### 故事 * CI/CD? 自動化? DevOps究竟是或不是什麼? * 人們缺少什麼,往往就會覺得什麼很重要~ * ref: https://www.facebook.com/DotNetWalker/posts/pfbid02ZvzQBf4ZDW8edbRFofUGbEjkEzxt1sfLsTYw2A8ykUSjJPJ8RbEydQsFDMtvLr3Zl ### DevOps 現場調查 照例,放上本場次的即時現場調查: ![](https://i.imgur.com/qI5p34m.png) ![](https://i.imgur.com/4sHvMO2.png) ### Shorten Your Cycle Time 因為 * 這是敏捷的承諾(頻繁交付、盡快取得反饋、持續改善…etc.) * 沒有人不喜歡快速交付(只要可以兼顧品質、安全性、然後又不會額外花錢) * 所有User都喜歡變(這是個善變的世界) * 盡早(且持續)交付價值 ### 分支策略 ![](https://i.imgur.com/GgGwMT6.png) ![](https://i.imgur.com/XBuSZe1.png) * What is continuous integration? (Atlassian) https://www.atlassian.com/continuous-delivery/continuous-integration * Continuous Integration(Martin Fowler) https://martinfowler.com/articles/continuousIntegration.html * Git Flow Is A Bad Idea (Dave Farley) https://www.youtube.com/watch?v=_w6TwnLCFwA >The fundamental assumption of CI is that there's only one interesting version, the current one. ~ the C2 wiki ~ ### 如果全自動佈署到正式機… 👉如何避免品質不好的程式碼? 👉如何確保沒有安全性問題? ![](https://upload.cc/i1/2022/09/14/NvsE0k.gif) ### 什麼是CI(持續整合)? 👉CI主要的任務是促進頻繁的整合,主要產出是高品質、高安全性的 Artifacts ![](https://i.imgur.com/X6H3Otz.png) ##### CI Pipeline中該有的掃描 > CI Pipeline YT Video : https://youtu.be/uXhcrV15B7U > package scan YT Video : https://youtu.be/-r2z2J06Tyw ![](https://i.imgur.com/bQQMpE9.jpg) ##### PR-CI Pipeline > PR Pipeline YT Video > https://youtu.be/nakW7EvCuvI ![](https://i.imgur.com/bjbqq5W.png) ##### 自動化UI測試與單元測試 > 自動化 UI test YT video: https://youtu.be/VBtvenY5tmk > Unit Test YT Video: https://youtu.be/dcRwBbdEow0 ![](https://i.imgur.com/orS0uMx.png) ![](https://i.imgur.com/1S5Ht2J.jpg) ### CD(持續佈署) ![](https://i.imgur.com/ienyHz4.png) 該同一份程式碼產生的同一份Artifact佈署不同的環境嗎? 😣不同環境的設定檔怎麼辦? 😣寫到一半的功能該如何處裡? 😣寫完但還不想上正式機的功能又該怎麼辦? #### Feature Toggle 👉就一個後台開關 👉動態決定開啟或關閉某些功能 👉在程式碼當中透過 if…then 判斷敘述來配合 👉具有多種有趣玩法 * 可以 開 和 關 * 可以針對人或群組開關 * 可以針對一定比例的人或群組開關 * 可以在特定時間開關 * Feature Toggle的雲端服務有… * Azure App Configuration * AWS AppConfig * LaunchDarkly > feature tggle YT Video: > https://youtu.be/dJngxz2E-WU ![](https://i.imgur.com/UY37Ikv.png) ### Approval & Release Gate ![](https://i.imgur.com/TCSgu9L.png) ![](https://i.imgur.com/V3XzbrV.png) ![](https://i.imgur.com/fLvWGU6.png) ![](https://i.imgur.com/K9yjhp9.png) ![](https://i.imgur.com/WWrS3Rs.png) ### 快速交付會不會影響品質 頻繁交付確實讓測試變得極具挑戰,你再也沒有時間測完所有東西 ![](https://i.imgur.com/Kn0Br4O.jpg) ![](https://i.imgur.com/D8kKJE5.png) ### 基於數據的持續改善 ![](https://i.imgur.com/k4I82Wa.png) ### 小結A 我們實現了甚麼? 👉以數位儀表板清晰的掌握專案狀況 👉頻繁持續的整合、每天合併回主線、降低程式碼隱藏 👉透過PR, Code Review或Pair Programming來提升程式碼品質、促進學習 👉透過PR/CI Pipeline、進行自動化單元測試、程式碼分析、套件掃描,以提升品質與安全 👉自動佈署到測試環境,可進行自動化UI測試、滲透測試 👉透過B/G佈署實現正式環境的Zero-Downtime ### 小結B 👉DevOps成就了敏捷的承諾 👉以終為始、持續鍛鍊(自己 & 自己的團隊) 👉使用數據、持續改善 ### 總結 💪DevOps May Hurt at First 💪if something is painful or difficult, do it more often. ![](https://i.imgur.com/8xeOTUf.png) 講師聯絡方式 === ![](https://i.imgur.com/0igtjv1.png) Email: david@isrock.com.tw 🔥FB粉專:https://www.facebook.com/DotNetWalker 🔥YouTube頻道:https://wwjd.tw/809k364 (請按讚、訂閱、小鈴鐺、好人一生平安🙏🙏🙏) Udemy線上課程:https://wwjd.tw/282k339 實體課程:https://www.studyhost.tw/NewCourses 電子書: https://www.pubu.com.tw/search?condition=fl_ahr%3D%E8%91%A3%E5%A4%A7%E5%81%89_and_fl_chid%3D 最新著作: ![](https://i.imgur.com/uF8uD6D.png) https://www.tenlong.com.tw/products/9786263241251?list_name=b-r7-zh_tw 其他著作: https://search.books.com.tw/search/query/cat/1/adv_author/1/key/%E8%91%A3%E5%A4%A7%E5%81%89 [![](https://hackmd.io/_uploads/SJCIVbBUj.png)](https://line.me/R/ti/p/%40dfe5542k) ###### tags: `課綱` `DevOpsDays Taipei 2022`