狠狠撸

狠狠撸Share a Scribd company logo
FEATURE TOGGLE
別再開 BRANCH 了,来试试
ABOUT MILES
CURRENT
Senior Developer @ 104 Corp.
Volunteer @ DevOps Taiwan
TAG
PHP, Docker, DevOps
jangconan@gmail.com
MilesChou
這場分享會聊聊下?這些主題
? Continuous Delivery
? Trunk-based Development
? Feature Toggle
? Coding Dojo
為什麼要寫程式?
耍廢不是很好嗎
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
? 為了了?生活?
? 為了了興趣?
? 為了了?人?生的远?大理理想?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
為了价值
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
CONTINUOUS DELIVERY
? 持續交付價值給使?用者
? 更更快获得使?用者的回馈
怎样最快?
?先先…
然后再…
接着就会持续收到…
解決不了了問題
就解決製造問題的?人
-靠北麥爾斯
保护好程式
GIT FLOW
? develop 開 feature branch
? feature 合 develop branch
? develop 開 release branch
? release 合 master branch
到处都要合併
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
主要分?互相合併
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
開分? = 挖陷阱
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
GIT 就是要開分?啊,不然要怎麼辦
TRUNK-BASED
DEVELOPMENT
世界上沒有什什麼事是流程無法解決的
如果有,那就再定義?一個
-幹話麥爾斯
— Frank Compagner, Guerrilla Games
BRANCHES CREATE DISTANCE
BETWEEN DEVELOPERS
?AND WE DO NOT WANT THAT
"
"
DISTANCE
COMPONENT A
COMPONENT B
COMPONENT A + B
DISTANCE
? 合併後會破壞意想不到的東?西
? 很難合併
? 合併前,無法發現是否有重?工
? 合併前,無法發現程式是否不相容
非 TBD
圖片來來源:https://trunkbaseddevelopment.com/
使? TBD
圖片來來源:https://trunkbaseddevelopment.com/
TRUNK-BASE DEVELOPMENT 的實踐
? 程式隨時可發佈
? 頻繁提交、簽出、同步程式碼
? 承上,commit 的粒度通常很?小
? 必須做 code review
? 串串接 CI,若若 build 失敗,將會?自動 rollback
? PR 維持的時間通常不長
有誰在? TBD?
? Google
? Facebook
? Microsoft Office
它很简单,可是很难
哪裡簡單?
? 任何 commit 都可以佈署
? commit 粒度?小,code review 簡單
? 只有?一個 master 分?支
哪裡難?
? 開發?人員的?心態與專業能?力力要求?高
? 必須要有?自動化測試
? 決定適當?大?小的 commit
? commit 順序與上線順序不?一定相同
所以我說
那個上線順序要怎麼辦呢?
回顧 TBD 這張圖
圖片來來源:https://trunkbaseddevelopment.com/
上線順序不能亂改
那改 COMMIT 順序好了
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
COMMIT 順序不能亂改
那只能改程式了
FEATURE TOGGLE
主角您終於回來了
图片来来源:丑迟迟辫蝉://尘补谤迟颈苍蹿辞飞濒别谤.肠辞尘/产濒颈办颈/贵别补迟耻谤别罢辞驳驳濒别.丑迟尘濒
開關基本概念
使?者 開關 結果 / 開或關
调整上线顺序
功能 AB 已完成
使?者 開關
功能 A
功能 B
功能 A 先上線
使?者 開關
功能 A
功能 B
功能 B 先上線
使?者 開關
功能 A
功能 B
功能 AB 摻在?起上線
使?者 開關
功能 A
功能 B
案例分享
旧版登入?
新版登入?
實際狀況
? 2019/1/16 - 開 100%
? 2019/1/9 - 開 50%
? 2019/1/2 - 開 10%
? 2018/12/26 - 上線開 0%
實際狀況
? 2019/1/16 - 開 100%
? 2019/1/9 - 開 50%
? 2019/1/2 - 開 10%
? 2018/12/26 - 上線開 0%
? 2018/11/7 - WIP 程式已上線
不同產品的登入?控制
? 2019/5/2 - 全產品開啟
? 2019/3/13 - 會員中?心開啟
? 2019/1/16 - 104 ?人?力力銀?行行開啟
對開關再做點?腳
104 ??銀?
其他產品
流量控制開關
OFF FOREVER
結果
OFF
從 COOKIE 獲得前?次的狀態
使?者 開關 前?次的結果
COOKIE
設定的優先順序
機器設定 ENV 設定 預設設定
絕對設定 從外載入 執?開關
設定檔
設定值
总结
总结?下
? 開發上,Feature toggle 是 CD 或 TBD 的?支援功能
? 維運上,Feature toggle 是?金金絲雀佈署的核?心概念念
? 業務上,Feature toggle 是 A/B Testing 或設定功能的核?心功能
業配套件
? https://github.com/MilesChou/toggle
? https://github.com/MilesChou/toggle-simplify
參考網站
? https://trunkbaseddevelopment.com/
? https://featureflags.io/

More Related Content

2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?