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
0
2.4k
月間500万PV規模のサービスをコンテナ化した話
サービス開発にスケーラビリティを持たせるためにコンテナ化を行なった話
ruddy95
August 19, 2019
Tweet
Share
Other Decks in Programming
See All in Programming
15分間でふんわり理解するDocker @ Matsuriba MAX
ukwhatn
PRO
1
340
デザインシステムで Tailwind CSSとCSS in JSに分散投資をしたら良かった話
fsubal
14
3.4k
【KMC春合宿2024】実装視点で見るNeural Radiance Fields
runningoutrate
0
150
TCA魔法学入門🪄
dazy
0
280
Crafting a Own PHP - ウキウキ手作りミニマリストPHP
uzulla
4
1.1k
オブジェクト指向コードレビューの新しいアプローチ
akkie76
3
1.5k
OpenAPI を守るのは難しい
ohmori_yusuke
1
140
品質が高いコードって何?Rev2.1
ickx
1
490
CircleCIを活用して AWSへの継続的デリバリーを 実践する
coconala_engineer
1
110
Laravel OpenAPIによる"辛くない"スキーマ駆動開発
kentaroutakeda
2
2.1k
DDDはなぜ難しいのか / 良いコードの定義と設計能力の壁
pospome
24
7.6k
TDDと今まで
kanayannet
0
140
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
28
46k
Thoughts on Productivity
jonyablonski
57
3.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
319
23k
How STYLIGHT went responsive
nonsquared
92
4.7k
Mobile First: as difficult as doing things right
swwweet
215
8.5k
GitHub's CSS Performance
jonrohan
1023
450k
4 Signs Your Business is Dying
shpigford
174
21k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
YesSQL, Process and Tooling at Scale
rocio
160
13k
What's in a price? How to price your products and services
michaelherold
236
11k
The Brand Is Dead. Long Live the Brand.
mthomps
48
22k
A Modern Web Designer's Workflow
chriscoyier
689
190k
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規模のサービスを コンテナ化した話 ありがとうございました