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
継続的デリバリーを実現するためのデプロイフローを考える / tambourine Heroku...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yusuke Kano
November 18, 2019
Technology
1.2k
1
Share
継続的デリバリーを実現するためのデプロイフローを考える / tambourine Herokuflow example
2019/11/18のDevLOVE関西で話した時の資料です
https://devlove-kansai.doorkeeper.jp/events/99164
Yusuke Kano
November 18, 2019
More Decks by Yusuke Kano
See All by Yusuke Kano
LaravelxHerokuによる開発・運用 / laravel_heroku_the_12_factor_app
kusk
1
2.1k
Other Decks in Technology
See All in Technology
もりもり新機能を一挙紹介! AgentCoreに入門して、AWS上にAIエージェントを構築しよう
minorun365
PRO
6
550
GoとSIMDとWasmの今。
askua
2
420
AI時代から振り返るTerraform drift運用の歴史 / AI Age Reflections on the History of Terraform Drift Operations
aeonpeople
2
630
long-running-tasks
cipepser
2
450
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
AI駆動開発でなんでもハンズオン環境をつくってみた
yoshimi0227
0
190
Kiro CLI v2.0.0がやってきた!
kentapapa
0
250
OpenID Connectによるサービス間連携
takesection
0
150
JJUG CCC 2026 Spring AI時代の開発こそ標準化を武器に! ― 方式・プロセス・プラットフォームの標準化
s27watanabe
2
650
React、まだ楽しくて草
uhyo
7
3.5k
形式手法特論:公平性制約の位相的特徴づけ #kernelvm / Kernel VM Study Kansai 12th
ytaka23
1
660
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development
yoshidashingo
1
280
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Building the Perfect Custom Keyboard
takai
2
780
The Limits of Empathy - UXLibs8
cassininazir
1
340
How GitHub (no longer) Works
holman
316
150k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
230
We Are The Robots
honzajavorek
0
240
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Accessibility Awareness
sabderemane
1
130
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
410
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
44k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
340
Transcript
継続的デリバリーを実現するための デプロイフローを考える . . DevLOVE関⻄ 受託開発の現場でのアジャイルへの取り組み
アジェンダ • ⾃⼰紹介 • 会社紹介 • 必要なこと • Herokuとは? •
タンバリンでの運⽤ • まとめ
⾃⼰紹介 • 狩野 裕介 / Kano Yusuke • @usk •
株式会社タンバリン • CTO New! • クラウドインテグレーション部 ⼤阪開発チーム マネージャー • 経歴 • Flasher • バックエンドエンジニア
IUUQTOPUFNVOOBBBE
マネージャーとして • on (隔週30分〜1時間) • V MOM(Salesforceのフレームワーク) • チームもやもやボード •
チームのふりかえり • チームみんなで採⽤プロセスにコミット • 社内ポッドキャスト
会社紹介
タンバリン(tambourine.inc)は、パートナー型デジタルプロダクション株式会社TAM の⼦会社として2015 年9⽉設⽴。SalesforceやHeroku等のクラウドサービスを活⽤し たモバイルアプリ‧Eコマース‧ウェブサー ビスの開発を中⼼におこなっています。 ΫϥΠΞϯτͷʮσδλϧγϑτʯΛαϙʔτɻ ࢲͨͪح৺Λثʹɺ͋ͨΒ͍͜͠ͱ͕େ͖ͳؒͨͪͱ ʮੈքΛม͑ΔΞΠσΞʯΛΧλνʹ͢ΔςΫϊϩδετूஂͰ͢ɻ
エンジニア絶賛募集中です!! IUUQTXXXXBOUFEMZDPNDPNQBOJFTUBNCPVSJOFJOD
本題
必要なこと
アジャイルのフロー ཁ݅ఆٛʙઃܭʙ ։ൃʙςετ ˠϦϦʔε ཁ݅ఆٛʙઃܭʙ ։ൃʙςετ ˠϦϦʔε ཁ݅ఆٛʙઃܭʙ ։ൃʙςετ ˠϦϦʔε
ཁ݅ఆٛʙઃܭʙ ։ൃʙςετ ˠϦϦʔε
スクラムのスプリント
インクリメント • 完成した、動くもの • スプリント終了時の成果 • リリースできる状態になっている
IUUQTTQFBLFSEFDLDPNUXBEBRVBMJUZBOETQFFE
IUUQTTQFBLFSEFDLDPNUXBEBRVBMJUZBOETQFFE TMJEF
必要なこと • アジャイルでは確認できるものを素早く提供する必要がある • 質を上げ、スピードを上げる仕組みを作る必要がある λϯόϦϯͰ)FSPLVͰ࣮ݱ
None
Herokuとは? • アプリの構築、提供、監視、スケールに役⽴つ クラウドプラットフォーム • 安全性とスケーラビリティに優れた DaaS (サービスとしてのデータ ベース) •
The Twelve-Factor Appを提唱し、それに考慮して作られている IUUQTKQIFSPLVDPNXIBU
5XFMWF'BDUPS"QQɺ࣍ͷΑ͏ͳ4PGUXBSFBTB4FSWJDFΛ࡞Γ্͛ΔͨΊͷํ๏Ͱ͋Δɻ • セットアップ⾃動化のために 宣⾔的な フォーマットを使い、プロジェクトに新しく加わった開発者が要する時間とコスト を最⼩化する。 • 下層のOSへの 依存関係を明確化 し、実⾏環境間での
移植性を最⼤化 する。 • モダンな クラウドプラットフォーム 上への デプロイ に適しており、サーバー管理やシステム管理を不要なものにする。 • 開発環境と本番環境の 差異を最⼩限 にし、アジリティを最⼤化する 継続的デプロイ を可能にする。 • ツール、アーキテクチャ、開発プラクティスを⼤幅に変更することなく スケールアップ できる。 IUUQTGBDUPSOFUKB
The Twelve-Factor App 1.コードベース (Codebase) 2.依存関係 (Dependencies) 3.設定 (Config) 4.バックエンドサービス
(Backing Services) 5.ビルド、リリース、ラン(Build, release, run) 6.プロセス (Processes) 7.ポートバインディング (Port binding) 8.並⾏性 (Concurrency) 9.廃棄容易性 (Disposability) 10.開発/本番⼀致 (Dev/prod parity) 11.ログ (Logs) 12.管理プロセス (Admin processes)
The Twelve-Factor App 1.コードベース (Codebase) 2.依存関係 (Dependencies) 3.設定 (Config) 4.バックエンドサービス
(Backing Services) 5.ビルド、リリース、ラン(Build, release, run) 6.プロセス (Processes) 7.ポートバインディング (Port binding) 8.並⾏性 (Concurrency) 9.廃棄容易性 (Disposability) 10.開発/本番⼀致 (Dev/prod parity) 11.ログ (Logs) 12.管理プロセス (Admin processes)
Heroku Flow
Heroku Flow • Heroku Pipeline • GitHub Integration • Heroku
CI • Review Apps • Heroku ChatOps IUUQTKQIFSPLVDPNDPOUJOVPVTEFMJWFSZ
Heroku Pipeline 同じコードベースを共有する Heroku アプリケーションを 1 つにまとめたデプロイパイプライン IUUQTEFWDFOUFSIFSPLVDPNBSUJDMFTQJQFMJOFT
GitHub Integration • リポジトリと連携させ、ブランチ単位でデプロイが可能 (⾃動‧⼿動) • GitHubからHerokuアプリを直接開いたり IUUQTEFWDFOUFSIFSPLVDPNBSUJDMFTHJUIVCJOUFHSBUJPO
Continuous Integration (CI) • GitHubとの連携があるため、GitHub側のCIが利⽤可能 • GitHub Actions、Circle CI、Travis CI
• Heroku CI • 料⾦体系が複雑で試⾏錯誤中 IUUQTKQIFSPLVDPNDPOUJOVPVTJOUFHSBUJPO
Review Apps • ⼀時的に確認⽤として⽴ち上げておけるアプリ • (基本的に)GitHubのプルリクエストごとに作成する • 最近新しくなり、プルリクなしで作成できるようになった IUUQTEFWDFOUFSIFSPLVDPNBSUJDMFTSFWJFXBQQTOFX
タンバリンでの運⽤例
λϯόϦϯͰͷӡ༻ྫ )FSPLV1JQFMJOF
λϯόϦϯͰͷӡ༻ྫ ΞϓϦͷ༻్
λϯόϦϯͰͷӡ༻ྫ ΞϓϦͷ༻్
λϯόϦϯͰͷӡ༻ྫ ΞϓϦͷ༻్
λϯόϦϯͰͷӡ༻ྫ (JU)VC࿈ܞ
λϯόϦϯͰͷӡ༻ྫ ։ൃͷྲྀΕ ։ൃ ʢྫɿGFBUVSFBEE@CVUUPOʣ QVTI OFYUSFMFBTFϒϥϯνʹ ϓϧϦΫΤετΛग़͢ )FSPLVͷϨϏϡʔΞϓϦ͕ ࡞ΒΕΔ ࣗಈςετ
ʢ6OJUςετʣ
λϯόϦϯͰͷӡ༻ྫ ։ൃͷྲྀΕɿϨϏϡʔΞϓϦ
λϯόϦϯͰͷӡ༻ྫ ։ൃͷྲྀΕɿϨϏϡʔΞϓϦ
λϯόϦϯͰͷӡ༻ྫ ։ൃͷྲྀΕɿ֬ೝɾςετ 確認‧テスト • ⾃動テスト • コードレビュー • 動作確認
λϯόϦϯͰͷӡ༻ྫ ։ൃͷྲྀΕɿ֬ೝɾςετ
λϯόϦϯͰͷӡ༻ྫ ։ൃͷྲྀΕɿϚʔδ ֬ೝޙɺϚʔδ͢Δ
λϯόϦϯͰͷӡ༻ྫ ։ൃͷྲྀΕɿϚʔδ w Ϛʔδ͞ΕΔͱOFYUSFMFBTF͕ ࣗಈ%FQMPZ͞ΕΔ w ϨϏϡʔΞϓϦࣗಈͰআ͞ΕΔ
λϯόϦϯͰͷӡ༻ྫ ։ൃͷྲྀΕɿ֬ೝ リリース準備 • 開発が完了したものは next-release に • 動作確認 •
OKなら本番にリリース • Heroku上でロールバックも可能 • next-releaseは基本常にリリース可能な状態にしておく → インクリメント
λϯόϦϯͰͷӡ༻ྫ ։ൃͷྲྀΕɿϦϦʔε 1SPNPUFϘλϯΛԡ͚ͩ͢ 本番リリース
λϯόϦϯͰͷӡ༻ྫ ։ൃͷྲྀΕɿϦϦʔε
λϯόϦϯͰͷӡ༻ྫ ։ൃͷྲྀΕɿϦϦʔεޙ NBTUFSϒϥϯνऔΓࠐΈ όάमਖ਼ͳͲͷϦϦʔεʹඋ͑Δ
タンバリンでの運⽤例 . チケット⽤のブランチを作り、GitHubにpush • next-release にプルリクを出す . 確認 • GitHubでCI‧コードレビュー
• Herokuのレビューアプリで動作確認 . next-release にマージ . 全ての対応が完了後、動作確認 . リリース • hotfix⽤にmasterブランチに取り込み
まとめ
まとめ • スプリントの最後にはリリース可能な状態にする • → パイプラインを使ってのフロー管理 • 質とスピードをあげる • →
CIの導⼊で質の確保 • → デプロイなどの環境周りを⾃動化
IUUQTKQIFSPLVDPNQPEDBTUTDPEFJTIKQ