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

Value Driven DevOps Team

Avatar for KAKEHASHI KAKEHASHI
April 17, 2024

Value Driven DevOps Team

Avatar for KAKEHASHI

KAKEHASHI

April 17, 2024
Tweet

More Decks by KAKEHASHI

Other Decks in Business

Transcript

  1. 椎葉 光行(しいば みつゆき) • 新規事業のプロダクトエンジニア ◦ バックエンド・フロントエンド・インフラを見てる ◦ 軸足はバックエンド •

    経歴 ◦ 楽天グループ株式会社(30代) ◦ CircleCI合同会社(1年) ◦ 株式会社カケハシ(2023年4月〜) • 大阪の自宅からフルリモートで仕事をしてる ◦ 分割キーボードのMoonlander気に入ってる→ X: @bufferings
  2. © KAKEHASHI Inc. トランクベース開発 mainブランチ(トランク = 幹)に細かく修正を加えていくブランチモデル 参照 - https://trunkbaseddevelopment.com/

    (アクセス日 2024-04-07) mainに直接コミットしていくスタイル 寿命の短いフィーチャーブランチを作って プルリクエストでマージしていくスタイル
  3. © KAKEHASHI Inc. トランクベース開発 mainブランチ(トランク = 幹)に細かく修正を加えていくブランチモデル 参照 - https://trunkbaseddevelopment.com/

    (アクセス日 2024-04-07) こっちでやってるよ→ 寿命の短いフィーチャーブランチを作って プルリクエストでマージしていくスタイル
  4. © KAKEHASHI Inc. 意識してたこと 仮説検証ループを すばやく回したい! 小さな変更を すばやくたくさん 届けたい 変化にすばやく

    対応したい 本番環境への デプロイを 日常にしたい ブランチのマージに 時間を使いたくない
  5. © KAKEHASHI Inc. 意識してたこと 仮説検証ループを すばやく回したい! 小さな変更を すばやくたくさん 届けたい 変化にすばやく

    対応したい 本番環境への デプロイを 日常にしたい ブランチのマージに 時間を使いたくない ので、トランクベース開発を参考にして仕組みを作った ら、周りから見てもトランクベース開発になってた!わーい!
  6. © KAKEHASHI Inc. (1)CIとCDを分けている なぜ? • 本番環境にデプロイする前にステージング環境へデプロイしたい • でも、あんまり複雑なブランチモデルにはしたくない •

    それに、ステージング環境と本番環境で同じコンテナイメージを使いたい → CIとCDを分けると良さそう 思いがけず便利 • プルリクエストの履歴がデプロイの履歴になる • デプロイのプルリクエストをリバートするとロールバックになる
  7. © KAKEHASHI Inc. (2)フィーチャーフラグを使っている 極力使わない • 使わなくていいなら使わない ◦ 最初から全ユーザーに使ってもらって大丈夫ならそうする •

    用途を限定 ◦ デプロイ時に機能を隠すためだけに使う ◦ ユーザーによる機能の出し分けには使わない(恒久利用しない) • 削除を常に考える ← とても大切 ◦ 実装前に「どうフラグを削除するか」をPdMと話し合う ◦ 全ユーザーに公開したらすぐにフラグに関係するコード分岐を削除する
  8. © KAKEHASHI Inc. (3−2)デプロイされる順番に気をつける これも重要 • モノリポでデプロイを自動化しているので ◦ 複数のアプリケーションが同時に変更・デプロイされる •

    CDではデプロイの順番の細かい制御をしていない ◦ それによってデプロイのフローをシンプルにしている • だから、タスク分割の段階でデプロイされる順番に気をつけている ◦ デプロイの途中で現行バージョンと新バージョンが混ざっても 正しく動くように分割してデプロイする必要がある シンプルさを大切にしてるよ
  9. © KAKEHASHI Inc. インセプションデッキ(一部) われわれはなぜここにいるのか • XX事業の推進へ貢献するため • プロダクトやチームの枠を超えたプロフェッショナル集団であるため •

    上記のためには、手段を問わない エレベーターピッチ • 我々は、事業拡大に向けて患者さん/薬局/医薬品卸/製薬会社/国といった各ス テークホルダーへの提供価値を最大化します。 • 具体的には、不確実性が高い中で、テクノロジーとドメインに関する深い知識や経験を もって、チーム内でも高速に仮説検証のサイクルを回しながら、そこで得た学びを社内外 に還元していきます
  10. © KAKEHASHI Inc. インセプションデッキ(一部) われわれはなぜここにいるのか • XX事業の推進へ貢献するため • プロダクトやチームの枠を超えたプロフェッショナル集団であるため •

    上記のためには、手段を問わない エレベーターピッチ • 我々は、事業拡大に向けて患者さん/薬局/医薬品卸/製薬会社/国といった各ス テークホルダーへの提供価値を最大化します。 • 具体的には、不確実性が高い中で、テクノロジーとドメインに関する深い知識や経験を もって、チーム内でも高速に仮説検証のサイクルを回しながら、そこで得た学びを社内外 に還元していきます
  11. © KAKEHASHI Inc. やりたいことはある 仮説検証ループを すばやく回したい! 小さな変更を すばやくたくさん 届けたい 変化にすばやく

    対応したい 本番環境への デプロイを 日常にしたい ブランチのマージに 時間を使いたくない
  12. © KAKEHASHI Inc. 毎日、朝会の後にプチリファインメント ユーザー ストーリー ユーザー ストーリー ユーザー ストーリー

    チームでユーザーストーリーをブラッシュアップして、プランニングするころには 十分に小さなサイズのユーザーストーリーになっている
  13. © KAKEHASHI Inc. インセプションデッキ(一部) われわれはなぜここにいるのか • XX事業の推進へ貢献するため • プロダクトやチームの枠を超えたプロフェッショナル集団であるため •

    上記のためには、手段を問わない エレベーターピッチ • 我々は、事業拡大に向けて患者さん/薬局/医薬品卸/製薬会社/国といった各ス テークホルダーへの提供価値を最大化します。 • 具体的には、不確実性が高い中で、テクノロジーとドメインに関する深い知識や経験を もって、チーム内でも高速に仮説検証のサイクルを回しながら、そこで得た学びを社内外 に還元していきます
  14. © KAKEHASHI Inc. ふりかえるとベストプラクティスだったもの • トランクベース開発 ◦ CI/CDの分離 ◦ ここ一番でのフィーチャーフラグ

    ◦ 制約を受け入れる(WIP制限など) • 5:2:3フォーメーション • モビング • ペア中心のモビング • チーム全員での目線合わせ