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

Value Driven DevOps Team

kakehashi
April 17, 2024

Value Driven DevOps Team

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フォーメーション • モビング • ペア中心のモビング • チーム全員での目線合わせ