Slide 1

Slide 1 text

© DMM.com 1 月間500万PV規模のサービスを
 コンテナ化した話


Slide 2

Slide 2 text

© DMM.com 1. 終活ねっとについて 会社・サービス概要 2. コンテナ化の背景 どうしてコンテナ化を選択したか 3. コンテナ設計 具体的なイメージ構成 4. アーキテクチャ設計 具体的なサーバー構成、デプロイサイクル 2 アジェンダ 今日話すこと

Slide 3

Slide 3 text

© DMM.com だれ? 組田 隆亮 株式会社終活ねっと 開発責任者 ⭕ 好きなこと フロントまわりの技術 登山とか写真とか... 短い時間ですがよろしくお願いします! 3 軽く自己紹介

Slide 4

Slide 4 text

© DMM.com 終活ねっとについて 株式会社終活ねっとの沿革 4

Slide 5

Slide 5 text

© DMM.com /会社概要 2016年 9月 設立 5 2017年12月 総額1億円の資金調達を実施 2018年 3月 霊園検索サービスをローンチ 2018年10月 合同会社DMM.comにグループイン 2019年 5月 お葬式、僧侶手配サービスサービスをローンチ

Slide 6

Slide 6 text

© DMM.com /会社概要 6 渋谷にあるベンチャー企業 メンバー数50名140名 学生多し エンジニアは3名13名 +学生インターン

Slide 7

Slide 7 text

© DMM.com さまざまな法要プランを用意し、信 頼できるご僧侶を全国に手配可能 /サービス概要 7 ポータルにサービスを提供! お墓さがし 全国のお墓を市区町村や、沿線、 地図および供養形態から柔軟に検 索可能 お葬式 わかりやすい料金体系で豊富なプ ランを提供。親切丁寧なコールセン ターで24時間受付 お坊さん 終活をワンストップでコーディネートするポータルサイト ユーザーに最適なプランを提案 マガジン 葬儀・お墓・仏壇・相続などの情報 を発信する「終活の総合サイト」

Slide 8

Slide 8 text

© DMM.com /サービス概要 8 独自のSEOマーケティングによる業界No.1の集客力 400万UU / 1,000万PV(直近1ヶ月) まあまあなトラフィックの伸び

Slide 9

Slide 9 text

© DMM.com コンテナ化の背景 どうしてコンテナ化を選んだか 9

Slide 10

Slide 10 text

© DMM.com コンテナ化の背景 10 組織が急速にデカくなる サービスの急速な展開に対応するためエンジニア組織を拡大する必要 サービスごとに検証したい 気軽に環境構築したい どんどん人が入ってくる    気軽に環境構築したい 十人十色な開発環境...     気軽に環境構築したい

Slide 11

Slide 11 text

© DMM.com コンテナ化の背景 11 トラフィック増加でサーバーが心配 サービス展開に比例してトラフィックも増加しサーバーリソースを圧迫していきそ う スケールアップしまくる 高い 単一障害であることに変わりはない 冗長性をもたせたい

Slide 12

Slide 12 text

© DMM.com コンテナ化の背景 クロスプラットフォーム 12 再現性のある環境構築 スピーディーな検証 サービスのスケーラビリティ これらを求めてコンテナ化を決断

Slide 13

Slide 13 text

© DMM.com コンテナ設計 具体的なイメージ構成の要点 13

Slide 14

Slide 14 text

© DMM.com docker-composeの利用 1プロセス1個コンテナ。DataBase、WebServer、Applicationなど用途によってコンテナを分ける。 本番環境では外部DBに繋ぐのでDBいらない、Appだけ更新したからAppだけイメージ再ビルドしたい、みたいな要 望に柔軟に応えられる。 14 コンテナ設計 DataBase Application WebServer localhost DataBase Application WebServer production.com

Slide 15

Slide 15 text

© DMM.com ベースイメージはAlpineLinux 軽い。必要最低限なイメージを構成できるので気分がいい。 15 コンテナ設計

Slide 16

Slide 16 text

© DMM.com docker volumeの利用 ローカルのアプリケーションファイル群をマウントすることで一般的な手法でエディタ編集が行える。 node_modulesやvendorディレクトリなどアプリケーションの中にある外部ライブラリもマウント。コンテナ内でinstall してもアプリケーションフォルダをマウントすることでそれらが隠れてしまうから。 16 コンテナ設計 container ApplicationFolder node_modules node_modules vendor ApplicationFolder node_modules node_modules vendor

Slide 17

Slide 17 text

© DMM.com マルチステージビルド JSコンパイルする時などに、成果物以外がプロダクションのイメージに乗るのは微妙 コンパイルするだけのコンテナを立ててビルド後、その成果物のみを実際に稼働させるイメージに乗せることができ る。watchしてビルドを走らせる開発環境では使わない。 17 コンテナ設計 production container node_modules output.js Vue Project cache container output.js

Slide 18

Slide 18 text

© DMM.com 実行ユーザーを作成する 最小限の権限でイメージを作成するべき。 Dockerではデフォルトだと実行ユーザーがrootとなる。NginxやPHP-fpmなどプロセスを動かすユーザーを統一し ておくと実行時に権限まわりでコケることがなくGood。 18 コンテナ設計

Slide 19

Slide 19 text

© DMM.com プロセス管理はsupervisor 複数プロセスの管理、デーモン化、永続化のためのツール。 さっき1プロセス1コンテナとか言っていたがどうしても1コンテナで複数プロセス動かしたい時に。 19 コンテナ設計

Slide 20

Slide 20 text

© DMM.com アーキテクチャ設計 具体的なサーバー構成、デプロイサイクル 20

Slide 21

Slide 21 text

© DMM.com 従来のサーバー構成およびデプロイサイクル ネットワークなどメインテーマから外れる部分は省略 21 アーキテクチャ設計

Slide 22

Slide 22 text

© DMM.com 新しいサーバー構成 22 アーキテクチャ設計

Slide 23

Slide 23 text

© DMM.com 新しいデプロイサイクル 23 アーキテクチャ設計

Slide 24

Slide 24 text

© DMM.com 困ったこと/今後取り組んでいきたいこと ‍♂今まで見えていた部分が見えなくなったことによる不便/不安。デバッグが大変。 ポジティブに言い換えれば、見なくてもいい部分が増えた。マネージドすごい ‍♂デプロイが遅い。git pullは早かった... メリットが上回ってるので別に問題ではない デプロイサイクルにテストを組み込みたい CodeBuild 24 アーキテクチャ設計

Slide 25

Slide 25 text

© DMM.com 25 エンジニア、募集してます PHP Python Vue.js Fargate CodePipeline jQuery Nginx Docker SCSS

Slide 26

Slide 26 text

© DMM.com 26 月間500万PV規模のサービスを
 コンテナ化した話
 ありがとうございました