Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
トランクベース開発の導入で見えた DevOpsの技術・プロセス・文化との繋がり
Search
Ryota Kunisada
April 15, 2024
Technology
0
740
トランクベース開発の導入で見えた DevOpsの技術・プロセス・文化との繋がり
DevOpsDays Tokyo 2024での発表資料です。
https://confengine.com/conferences/devopsdays-tokyo-2024/schedule
Ryota Kunisada
April 15, 2024
Tweet
Share
More Decks by Ryota Kunisada
See All by Ryota Kunisada
フロントエンドエンジニアとQAエンジニアの協働による自動テストを増やす開発プロセス
92thunder
0
24
開発生産性向上の取り組みログ
92thunder
0
61
どんなページでも動かす!JS_CSS汚染を避ける戦い
92thunder
0
170
Other Decks in Technology
See All in Technology
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
200
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
490
The Rise of LLMOps
asei
5
1.3k
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
530
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
580
B2B SaaS × AI機能開発 〜テナント分離のパターン解説〜 / B2B SaaS x AI function development - Explanation of tenant separation pattern
oztick139
2
220
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
470
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
5
630
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
580
Featured
See All Featured
What's new in Ruby 2.0
geeforr
343
31k
Gamification - CAS2011
davidbonilla
80
5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
The Cult of Friendly URLs
andyhume
78
6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
Building Your Own Lightsaber
phodgson
103
6.1k
BBQ
matthewcrist
85
9.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Transcript
トランクベース開発の導入で見えた DevOpsの技術・プロセス・文化との繋がり DevOpsDaysTokyo 2024 @92thunder 2024/4/16
国定 凌太 @92thunder テックタッチ株式会社のフロントエンドエンジニアとして 全てのWebシステムの価値を向上するサービスを開発 津山高専(岡山県) → ソニーデジタルネットワークアプリケーションズ → テックタッチ株式会社(当時創業1ヶ月に1人目社員として)
2023年6月に北海道旭川市に移住
「テックタッチ」の紹介 • WebサイトにJavaScriptを組み込むことで、 ノーコードでガイドやツールチップでの案内を追加できる • スニペット / ブラウザ拡張で提供
トランクベース開発導入に 取り組んでDevOpsの 魅力に気付いた話をします
最初は “DevOps” 調べてもピンと 来なかった人 🙋
DevOpsとの出会い > DevOps(デブオプス)は、ソフトウェア開発手法の一つ。開発 (Development) と運用 (Operations) を組み合わせたかばん語であり、開発担当者と運用担当者が連携して協 力する(さらに両担当者の境目もあいまいにする)開発手法をさす。ソフトウェアを迅速に ビルドおよびテストする文化と環境により、確実なリリースを、以前よりも迅速に高い頻 度で可能とする組織体制の構築を目指している。
https://ja.wikipedia.org/wiki/DevOps 開発者が運用まで担当して開発ちゃんと進むの? DevOps=CI/CD? 継続的デリバリーのその後は? 🤔
トランクベース開発の導入に取り組んで • リリーストグルが無ければ ◦ 開発中の機能が他チームの開発に影響を与えてしまう • 小さいバッチサイズの作業が無ければ ◦ リリーストグルが活用されず プルリクエストあたりの変更量が大きくなる
• 明確なビジョンと目的が無ければ ◦ 納得感が得られず、変革への動機付けができない
トランクベース開発の導入に取り組んで • リリーストグルが無ければ ◦ 開発中の機能が他チームの開発に影響を与えてしまう • 小さいバッチサイズの作業が無ければ ◦ リリーストグルが活用されず プルリクエストあたりの変更量が大きくなる
• 明確なビジョンと目的が無ければ ◦ 納得感が得られず、変革への動機付けができない 技術 プロセス 文化 技術・プロセス・文化が揃ってやっと導入できた
トランクベース開発とは • 1日に1度は本流の開発ブランチ(トランク)にマージする • 毎日マージしながら機能開発を進めることで 早期に課題発見やフィードバックを得ることができる • 短期間でマージすることで、コンフリクトが発生しにくくなる • 燃え尽き症候群(バーンアウト)を軽減する効果がある
技術
なぜトランクベース開発を導入したのか リードタイム短縮 • フロントエンドの機能開発プルリクエストがマージされるまでに2ヶ月以上 ◦ エピックに関する変更が全て入らないとマージできない ◦ マージ前にQAエンジニアによる手動テストを実施する必要あり ウェルビーイング •
毎日変更をマージすることで、燃え尽き症候群を防ぐ ◦ 自分が1人目社員というのもあり、他のメンバーにも早くマージする 開発リズムの良さを実感してほしい! 技術
リリーストグル実装 開発途中の機能が他チームの開発・テストに影響 機能開発チームを1ヶ月離れ、 リリーストグルの設計・実装・ドキュメント整備を実施 リリーストグルを導入することで、開発途中の機能を Dev環境まで表示するか、本番でも表示するか柔軟に変更可能に 技術
ドキュメント抜粋 技術
技術 ドキュメント抜粋 導入の速さを考慮して機能の利用可否フラグを コード内に設定する静的リリーストグルを選択 背景 • ネットワーク障害などの影響を受けない • 新機能は3ヶ月に1度リリースの新バージョンで リリースしている
• 顧客ごとに機能の提供を切り替える機構は既に導入済み
タスク細分化ワークショップの実施 リリーストグルがあっても使われない状況が続く😢 タスクの粒度に課題があることに気付く 機能開発の全3チームにタスク細分化ワークショップを実施 作業量の少ないストーリーやタスクのチケットが増えた 全体でイテレーティブ開発的な進め方も浸透してきた プロセス
タスク細分化ワークショップの進め方 1. UIデザインを見てどのような機能を作るのか確認 一番重要な機能はどこ? 2. 思いつく限りタスクを箇条書きで書き出してみる 型定義やリリーストグル追加などとにかく小さいもので 3. INVESTの法則を参考にストーリーとしてグルーピング 特に独立やテスト可能の意識
4. ストーリーを優先度順に並び替え 何が揃っていれば最低限の実装で一通りの価値を検証できる? 5. ストーリーに更に細かくサブタスクを書き出してみる チケット作成する時もこの粒度を意識してみよう プロセス
全体でプルリクエストの数が増えてきた…! • 1日1回マージには届かないが、週にいくつかの機能開発プルリクエストが マージされるようになった! • ポジティブな意見 ◦ プルリクエストあたりの変更が少なくなったので コードレビューが楽に ◦
はやくマージできるようになってタスクが完了 →ストーリーポイントが安定 ◦ プレビュー環境ではなくDev環境でテストできるためテストがスムーズに ◦ 社内での早期フィードバックが生まれ改善が早くなった! • ネガティブな意見 ◦ 他チームの変更を把握しきれず、別チームでのテスト時に 正しい挙動が把握しきれないなど、個人的には嬉しい悲鳴
トランクベース開発は順調に見えていたが… 文化 Four Keys改善ワーキングチームというチームを結成 まずはサイクルタイム改善を目指して取り組む メンバーからの反発の声を耳にする 「なぜリードタイムやサイクルタイムの短縮に注力してるの? チーム体制や密結合アーキテクチャなど 向き合うべき課題があるのでは?」 数値の改善やコードレビューを早くすることばかりに注力していて
その背景にある目的の納得感が得られていなかった
Four Keys改善チームの見直しを実施中 チーム名: Four Keys改善 目的: Four Keysを改善し、アジリティ高くリーンな 開発を実践できる開発組織になる
活動内容: リードタイム短縮のためにトランクベース開発 導入支援、レビュープロセスの改善 チーム名: 開発プロセス改善 目的: フィードバックサイクル全体を改善し、 顧客により多くの価値を届けられるようになる 活動内容: 開発プロセス全体の現状整理と課題発見、 DevOpsケイパビリティの獲得支援 文化
今までの取り組みとDevOpsの能力の関係 文化 • 創造的な組織文化 • 仕事の満足度 • 学習文化 • 変革型リーダーシップ
技術 • クラウド インフラストラクチャ • コードの保守性 • 継続的デリバリー • 継続的インテグレーション • 継続的なテスト • データベースのチェンジ マネジメント • デプロイの自動化 • チームのツール選択をサポート • 疎結合アーキテクチャ • モニタリングとオブザーバビリティ • セキュリティのシフトレフト • テストデータ管理 • トランクベース開発 • バージョン管理 プロセス • お客様のフィードバック • システムをモニタリングして的確な判断 • 障害の予兆通知 • 変更承認の効率化 • チームのテスト • バリュー ストリームでの作業の可視性 • ビジュアル管理 • 仕掛り制限 • 小さいバッチ単位の作業 https://cloud.google.com/architecture/devops?hl=ja
トランクベース開発を導入するまでの取り組み プロセス タスク分割 文化 変革型リーダーシップ リリーストグル トランクベース開発 技術 DevOps
私にとって “DevOps” とは 試行錯誤しながらトランクベース開発導入を経験して 技術・プロセス・文化によるアプローチが必要だとわかった 技術・プロセス・文化はソフトウェア開発の全てではないでしょうか? ソフトウェア開発の一挙手一投足がDevOpsに繋がっている 身近な取り組みからDevOpsを実践していきましょう!