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
1.2k
継続的デリバリーを実現するためのデプロイフローを考える / tambourine Herokuflow example
2019/11/18のDevLOVE関西で話した時の資料です
https://devlove-kansai.doorkeeper.jp/events/99164
Yusuke Kano
November 18, 2019
Tweet
Share
More Decks by Yusuke Kano
See All by Yusuke Kano
LaravelxHerokuによる開発・運用 / laravel_heroku_the_12_factor_app
kusk
1
2k
Other Decks in Technology
See All in Technology
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
100
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
5
5.5k
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
230
Tebiki Engineering Team Deck
tebiki
0
24k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
380
OpenShiftでllm-dを動かそう!
jpishikawa
0
110
FinTech SREのAWSサービス活用/Leveraging AWS Services in FinTech SRE
maaaato
0
130
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
150
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
230
Agile Leadership Summit Keynote 2026
m_seki
1
610
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
230
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
120
Navigating Team Friction
lara
192
16k
Bash Introduction
62gerente
615
210k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
120
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Practical Orchestrator
shlominoach
191
11k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.6k
Automating Front-end Workflow
addyosmani
1371
200k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
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