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
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
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
120
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
3
540
Feature Toggle は捨てやすく使おう
gennei
0
430
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
810
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
130
アーキテクチャモダナイゼーションとは何か
nwiizo
17
4.3k
AIと共にエンジニアとPMの “二刀流”を実現する
naruogram
0
130
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
2.8k
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
320
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.6k
PHPのバージョンアップ時にも役立ったAST(2026年版)
matsuo_atsushi
0
290
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
200
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
300
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
500
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.8k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
700
Game over? The fight for quality and originality in the time of robots
wayneb77
1
160
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
170
Discover your Explorer Soul
emna__ayadi
2
1.1k
Mind Mapping
helmedeiros
PRO
1
140
Abbi's Birthday
coloredviolet
2
6.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
The Cult of Friendly URLs
andyhume
79
6.8k
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規模のサービスを コンテナ化した話 ありがとうございました