Slide 1

Slide 1 text

Feature Toggle による 安定的リリース

Slide 2

Slide 2 text

自己紹介 名前: 伊吹祐剛 技術: TypeScript, Go, Google Cloud, GraphQL 興味: チームビルディング、スクラム、英語 仕事: セキュリティサービス開発

Slide 3

Slide 3 text

目次 1. GitHub Flow開発について 2. トランクベース開発について 3. Feature Toggleについて 4. まとめ

Slide 4

Slide 4 text

GitHub Flowについて 1. 構造がシンプル 2. デプロイする時は main ブランチを対象にする main feature branch feature branch Staging Production UAT

Slide 5

Slide 5 text

GitHub Flowについて 1. 構造がシンプル 2. デプロイする時は main ブランチを対象にする main feature branch feature branch Staging Production コードが異なる可能性がある

Slide 6

Slide 6 text

トランクベース開発について GitHub Flow により完結化したブランチ構成に対して より細かい粒度で main にマージしていく開発スタイル。 - デプロイペース - 毎週、毎日 - main は常にリリースできる状態にする

Slide 7

Slide 7 text

トランクベース開発のジレンマ 常にリリースができる状態で main を保つ必要がある。 だが、トランクベース開発のコンセプトとして、 一つ一つの PR などの粒度を小さく細かくマージしていき、 コードを新鮮な状態にしておかなければいけない。 しかし、開発途中のものをリリースに取り込みたくない。

Slide 8

Slide 8 text

トランクベース開発のジレンマ 常にリリースができる状態で main を保つ必要がある。 だが、トランクベース開発のコンセプトとして、 一つ一つの PR などの粒度を小さく細かくマージしていき、 コードを新鮮な状態にしておかなければいけない。 しかし、開発途中のものをリリースに取り込みたくない。 そこで!

Slide 9

Slide 9 text

トランクベース開発のジレンマ 常にリリースができる状態で main を保つ必要がある。 だが、トランクベース開発のコンセプトとして、 一つ一つの PR などの粒度を小さく細かくマージしていき、 コードを新鮮な状態にしておかなければいけない。 しかし、開発途中のものをリリースに取り込みたくない。 そこで! Feature Toggle だ!!

Slide 10

Slide 10 text

Feature Toggle とは 何者か - 開発途中のものを隠しておくためのもの - トランクベース開発と相性が良く、開発を促進する 何が嬉しいか - 公開、非公開の制御を GUIで制御できる - 特定の範囲のみに公開などが可能になる

Slide 11

Slide 11 text

Feature Toggle サービス - DevCycle - LanuchDarkly - Unleash - Optimizely - VWO OSSとして提供があり、セルフホスティングできるものもある。

Slide 12

Slide 12 text

特徴① 主な Toggle 種別 - ON/OFF のbool切り替え - バージョンの管理 (v1, v2, v3) - 文字列による切り替え(‘beforeXX’, ‘merged’, ‘afterXX’)

Slide 13

Slide 13 text

特徴② - マルチテナントで活躍 - 特定のテナントに機能の提供 - 特定のユーザーに機能の提供 - GUIで分かりやすい - ボタン一つで切り替えできる分かりやすさ - リリース日まで機能の非公開などが可能

Slide 14

Slide 14 text

特徴③ - 環境毎に分けられる - dev、staging、prdなどの環境毎の設定ができる - 一つのフラグを作ることで全ての環境に対して作られたりする

Slide 15

Slide 15 text

まとめ Feature Toggle によって - mainブランチをベースにしたシンプル運用による安定的リリースができる - 対象を絞ったリリースができる - 環境での機能の切り替えができる 是非、これからの開発にFeature Toggleを取り入れて、血行の良い開発をしていきましょう!