実際にDockerはどれだけ活用されているのか?
今回は、自分のウェブサービスにDockerを導入するかどうかの判断材料として、世に出ているウェブサービスでどのくらいDockerが実際に用いられているのかを調査しました。
結論から言うと、Dockerが使われている事例は調べたら沢山ありました。私が当社考えていたよりも浸透している技術だと知りました。
特に、toCのアプリ、アクセスの増減が大きいサービス、環境を揃えたいニーズが強い開発環境、機能を順次追加していきたいサービスなどはDockerを取り入れている事例が多いことがわかりました。
今回はその中でも特に有名なウェブサービスの事例を備忘録がてらまとめておきます。
ポケモンGO
ポケモンGOはグーグルが提供するクラウドサービスのGoogle Cloud Platformの「Google Container Engine (GKE) 」で動いているとのことです。
Bringing Pokémon GO to life on Google Cloud | Google Cloud Blog
AbemaTV
オンラインでテレビが見れるアベマTVも「Google Container Engine (GKE) 」で運用されているそうです。
AbemaTVでのGKE運用事例のご紹介 | サイバーエージェント 公式エンジニアブログ
選定した理由としては
・マイクロアーキテクチャとの親和性
・迅速で容易なスケーラビリティ
を挙げていました。
どんどん機能を追加していく場合や、toCのようなスケールの変化に強くする必要がある場合にはDockerはニーズがあるように感じます。
ぐるなび
ぐるなびでは「Rancher」というコンテナ管理ツールを用いているそうです。
RancherとDockerでぐるなびの本番サービスをリリースした話 - ぐるなびをちょっと良くするエンジニアブログ
ポケモンGOとAbemaTVでは、「Kubernetes」を使用しています。また、Dockerの今の管理ツールとしての流れでは「Kubernetes」がメジャーなようです。
ビズリーチ
ビズリーチが実践する、Dockerコンテナ技術を使った“クラウドネイティブ化”のビジネスインパクト | IT Leaders
ビズリーチでも一部機能にDockerを使っているそうです。
「HRMOS採用管理」という管理部分に使っているようです。
ビズリーチでのITの要件が
- スケールアップ・スケールアウト/ダウンができること
- 高速リリースサイクルに耐えられること
- 運用負荷軽減/生産性の向上
- 継続的インテグレーション(CI)/継続的デリバリー(CD)
- 可用性の高さ(Availability)
だそうで、その要件を満たすためにコンテナ技術を用いているとのことです。
ニコニコ生放送
ニコニコ生放送におけるdockerの活用事例 - dwango on GitHub
ニコニコ生放送でもDockerを使用しているそうです。管理はSwarn。
なぜDockerを選択したかの細かい説明がありましたのでそのまま引用します。
何故docker化を始めたの?
マイクロサービス化の機運
生放送は肥大化したモノリシックなサービスが2つ並列運用されており、それぞれロジックを保有する見通しの悪い状態になっていました。 そこで、各種のロジックをマイクロサービスとして切り出すことで、サービス全体の見通しを良くするためにマイクロサービス化を進めることになりました。
ポータビリティ
生放送は機材の関係で色々な環境で動くのが要求されるため、フロントエンド/バックエンドともにポータビリティ性の高いコンテナ化が求められ、技術的にはDockerが妥当であろうという結論に達しました。
フロントエンドの分離
フロントエンドサービスをScalaから脱却する / バックエンドサービスはScalaを引き続き使う 従来、フロントエンドエンジニアはサーバーサイドも触る必要があったため、Scala/TypeScript/SCSS/Rakeを理解している必要がありました(一部PHPが必要なこともありました)。フロントエンドエンジニアが複数言語を覚える負荷を下げるため・Scalaのコンパイル時間を減らすために、サーバーサイドをTypeScriptで書きたい要望が出ました。一方、バックエンドサービスに関しては利便性等を考慮して、引き続きScalaを利用していく方針の為、それぞれ独立した環境で実行できるDockerを利用することになりました。
スケーラビリティの向上
超会議や人気アニメ一挙放送など、多数の来場者が予想される際にはインスタンスを増やして、たくさんの方に視聴していただけるようにし、人が少ない時間帯はスケールダウンさせて、別用途に利用する等、柔軟に対応出来るようにしたい意図がありました。
まとめ
多くのサービスでコンテナ技術は必須なものとなってきていることがわかりました。特に可搬性(ポータビリティ)、マイクロアーキテクチャなどが求められるサービスは導入のメリットが大きいと感じました。
グーグルのクラウドサービス(GCPのGoogle Container Engine )を使用して構築している例が多く感じました。これはGCPのサポートが歴史が比較的長く、おそらく構築事例が多いからではないでしょうか。
また、オーケストレーションツール(コンテナ管理ツール)には「Kubernetes」が多かったです。
Dockerの学習するのにオススメの書籍はこちら