4/111 Deploy on ... Fridays No NoNoNO Don't Do tha t Image Credit : https://kknews.cc/pet/pqbxb8.html Font Credit : https://www.dafont.com/theme.php?cat=109 (Defused) 技術在我們手上 世界就在我們手上
45/111 Staging Staging 環境必須與 Production 環境幾乎 相同,這十分困難,否則測試就不準了。 Trying to mirror your staging environment to production is a fool’s errand. Just give up. 嘗試將 Staging 視為 Production 是一個愚蠢的事。放棄吧。 Partial Credit : https://thenewstack.io/honeycombs-charity-majors-go-ahead-test-in-production/
53/111 技術在我們手上 世界就在我們手上 “ If you aren't testing in prod you aren't testing in reality ” 如果不在正式環境測試, 你的測試就不會是真實的 Credit : https://twitter.com/mipsytipsy/status/1147863838647185408 Image Credit : https://store.steampowered.com/app/561970/REALITY/
54/111 技術在我們手上 世界就在我們手上 “ Dev will match Prod, if you develop on production ” 如果在正式環境上進行開發, 開發環境就會與正式環境相稱 Credit : Blue is the new green (2019-03-26).pdf Image Credit : https://tw.voicetube.com/videos/62711
55/111 Your aim won’t be perfect, control over the blast radius. 你的瞄準並不完美, 請控制好爆炸半徑。 Image Credit : https://www.behance.net/gallery/57558081/FREE-BUSINESS-ICONS Progressive Deployment
56/111 Credit : https://thenewstack.io/the-rise-of-progressive-delivery-for-systems-resilience/ Image Credit : https://www.trisignup.com/Race/24568/Sponsor/94608 Progressive deployment is continuous deploy with fine-grained control over the blast radius. 漸進式部署是對爆破半徑進行細部控制的連續部署。 Progressive Deployment
57/111 Credit : https://thenewstack.io/the-rise-of-progressive-delivery-for-systems-resilience/ Image Credit : https://support.google.com/optimize/answer/7012154?hl=en Deploying a service is not that same as activating it for all users. 部署一個服務,未必需要讓所有使用者皆同時生效。 Progressive Deployment
62/111 Feature Flag 01 所有程式皆為部署,並可控制開關,減少整合問題 All code is deployed, but control exposure, reduces integration issue. 02 控制細緻度可至特定層級或是開發分支 Flags provide runtime control down to individual user. 03 開發者可以增加或刪除功能,無需再次部署 Users can be added or removed with no redeployment 04 暗啟動 Enables dark launch Credit : Progressive Deployment, Experimentation, Multitenancy, No Downtime, Cloud Security (2018-02-23).pdf Image Credit : https://opensource.com/article/18/2/feature-flags-ring-deployment-model
Cost in Time 時間成本 hours mins ~ hour secs ~ mins Applicability 適用性 2% 8% 90% Toggle Feature Flag ReDeploy Previous Version Rollback Revert Commit Incident Recovery 事件恢復
67/111 技術在我們手上 世界就在我們手上 Group = Beta Group = Normal If ( group = “beta” ) { ... } else { ... } Beta Normal By User Group Time URI IP Address User Group
71/111 技術在我們手上 世界就在我們手上 Story Mapping Code Test Acceptance Deploy Release Done #19 Fix Login Bug #20 Fix Email Bug #21 Perf. Tuning #17 Sort By Date #18 Filter By Group #22 German i18n
73/111 技術在我們手上 世界就在我們手上 Story Mapping Code Test Acceptance Deploy Release Done #19 Fix Login Bug #20 Fix Email Bug #21 Perf. Tuning #17 Sort By Date Flag#3 #18 Filter By Group Flag#4 #22 German i18n Flag#5 #17 Sort By Date Flag#3
75/111 01 提交程式至主幹可能會影響其他功能 Commit code on trunk may affects other features. 02 未完成的功能可能也會部署,如果配置有誤可能將未完成的功能開啟 Unfinished features may be deployed, and turned on if the configuration is incorrect. Image Credit : https://opensource.com/article/18/2/feature-flags-ring-deployment-model Feature Flag
86/111 技術在我們手上 世界就在我們手上 Image Credit : https://jaxenter.com/deployment-best-practices-172662.html Code Push ➡ 5 mins ⬅ Data Sync ? mins Code Push ➡ 15 mins Code Push ➡ 15 mins ⬅ Data Sync ? mins ⬅ Data Sync ? mins Easy Hard