コンテナのユースケース考察

27
1 Shuji Yamada @uzyexe Jan 19, 2016 「コンテナのユースケース考察

Upload: shuji-yamada

Post on 07-Jan-2017

1.029 views

Category:

Technology


0 download

TRANSCRIPT

1

ShujiYamada@uzyexeJan19,2016

「コンテナのユースケース考察」

https://www.flickr.com/photos/yukop/11941236015/

2

コンテナ is 何?

https://www.flickr.com/photos/antitezo/213678923/

新しいパッケージ管理の仕組み?

3

https://www.vagrantup.com/

Vagrant の代わり?

4

仮想サーバの代わり?

5

6

7

コンテナ = パッケージ管理機能 + プロセス + リソース分離

https://www.flickr.com/photos/gerrydincher/5200171922/

コンテナは10年以上前から存在している

8

• Facebook, Google, Heroku, etc...

• LXC, warden, AIX WPAR, HP-UX Container, Solaris Container, OpenVZ, Jail, Parallels...

https://www.flickr.com/photos/grwitters/3267433142/

なぜ今になって話題になっているのか?

9

• 誰でもどこでも動かせる時代になった。(Mobility and Portability)

• 誰でも実用的なスケールで動かせる時代になった。(Scalability)

• どこでも安定して動かせる時代になった。(Robust and Availability)

https://www.flickr.com/photos/fullcex/5981716620/

Dockerコミュニティの規模

10

• 1,000,000,000+ Docker Container download

• 240,000+ Repositories on DockerHub

• 200+ Meetup Groups in 50+ countries

• 1600+ Contributors

• 50,000+ Third-party projects on GitHub

https://www.flickr.com/photos/yiie/8102458704/

Docker にまつわるエコシステム達• Config Management Tools * 10+

• Container OS * 10+

• Scheduler/Orchestration/Management * 40+

• Database/BigData * 10+

• Networking * 15+

• Security * 3+

• Monitoring * 5+

11

• Image Registry * 4+

• Hosting/Service Providers * 20+

• Developer Tools * 25+

• Deplopment Platform * 20+

https://www.flickr.com/photos/ryantron/4453018910/

Docker コンテナの特徴

• イメージをコードで構築管理できる。(パッケージ管理が楽。)

• どこでも動かせる。(移設作業や検証作業が簡単。)

• コンテナ内は開発側、サーバ側は運用側という作業分担が楽。

• アプリ1つに対して、仮想サーバを一台作って運用するよりも楽。

12

https://www.flickr.com/photos/traftery/4773457853/

インフラ的なメリット

• 1サーバ上で数千台以上のコンテナを動かすことが可能になる。

• 高密度・高集約な都市型データセンター向けアーキテクチャ。

• 1 Server : 1 App から 1 Container : 1 App の時代へ。

• 物理サーバを数百コンテナにすることでサーバの価値を最大化しやすい。

• 数百台の物理サーバをデータセンターに設置して運用するよりも楽。

13

https://www.flickr.com/photos/christopherbrown/15002659050/

コンテナの課題

• リソース制御機能が充分ではない。

• ネットワークやストレージやアプライアンスとの親和性。

• コンテナならではのクセがある。

• いざ本番で利用しようと思うと決して小さくはない学習コストが必要。

14

https://www.flickr.com/photos/34316967@N04/5025820818/

運用コスト vs. サービス提供価格

• お金で問題を解決することができる組織なら、現時点の段階でサーバーのノウハウを捨ててコンテナに挑戦するメリットはほとんどない。

• 他社よりもコストパフォーマンスの高いサービスづくりを目指す組織にとっては、コンテナ技術は戦略的に重要なテクノロジーになる。

• コンテナが仮想サーバに代わって普及していく流れは避けられない。

15

https://www.flickr.com/photos/camknows/7987520895/

コストパフォーマンスを重視しない限りは サーバ本体を自前で運用する必要性はない

• サーバのコスパ重視なら(自社運用 >)専用サーバ > VPS > クラウド

• でも、世の中ではクラウドが積極的に採用され始めている。

• 運用をクラウドにアウトソーシングしたほうがコストを下げられる。

• 運用にかかる人件費がサーバ代より高く付くことのほうが多い。

16

https://www.flickr.com/photos/danicuki/8229673441/

気を付けなければいけないポイント

