Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PRマージのあらゆるブロッキングを回避する技術 / trunk-based developme...

sora_ichigo
April 24, 2024
770

PRマージのあらゆるブロッキングを回避する技術 / trunk-based development tips

https://gotanda-rb.connpass.com/event/315058/
2024/04/024「gotanda.rb #57」の資料です。

本発表では、トランクベース開発における基本的な考え方とプラクティスを紹介しました。

sora_ichigo

April 24, 2024
Tweet

More Decks by sora_ichigo

Transcript

  1. © 2024 Wantedly, Inc. ⾃⼰紹介 名前 市古 空 (Sora Ichigo)

    所属 • ウォンテッドリー株式会社 • バックエンドエンジニア • DevOps 推進チームリード SNS • X: @igsr5_
  2. © 2024 Wantedly, Inc. よく⽐較される 2 つの開発スタイル (A) リリースブランチを切って変更を集約する (B)

    リリースブランチを切らずに常に全ての変更を本番に出す トランクベース開発は (B) を指す
  3. © 2024 Wantedly, Inc. トランクベース開発 (B) の利点 • 変更1回あたりの認知負荷の低減 •

    テスト容易性の向上 • 本番環境から得られるフィードバックの最⼤化 • 変更1回あたりのインシデントリスクの低減 • 頻繁なコンフリクトの予防
  4. © 2024 Wantedly, Inc. 具体例 • QA テスト、デザイナーや PdM による最終確認など

    • まだユーザーには⾒せたくないケース • 関連サービスの実装が追いついていないケース • ... 受け⼊れ条件を満たしている か確認したい! 受け⼊れテストが終わるまで PRマージは待とう
  5. © 2024 Wantedly, Inc. 基本となる考え⽅ マージできない外部要因は “何かしらの条件分岐“ を実装することで⼤抵 回避できる •

    環境変数による分岐 • Feature Flag による分岐 • 認証ユーザーによる分岐 • Basic Auth による分岐 • ...
  6. © 2024 Wantedly, Inc. 適⽤例 • 「この変更はまだ PdM チェックが終わっていないから、、、」 ◦

    → 本番環境のみ旧実装を出せばマージ可能 • 「この変更は関連マイクロサービスの実装を待たないと、、」 ◦ → Feature Flag で新実装を隠蔽すればマージ可能 次ページから詳しく解説します
  7. © 2024 Wantedly, Inc. 何が問題か PR ⽣存期間が⻑くなることによる⽣産性低下 • いつまでも未マージの PR

    がチームの認知負荷を増加させる • 特定ブランチをデプロイしないと QA テストが⾏えない • ⾒つかった問題の修正が同じ PR に積まれて⾒通しが悪くなる • 最新 master をいちいち取り込む⼿間がかかる
  8. © 2024 Wantedly, Inc. どうするか. 案 󰢏 エンジニア PdM コードレビューまで完了!

    受け⼊れ条件を満たしている か確認したい! Feature Flag で変更を 切り替え可能にして PR マージしよう
  9. © 2024 Wantedly, Inc. ウォンテッドリーと Feature Flag こんなコードを書くと 内製 Chrome

    Extension から 戻り値を override 可能になる リリース‧デプロイ戦略を⽀える技術 | Wantedly Engineering Handbook
  10. © 2024 Wantedly, Inc. ウォンテッドリーと Feature Flag Feature Flag が

    true の時のみ 新実装を出すようにすれば 安全に PR マージできる Chrome Extension は⾮エンジニアでも触れるので QA テストも簡単
  11. © 2024 Wantedly, Inc. もっと知りたい • DORA | DevOps Capabilities:

    Trunk-based Development • リリース‧デプロイ戦略 | Wantedly Engineering Handbook • リリース‧デプロイ戦略を⽀える技術 | Wantedly Engineering Handbook