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
月間500万PV規模のサービスをコンテナ化した話
Search
ruddy95
August 19, 2019
Programming
3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
月間500万PV規模のサービスをコンテナ化した話
サービス開発にスケーラビリティを持たせるためにコンテナ化を行なった話
ruddy95
August 19, 2019
More Decks by ruddy95
See All by ruddy95
マルチバーティカル戦略を支える、 システムと組織のアーキテクチャ 〜ドメインDeep Dive × 光速開発を実現する両輪のアプローチ〜
ruddy95
0
940
Other Decks in Programming
See All in Programming
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
150
ジョジョの世界をXRで再現する
mofurune
0
160
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
210
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
550
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
R8 の設定見直しでアプリサイズ削減
andpad
0
220
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
残高管理から台帳サービスへの進化
artoy
1
200
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
JIS keyboard support in Omarchy
lef237
0
110
Featured
See All Featured
Accessibility Awareness
sabderemane
1
250
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
410
Un-Boring Meetings
codingconduct
0
460
Designing Experiences People Love
moore
143
24k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Curse of the Amulet
leimatthew05
3
16k
RailsConf 2023
tenderlove
30
1.6k
30 Presentation Tips
portentint
PRO
1
430
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Visualization
eitanlees
153
17k
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規模のサービスを コンテナ化した話 ありがとうございました