• 複雑にしてはいけない、複雑になってはいけない。

• 学習コストの増大はコンテナの利点を大きく損う。

• シンプルで安価で必要最小限のステップで利用できるほど良い。

• コンテナ運用の負担を軽減するには各種外部サービスとの連携は必須。

17

https://www.flickr.com/photos/77108378@N06/17784119510/

コンテナでの運用に向いているユースケース• Ephemeral Tasks

• Learning / Demo - Linuxやスクリプトの学習、デモ用途

• CRON / Batch job - スケジュールジョブ / バッチジョブ

• CI/CD (Continuous Integration/Continuous Delivery)

• Elastic Services

• Distributed Applications - 分散型アプリケーション

• Application Deployment / Application Provisioning - デプロイ、プロビジョニング

18

https://www.flickr.com/photos/rachelpasch/4578248070/

特に Elastic Service で必要とされる機能

• 動的なサービス登録

• バックエンドサーバの動的追跡

• 構成ファイルの自動更新

19

https://www.flickr.com/photos/jted/5449095780/

代表的なユースケースとソリューション• ローカルPC内にコンテナ環境を構築したい。(ローカル環境+コンテナ) • Docker CLI, Kitematic など

• 手持ちのサーバ上にコンテナ環境を構築したい。(サーバ+コントローラー+コンテナ) • Kubernates、Mesos/Marathon, Docker Swarm, Tectonic, OpenShift, Tutum など

• コンテナホスティングを利用したい。(クラウド+コンテナ) • Amazon ECS, GoogleCloud, Triton, Giant Swarm, Carina など

• コンテナ対応PaaSを利用したい。(Public PaaS + コンテナ) • Azure, Bluemix, OpenShift など

• Elastic Service(分散型アプリケーション環境など)を構築したい。 • 上述のいずれかのソリューション+アプリケーション層での実装が必要。

20

https://www.flickr.com/photos/psd/13109673843/

PaaS vs. Container

• PaaS = Simple Application Platform (heroku, OpenShift, CloudFoundry)

• Container = Microservice, WebApps, BigData, Stream Processing, Legacy, Monolithtic, etc...

21

https://www.flickr.com/photos/22056213@N04/5454487268/

ありがちなユースケース(その1)

• 検証にモノリシックなLAMP環境やMEANスタックを立ち上げるとか。

• GentooやArch Linuxをいじるとか。

• RedmineとかWordPressを立ち上げるとか。

• これらのケースに確実に対応するには、「ワンクリックデプロイ」や「HTTPS対応」や「カスタムドメイン対応」のような機能が必要。

22

https://www.flickr.com/photos/atosorigin/9240927854/

ありがちなユースケース(その2)

• 中規模(50-500 container)なアプリケーションコンテナ連携

• 分散型アプリケーション

• これらのケースに確実に対応するには、「YAMLファイルの取り込み」や「外部サービス連携」や「VPC対応」や「VPN機能」が必要。

23

https://www.flickr.com/photos/glynlowe/10921733615/

ありがちなユースケース(その3)

• 大規模(500+ container)なアプリケーションコンテナ連携

• BigData、PaaS、SaaS 用途

• このケースに確実に対応するには、専用の「仮想インスタンスプラン」や「ベアメタルプラン」や、専用の「コンテナイメージ」などが必要。

24

https://www.flickr.com/photos/ridwan326/6993601982/

まとめ• コンテナがメインラインになるには以下のベストプラクティスが必要

• 無償試用が可能なDocker対応サービスの充実

• 日本語での具体的なユースケース事例紹介

• Appサーバと永続的なストレージやデータベースとの接続方法

• 分散型アプリケーションのデプロイとプロビジョニング

• 要求性能に応じた各種サービス連携

25

https://www.flickr.com/photos/ridwan326/6993601982/

まとめ• コンテナは潜在的には万能。

• 既存のサーバで実現できることのほとんどはコンテナでもできる。

• ホスティング屋さんの視点とアプリ屋さんの視点でも使い方の見方は異なる。

• 有用なテクノロジーを取り入れていくことは組織にとって欠かせない。

• コンテナを使う組織と使わない組織とでは技能水準に明確な差が生まれる。

• 新しいものを取り入れてプロセスや文化を改善できる組織であるほど成熟しやすい。

26

https://www.flickr.com/photos/mdpettitt/8671901426/

Any Questions?

27