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
月間500万PV規模のサービスをコンテナ化した話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ruddy95
August 19, 2019
Programming
2.9k
0
Share
月間500万PV規模のサービスをコンテナ化した話
サービス開発にスケーラビリティを持たせるためにコンテナ化を行なった話
ruddy95
August 19, 2019
More Decks by ruddy95
See All by ruddy95
マルチバーティカル戦略を支える、 システムと組織のアーキテクチャ 〜ドメインDeep Dive × 光速開発を実現する両輪のアプローチ〜
ruddy95
0
770
Other Decks in Programming
See All in Programming
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
170
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
2
150
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
970
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
210
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
850
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
830
20260315 AWSなんもわからん🥲
chiilog
2
190
Swift Concurrency Type System
inamiy
0
190
AI時代のPhpStorm最新事情 #phpcon_odawara
yusuke
0
110
[PHPerKaigi 2026]PHPerKaigi2025の企画CodeGolfが最高すぎて社内で内製して半年運営して得た内製と運営の知見
ikezoemakoto
0
340
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
550
PHPのバージョンアップ時にも役立ったAST(2026年版)
matsuo_atsushi
0
290
Featured
See All Featured
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
210
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
670
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
330
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
53k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.3k
Building the Perfect Custom Keyboard
takai
2
720
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.7k
Prompt Engineering for Job Search
mfonobong
0
250
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
110
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
© DMM.com 1 月間500万PV規模のサービスを コンテナ化した話
© DMM.com 1. 終活ねっとについて 会社・サービス概要 2. コンテナ化の背景 どうしてコンテナ化を選択したか 3. コンテナ設計
具体的なイメージ構成 4. アーキテクチャ設計 具体的なサーバー構成、デプロイサイクル 2 アジェンダ 今日話すこと
© DMM.com だれ? 組田 隆亮 株式会社終活ねっと 開発責任者 ⭕ 好きなこと フロントまわりの技術
登山とか写真とか... 短い時間ですがよろしくお願いします! 3 軽く自己紹介
© DMM.com 終活ねっとについて 株式会社終活ねっとの沿革 4
© DMM.com /会社概要 2016年 9月 設立 5 2017年12月 総額1億円の資金調達を実施 2018年
3月 霊園検索サービスをローンチ 2018年10月 合同会社DMM.comにグループイン 2019年 5月 お葬式、僧侶手配サービスサービスをローンチ
© DMM.com /会社概要 6 渋谷にあるベンチャー企業 メンバー数50名140名 学生多し エンジニアは3名13名 +学生インターン
© DMM.com さまざまな法要プランを用意し、信 頼できるご僧侶を全国に手配可能 /サービス概要 7 ポータルにサービスを提供! お墓さがし 全国のお墓を市区町村や、沿線、 地図および供養形態から柔軟に検
索可能 お葬式 わかりやすい料金体系で豊富なプ ランを提供。親切丁寧なコールセン ターで24時間受付 お坊さん 終活をワンストップでコーディネートするポータルサイト ユーザーに最適なプランを提案 マガジン 葬儀・お墓・仏壇・相続などの情報 を発信する「終活の総合サイト」
© DMM.com /サービス概要 8 独自のSEOマーケティングによる業界No.1の集客力 400万UU / 1,000万PV(直近1ヶ月) まあまあなトラフィックの伸び
© DMM.com コンテナ化の背景 どうしてコンテナ化を選んだか 9
© DMM.com コンテナ化の背景 10 組織が急速にデカくなる サービスの急速な展開に対応するためエンジニア組織を拡大する必要 サービスごとに検証したい 気軽に環境構築したい どんどん人が入ってくる 気軽に環境構築したい
十人十色な開発環境... 気軽に環境構築したい
© DMM.com コンテナ化の背景 11 トラフィック増加でサーバーが心配 サービス展開に比例してトラフィックも増加しサーバーリソースを圧迫していきそ う スケールアップしまくる 高い 単一障害であることに変わりはない
冗長性をもたせたい
© DMM.com コンテナ化の背景 クロスプラットフォーム 12 再現性のある環境構築 スピーディーな検証 サービスのスケーラビリティ これらを求めてコンテナ化を決断
© DMM.com コンテナ設計 具体的なイメージ構成の要点 13
© DMM.com docker-composeの利用 1プロセス1個コンテナ。DataBase、WebServer、Applicationなど用途によってコンテナを分ける。 本番環境では外部DBに繋ぐのでDBいらない、Appだけ更新したからAppだけイメージ再ビルドしたい、みたいな要 望に柔軟に応えられる。 14 コンテナ設計 DataBase Application
WebServer localhost DataBase Application WebServer production.com
© DMM.com ベースイメージはAlpineLinux 軽い。必要最低限なイメージを構成できるので気分がいい。 15 コンテナ設計
© DMM.com docker volumeの利用 ローカルのアプリケーションファイル群をマウントすることで一般的な手法でエディタ編集が行える。 node_modulesやvendorディレクトリなどアプリケーションの中にある外部ライブラリもマウント。コンテナ内でinstall してもアプリケーションフォルダをマウントすることでそれらが隠れてしまうから。 16 コンテナ設計 container
ApplicationFolder node_modules node_modules vendor ApplicationFolder node_modules node_modules vendor
© DMM.com マルチステージビルド JSコンパイルする時などに、成果物以外がプロダクションのイメージに乗るのは微妙 コンパイルするだけのコンテナを立ててビルド後、その成果物のみを実際に稼働させるイメージに乗せることができ る。watchしてビルドを走らせる開発環境では使わない。 17 コンテナ設計 production container
node_modules output.js Vue Project cache container output.js
© DMM.com 実行ユーザーを作成する 最小限の権限でイメージを作成するべき。 Dockerではデフォルトだと実行ユーザーがrootとなる。NginxやPHP-fpmなどプロセスを動かすユーザーを統一し ておくと実行時に権限まわりでコケることがなくGood。 18 コンテナ設計
© DMM.com プロセス管理はsupervisor 複数プロセスの管理、デーモン化、永続化のためのツール。 さっき1プロセス1コンテナとか言っていたがどうしても1コンテナで複数プロセス動かしたい時に。 19 コンテナ設計
© DMM.com アーキテクチャ設計 具体的なサーバー構成、デプロイサイクル 20
© DMM.com 従来のサーバー構成およびデプロイサイクル ネットワークなどメインテーマから外れる部分は省略 21 アーキテクチャ設計
© DMM.com 新しいサーバー構成 22 アーキテクチャ設計
© DMM.com 新しいデプロイサイクル 23 アーキテクチャ設計
© DMM.com 困ったこと/今後取り組んでいきたいこと ♂今まで見えていた部分が見えなくなったことによる不便/不安。デバッグが大変。 ポジティブに言い換えれば、見なくてもいい部分が増えた。マネージドすごい ♂デプロイが遅い。git pullは早かった... メリットが上回ってるので別に問題ではない デプロイサイクルにテストを組み込みたい CodeBuild
24 アーキテクチャ設計
© DMM.com 25 エンジニア、募集してます PHP Python Vue.js Fargate CodePipeline jQuery
Nginx Docker SCSS
© DMM.com 26 月間500万PV規模のサービスを コンテナ化した話 ありがとうございました