DevOps高階工程技術實踐
===
> DevOpsDays Taipei 2022 講師版
> TW MVC .net Conf Mini 2022

* 開場,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 現場調查
照例,放上本場次的即時現場調查:


### Shorten Your Cycle Time
因為
* 這是敏捷的承諾(頻繁交付、盡快取得反饋、持續改善…etc.)
* 沒有人不喜歡快速交付(只要可以兼顧品質、安全性、然後又不會額外花錢)
* 所有User都喜歡變(這是個善變的世界)
* 盡早(且持續)交付價值
### 分支策略


* 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 ~
### 如果全自動佈署到正式機…
👉如何避免品質不好的程式碼?
👉如何確保沒有安全性問題?

### 什麼是CI(持續整合)?
👉CI主要的任務是促進頻繁的整合,主要產出是高品質、高安全性的 Artifacts

##### CI Pipeline中該有的掃描
> CI Pipeline YT Video : https://youtu.be/uXhcrV15B7U
> package scan YT Video : https://youtu.be/-r2z2J06Tyw

##### PR-CI Pipeline
> PR Pipeline YT Video
> https://youtu.be/nakW7EvCuvI

##### 自動化UI測試與單元測試
> 自動化 UI test YT video: https://youtu.be/VBtvenY5tmk
> Unit Test YT Video: https://youtu.be/dcRwBbdEow0


### CD(持續佈署)

該同一份程式碼產生的同一份Artifact佈署不同的環境嗎?
😣不同環境的設定檔怎麼辦?
😣寫到一半的功能該如何處裡?
😣寫完但還不想上正式機的功能又該怎麼辦?
#### Feature Toggle
👉就一個後台開關
👉動態決定開啟或關閉某些功能
👉在程式碼當中透過 if…then 判斷敘述來配合
👉具有多種有趣玩法
* 可以 開 和 關
* 可以針對人或群組開關
* 可以針對一定比例的人或群組開關
* 可以在特定時間開關
* Feature Toggle的雲端服務有…
* Azure App Configuration
* AWS AppConfig
* LaunchDarkly
> feature tggle YT Video:
> https://youtu.be/dJngxz2E-WU

### Approval & Release Gate





### 快速交付會不會影響品質
頻繁交付確實讓測試變得極具挑戰,你再也沒有時間測完所有東西


### 基於數據的持續改善

### 小結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.

講師聯絡方式
===

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://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://line.me/R/ti/p/%40dfe5542k)
###### tags: `課綱` `DevOpsDays Taipei 2022`