21. 21/81
Code Test Operate
Continuous Integration / 持續整合
Continuous Delivery / 持續交付
Continuous Deployment / 持續部署
DevOps / SRE
Commit Dev Test Staging Test Deploy Prod
Continuous Deployment
Local Dev Staging Prod
Environments
Chaos
22. 22/81
Code Test Operate
Continuous Integration / 持續整合
Continuous Delivery / 持續交付
Continuous Deployment / 持續部署
DevOps / SRE
Commit Dev Test Staging Test Deploy Prod
Continuous Deployment
Local Dev Staging Prod
Environments
Chaos
23. 23/81
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/
24. 24/81
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/
36. 36/81
Code Operate
Continuous Integration / 持續整合
Continuous Delivery / 持續交付
Continuous Deployment / 持續部署
DevOps / SRE
Commit Dev Test Staging Test Deploy Prod
Continuous Deployment
Local Dev Staging Prod
Environments
Chaos
37. 37/81
Only Feature FlagNo Deploy (artifact)
No Staging
No QA / CI
No Visible container
No Test Locally
Only Code CommitNo Acceptance
38. Cost in Time
hours
mins ~ hour
secs
~
mins
Applicability
2%
8%
90%
Toggle
Feature Flag
ReDeploy
Previous Version
Rollback
Revert Commit
Incident Recovery
39. 39/81
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
40. 40/81
Feature Flag
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
41. 41/81
Only Feature Flag
Only Progressive Deployment
No Deploy (artifact)
No Staging
No QA / CI
No Visible container
No Test Locally
Only Code CommitNo Acceptance
42. 42/81
Only Feature Flag
Only Progressive Deployment
Only Observability
No Deploy (artifact)
No Staging
No QA / CI
No Visible container
No Test Locally
Only Code CommitNo Acceptance
43. 43/81
Only Feature Flag
Only Progressive Deployment
And Test in Production
Only Observability
No Deploy (artifact)
No Staging
No QA / CI
No Visible container
No Test Locally
Only Code CommitNo Acceptance
51. 51/81
Only Feature Flag
Only Progressive Deployment
And Test in Production
Only Observability
No ACCEPTANCE
No Deploy (artifact)
No Staging
No QA / CI
No Visible container
No Test Locally
Only Code Commit
56. 56/81
How do you
go fast
And
zero downtime
Font Credit: https://www.dafont.com/theme.php?cat=109 (Defused)
57. 57/81
Your aim won’t be perfect,
control over the blast radius.
你的瞄準並不完美,
請控制好爆炸半徑。
Image Credit: https://www.behance.net/gallery/57558081/FREE-BUSINESS-ICONS
Progressive Deployment
79. 79/81
Only Feature Flag
Only Progressive Deployment
And Test in Production
Only Observability
No ACCEPTANCE
No Deploy (artifact)
No Staging
No QA / CI
No Visible container
No Test Locally
Only Code Commit