Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
LaravelxHerokuによる開発・運用 / laravel_heroku_the_12_...
Search
Yusuke Kano
July 08, 2020
Programming
2.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LaravelxHerokuによる開発・運用 / laravel_heroku_the_12_factor_app
【シューマイ】Tech Lead Engineerから最新技術を学べ!Laravel編
https://shuuu-mai.connpass.com/event/179336/
登壇資料
Yusuke Kano
July 08, 2020
More Decks by Yusuke Kano
See All by Yusuke Kano
継続的デリバリーを実現するためのデプロイフローを考える / tambourine Herokuflow example
kusk
1
1.2k
Other Decks in Programming
See All in Programming
パスワード再設定メールのURLについて知っておこう
uyuki234
0
140
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
210
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Kubernetes祭り #2 OP/ED
bells17
0
110
すこし踏み込む CancellationToken
htkym
2
1.7k
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
110
プロダクトコードからライブラリの境界を見つける
elmetal
PRO
0
110
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.1k
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
77
5.6k
Claude Code のすすめ
schroneko
67
230k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
780
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
WENDY [Excerpt]
tessaabrams
14
40k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Docker and Python
trallard
47
4.2k
Marketing to machines
jonoalderson
1
5.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Test your architecture with Archunit
thirion
2
2.4k
Designing Powerful Visuals for Engaging Learning
tmiket
1
600
Transcript
Laravel × Herokuによる 開発‧運⽤ . . 【シューマイ】 Tech Lead Engineerから最新技術を学べ!Laravel編
⾃⼰紹介 • 狩野 裕介 / Kano Yusuke • @usk •
株式会社タンバリン • CTO (兼 開発チームマネージャー) )5.-ɾ$44ͷ੍࡞͔Β'MBTIʹΑΔΠϯλϥΫςΟϒͳίϯςϯπ੍࡞ʹؒؔΘͬͨ͋ͱɺΤ ϯδχΞδϣϒνΣϯδɻͦͷޙɺ)FSPLVΛར༻ͨ͠1)1ɾ-BSBWFMͷΞϓϦ։ൃɺ4BMFTGPSDF Λར༻ͨ͠"1*ɾγεςϜͷ։ൃͳͲɺόοΫΤϯυશൠʹܞΘΓ·ͨ͠ɻ ݱࡏɺגࣜλϯόϦϯʹͯ$50݉ΫϥυΠϯςάϨʔγϣϯ෦େࡕϚωʔδϟʔͱͯ͠ɺΤ ϯδχΞϝϯόʔͷ։ൃڥΛྑ͘͠ɺձࣾͷੜ࢈ੑΛ্ͤ͞ΔͨΊʹʑฃಆ͍ͯ͠·͢ɻ
Laravel × Herokuによる 開発‧運⽤
None
Herokuとは? • アプリの構築、提供、監視、スケールに役⽴つ クラウドプラットフォーム • 安全性とスケーラビリティに優れた DaaS (サービスとしてのデータ ベース)
→ インフラなどの管理をおまかせし、アプリの開発に集中できる IUUQTKQIFSPLVDPNXIBU
Why Heroku? IaaS アプリ スケーラビリティ ログ モニタリング オーケストレーション セキュリティ CI
/ CD ユーザー権限 OS 仮想化 ネットワーク ストレージ サーバー管理 開発するところ
• 2012年にHerokuの開発者によって提唱された • Herokuはこの考え⽅に則って作られている • Herokuを使うことで知らず知らずのうちに12factor appに沿った作りになって いる IUUQTGBDUPSOFUKB
5XFMWF'BDUPS"QQɺ࣍ͷΑ͏ͳ4PGUXBSFBTB4FSWJDFΛ࡞Γ্͛ΔͨΊͷํ๏Ͱ͋Δɻ • セットアップ⾃動化のために 宣⾔的な フォーマットを使い、プロジェクトに新しく加わった開発者が要する時間とコスト を最⼩化する。 • 下層のOSへの 依存関係を明確化 し、実⾏環境間での
移植性を最⼤化 する。 • モダンな クラウドプラットフォーム 上への デプロイ に適しており、サーバー管理やシステム管理を不要なものにする。 • 開発環境と本番環境の 差異を最⼩限 にし、アジリティを最⼤化する 継続的デプロイ を可能にする。 • ツール、アーキテクチャ、開発プラクティスを⼤幅に変更することなく スケールアップ できる。 IUUQTGBDUPSOFUKB
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) IUUQTGBDUPSOFUKB
実例
設定 (Config)
設定 (Config) • Laravelでは.env で環境変数を設定するが、 GitHubにアップしない⽅が好ましい • HerokuではGUIで環境変数を設定 (コマンドでも設定可能) •設定を環境変数に格納する
設定 (Config) 設定画⾯による設定 Heroku CLIを利⽤したコマンドによる設定
プロセス (Processes) 並⾏性 (Concurrency)
プロセス (Processes)、並⾏性 (Concurrency) • アプリケーションを1つもしくは複数のステートレスなプロセスとして実⾏する • プロセスモデルによってスケールアウトする
プロセス (Processes)、並⾏性 (Concurrency) w )FSPLVͰ༻͞ΕΔίϯςφʮEZOPʯͱݺΕΔ w ίʔυͱґଘؔϑΝΠϧ͕ύοέʔδͱͯ͠ίϯςφʹ֨ೲ ͞ΕΔ w %ZOPͷछྨ
w 8FC%ZOP w 8PSLFS%ZOP w 0OF0⒎%ZOP w %ZOPͷىಈͳͲͷઃఆ1SPDpMFͰߦ͏ IUUQTKQIFSPLVDPNEZOPT
プロセス (Processes)、並⾏性 (Concurrency) w 8FC%ZOP BQBDIFͷ8FC%ZOPΛ্ཱͪ͛Δ߹্هͷΑ͏ʹ͢Δ ଓ͚ͯυΩϡϝϯτϧʔτͷઃఆΛॻ͘ -BSBWFMͰ௨ৗɺQVCMJD͕υΩϡϝϯτϧʔτ
w 8PSLFS%ZOP プロセス (Processes)、並⾏性 (Concurrency) όοΫάϥϯυͷॲཧΛࢦఆ ্ه-BSBWFMͷΩϡʔॲཧΛىಈ͢ΔͨΊͷઃఆ
w 0OF0⒎%ZOP プロセス (Processes)、並⾏性 (Concurrency) )FSPLV4DIFEVMFSͱ͍͏ެࣜΞυΦϯΛར༻ ࢦఆͨ࣌ؒ͠ʹॲཧΛ࣮ߦ͢ΔόονɺͳͲʹར༻
w εέʔϧΞτ プロセス (Processes)、並⾏性 (Concurrency) %ZOPΛ૿͢͜ͱͰεέʔϧΞτՄೳ ઃఆը໘ͰεϥΠμʔͰಈ͔͚ͩ͢
コードベース (Codebase) 廃棄容易性 (Disposability) 開発/本番⼀致 (Dev/prod parity)
コードベース (Codebase)、廃棄容易性 (Disposability)、開発/本番⼀致 (Dev/prod parity) • バージョン管理されている1つのコードベースと複数のデプロイ • ⾼速な起動とグレースフルシャットダウンで堅牢性を最⼤化する •
開発、ステージング、本番環境をできるだけ⼀致させた状態を保つ • GitHub連携 • Heroku FlowでのPipeline管理 • Review Apps
コードベース (Codebase)、廃棄容易性 (Disposability)、開発/本番⼀致 (Dev/prod parity)
コードベース (Codebase)、廃棄容易性 (Disposability)、開発/本番⼀致 (Dev/prod parity)
コードベース (Codebase)、廃棄容易性 (Disposability)、開発/本番⼀致 (Dev/prod parity)
コードベース (Codebase)、廃棄容易性 (Disposability)、開発/本番⼀致 (Dev/prod parity) w (JU)VC্ͰϓϧϦΫΤετΛग़͢ͱ 3FWJFX"QQT͕ࣗಈతʹىಈ w Ϛʔδ͞ΕΔͱOFYUSFMFBTF͕
ࣗಈ%FQMPZ͞ΕΔ w ϨϏϡʔΞϓϦࣗಈͰআ͞ΕΔ
コードベース (Codebase)、廃棄容易性 (Disposability)、開発/本番⼀致 (Dev/prod parity) w ຊ൪ͷϦϦʔεɺ1SPNPUFϘλϯΛΫϦοΫ͢Δͱ ίϯςφ͕ͦͷ··ίϐʔ͞ΕɺϦϦʔε͞ΕΔ
1.コードベース (Codebase) 2.依存関係 (Dependencies) 3.設定 (Config) 4.バックエンドサービス (Backing Services) 5.ビルド、リリース、ラン(Build,
release, run) 6.プロセス (Processes) 7.ポートバインディング (Port binding) 8.並⾏性 (Concurrency) 9.廃棄容易性 (Disposability) .開発/本番⼀致 (Dev/prod parity) 11.ログ (Logs) 12.管理プロセス (Admin processes) IUUQTGBDUPSOFUKB
最後に なぜ、そのような構造や作りとなっているのか、を考える。 単にやり⽅を覚えるだけではなく、その理由を知る。 原理原則を知ることでより良いものを作れるようになる。
ご清聴ありがとうございました