SlideShare 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
主角您終於回來了
圖片來來源:https://martinfowler.com/bliki/FeatureToggle.html
開關基本概念
使⽤者 開關 結果 / 開或關
調整上線順序
功能 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

What's hot (20)

PDF
Android起動周りのノウハウ
chancelab
 
PDF
デザイナのためのGit入門
dsuke Takaoka
 
PDF
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
 
PDF
SwiftのDI方法につい て最近考えてた話
Yahoo!デベロッパーネットワーク
 
PPTX
Git and Github Session
GoogleDevelopersStud1
 
PPTX
Chunked encoding を使った高速化の考察
Yoshiki Shibukawa
 
PPTX
Integrating Service Mesh with Kubernetes-based connected vehicle platform
Jun Kai Yong
 
PDF
Study HashiCorp Products - Terraform 実行環境の決定版、Terraform Cloudの機能全部見せます_.pdf
Takayuki Kabu
 
KEY
Introduction to Git
Lukas Fittl
 
PDF
React(TypeScript) + Go + Auth0 で実現する管理画面
KentaEndoh
 
PDF
Creative Branching Models for Multiple Release Streams
Atlassian
 
PDF
Jenkins Pipelines
Steffen Gebert
 
PDF
Git-flow workflow and pull-requests
Bartosz Kosarzycki
 
PDF
ネットワークコンフィグ分析ツール Batfish との付き合い方
akira6592
 
PDF
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
naoki koyama
 
PDF
初心者 Git 上手攻略
Lucien Lee
 
PDF
寫給大家的 Git 教學
littlebtc
 
PDF
いつやるの?Git入門
Masakazu Matsushita
 
PDF
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
 
PPTX
Introduction git
Dian Sigit Prastowo
 
Android起動周りのノウハウ
chancelab
 
デザイナのためのGit入門
dsuke Takaoka
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
 
SwiftのDI方法につい て最近考えてた話
Yahoo!デベロッパーネットワーク
 
Git and Github Session
GoogleDevelopersStud1
 
Chunked encoding を使った高速化の考察
Yoshiki Shibukawa
 
Integrating Service Mesh with Kubernetes-based connected vehicle platform
Jun Kai Yong
 
Study HashiCorp Products - Terraform 実行環境の決定版、Terraform Cloudの機能全部見せます_.pdf
Takayuki Kabu
 
Introduction to Git
Lukas Fittl
 
React(TypeScript) + Go + Auth0 で実現する管理画面
KentaEndoh
 
Creative Branching Models for Multiple Release Streams
Atlassian
 
Jenkins Pipelines
Steffen Gebert
 
Git-flow workflow and pull-requests
Bartosz Kosarzycki
 
ネットワークコンフィグ分析ツール Batfish との付き合い方
akira6592
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
naoki koyama
 
初心者 Git 上手攻略
Lucien Lee
 
寫給大家的 Git 教學
littlebtc
 
いつやるの?Git入門
Masakazu Matsushita
 
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
 
Introduction git
Dian Sigit Prastowo
 

Similar to 2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎? (9)

PDF
CICD Workshop 20180922
Earou Huang
 
PPTX
GIT實務操作與理論
鵬 大
 
PDF
Continuous Delivery: automated testing, continuous integration and continuous...
Jimmy Lai
 
PDF
Git 版本控制系統 -- 從微觀到宏觀
Wen-Tien Chang
 
PPT
The way to continuous delivery
Qiao Liang
 
PPT
Version control0221
jianhongciou
 
PDF
導讀持續交付 2.0 - 談當代軟體交付之虛實融合
Rick Hwang
 
PDF
Bitbucket pipeline CI
Zero Huang
 
PDF
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC
 
CICD Workshop 20180922
Earou Huang
 
GIT實務操作與理論
鵬 大
 
Continuous Delivery: automated testing, continuous integration and continuous...
Jimmy Lai
 
Git 版本控制系統 -- 從微觀到宏觀
Wen-Tien Chang
 
The way to continuous delivery
Qiao Liang
 
Version control0221
jianhongciou
 
導讀持續交付 2.0 - 談當代軟體交付之虛實融合
Rick Hwang
 
Bitbucket pipeline CI
Zero Huang
 
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC
 
Ad

More from Miles Chou (6)

PDF
Continuous Delivery - 敏捷開發的最後一哩路
Miles Chou
 
PPTX
Docker Compose
Miles Chou
 
PPTX
Docker 淺入淺出
Miles Chou
 
PPTX
Rancher 快速打造叢集的解決方案
Miles Chou
 
PDF
Docker Build
Miles Chou
 
PPTX
Rancher: 建立你的牧場艦隊
Miles Chou
 
Continuous Delivery - 敏捷開發的最後一哩路
Miles Chou
 
Docker Compose
Miles Chou
 
Docker 淺入淺出
Miles Chou
 
Rancher 快速打造叢集的解決方案
Miles Chou
 
Docker Build
Miles Chou
 
Rancher: 建立你的牧場艦隊
Miles Chou
 
Ad

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