Upload
thinkitimpress
View
710
Download
0
Embed Size (px)
Citation preview
Copyright © 2016 TIS Inc. All rights reserved.
Dockercon 2016報告会 #tistudy201606
Docker国内外本番環境の事例紹介
TIS株式会社 戦略技術センター 森元 敏雄
Copyright © 2016 TIS Inc. All rights reserved.
自己紹介
2
氏名 :森元敏雄
所属 :TIS株式会社 戦略技術センター
担当業務:部門内の開発・検証環境の構築・保守
OSS関連製品の技術調査、記事執筆・寄稿
執筆記事: 連載1:Dockerを知る-周辺ツールと業界動向
(https://thinkit.co.jp/story/2014/12/02/5456)
連載2:より深くDockerを知る (https://thinkit.co.jp/story/2015/03/06/5672)
連載3:進化を続けるDockerの今を知る (https://thinkit.co.jp/story/2015/03/06/5672)
OSS運用監視ソフト 注目の10製品徹底比較 2016年版 (http://www.atmarkit.co.jp/ait/articles/1606/14/news011.html)
OSS サーバ構築自動化ツール、4製品徹底検証 2016年版 (https://www.atmarkit.co.jp/ait/articles/1606/14/news011.html)
TIS技術blog Tech-sketch (http://tech-sketch.jp/author/morimoto)
Copyright © 2016 TIS Inc. All rights reserved.
今回のセッションの概要
3
Dockerを開発環境、本番環境に活用した先進的な公開事例をご紹介します。
その事例から想定される、Dockerの本番利用イメージを考えてみます。
今回の発表内容は Think IT上の👈こちらの 記事を基にしています。
https://thinkit.co.jp/article/9701
合わせご一読頂けますと幸いです。
Copyright © 2016 TIS Inc. All rights reserved.
アジェンダ
1. 開発環境の事例
① パッケージの保守開発環境(Works Applications社)
2. 本番環境の事例
① 料理レシピ情報サイト運用(クックパット社)
② 大規模コマースサイト運用(Shopify社)
③ 研究機関の大規模バッチ運用 (国立情報学研究所)
3. Dockerの本番活用イメージ
① Webサイト環境イメージ
② バッチ環境イメージ
4
Copyright © 2016 TIS Inc. All rights reserved.
アジェンダ
1. 開発環境の事例
① パッケージの保守開発環境(Works Applications社)
2. 本番環境の事例
① 料理レシピ情報サイト運用(クックパット社)
② 大規模コマースサイト運用(Shopify社)
③ 研究機関の大規模バッチ運用 (国立情報学研究所)
3. Dockerの本番活用イメージ
① Webサイト環境イメージ
② バッチ環境イメージ
5
Copyright © 2016 TIS Inc. All rights reserved.
①パッケージの保守開発環境(Works Applications社)
6
導入前の問題 • 多数のパッケージ製品の開発検証環境が必要 • 各製品の新旧バージョンの保守・開発環境が必要 • 国内・海外の開発拠点の環境の共通化が必要
株式会社ワークスアプリケーションズ 遠藤博樹氏 講演資料より引用 http://www.slideshare.net/endhrk/Docker-use-case-36473690/
生産管理ソリューション
人工知能型ERP
財務・管理会計 人事・給与 マイナンバー管理 グループウェア メッセンジャー SCM Eコマース BPM クラウド管理サービス グローバル対応 etc…
Copyright © 2016 TIS Inc. All rights reserved. 7
開発環境でのバージョン不整合の問題
①パッケージの保守開発環境(Works Applications社)
Copyright © 2016 TIS Inc. All rights reserved. 8
開発環境を東京に集約することによる問題
①パッケージの保守開発環境(Works Applications社)
Copyright © 2016 TIS Inc. All rights reserved. 9
対応策 • 開発環境(開発・検証・CI)をDockerコンテナに統合
• 各製品、各バージョンの開発環境をリポジトリで管理
• 開発者のリクエストに応じて、必要となる開発環境一式をコンテナで一括提供する仕組みを実現
• 開発環境をオンプレミスだけではなく、パブリッククラウドも利用できる状態を実現
①パッケージの保守開発環境(Works Applications社)
Copyright © 2016 TIS Inc. All rights reserved. 10
製品、バージョンに対応した開発環境をコンテナで提供
①パッケージの保守開発環境(Works Applications社)
Copyright © 2016 TIS Inc. All rights reserved. 11
環境をオンプレミス、クラウドで自由に選択可能に
①パッケージの保守開発環境(Works Applications社)
Copyright © 2016 TIS Inc. All rights reserved. 12
導入後の効果 • 開発環境提供の運用コストの低減
• 各製品の各バージョンの開発・検証環境が統一され、製品の品質が安定
• 使用するリソース量が削減でき、開発者個々に開発・検証環境の提供を実現
• DBサーバを含む開発・検証環境を開発者に近いロケーションでの提供を実現
品質の向上とコストの低減を両立する為には、 貴重なフルスタックエンジニアを開発環境の改善という投資にアサインできるかが鍵になる。
①パッケージの保守開発環境(Works Applications社)
Copyright © 2016 TIS Inc. All rights reserved.
アジェンダ
1. 開発環境の事例
① パッケージの保守開発環境(Works Applications社)
2. 本番環境の事例
① 料理レシピ情報サイト運用(クックパット社)
② 大規模コマースサイト運用(Shopify社)
③ 研究機関の大規模バッチ運用 (国立情報学研究所)
3. Dockerの本番活用イメージ
① Webサイト環境イメージ
② バッチ環境イメージ
13
Copyright © 2016 TIS Inc. All rights reserved.
①料理レシピ情報サイト運用(クックパット社)
14
導入の為に実施した対策 • コンテナの更新によるアクセスの変更は、nginxの設定の変更で対応
• コンテナの自動デプロイの導入により、アプリケーションの更新作業を自動化
クックパッド株式会社 開発者ブログより引用http://techlife.cookpad.com/entry/2015/04/20/134758
前提条件 • WebアプリケーションサーバとしてDockerを採用 • アプリケーションの更新はDockerコンテナ単位で
実施 • 更新作業によるサービス停止は許容されない
◆Docker環境で構築されたシステムの運用自動化を実現
Copyright © 2016 TIS Inc. All rights reserved. 15
アプリケーションの更新はコンテナを入れ替える形で実施
呼び出すコンテナの切り替えは上位のnginxの設
定変更で対応
②料理レシピ情報サイト運用(クックパット社)
Copyright © 2016 TIS Inc. All rights reserved. 16
実現できたこと • 1つのシステムを複数のDockerコンテナの組み合わせで構成
• クラスタ構成されたDockerサーバでの負荷分散および冗長化の確保
• アプリケーションの更新および設定変更の自動化
今後の課題 • コンテナ配置のワークロードの自動化 • コンテナ増減によるオートスケールの実現
②料理レシピ情報サイト運用(クックパット社)
Copyright © 2016 TIS Inc. All rights reserved.
アジェンダ
1. 開発環境の事例
① パッケージの保守開発環境(Works Applications社)
2. 本番環境の事例
① 料理レシピ情報サイト運用(クックパット社)
② 大規模コマースサイト運用(Shopify社)
③ 研究機関の大規模バッチ運用 (国立情報学研究所)
3. Dockerの本番活用イメージ
① Webサイト環境イメージ
② バッチ環境イメージ
17
Copyright © 2016 TIS Inc. All rights reserved. 18
②大規模コマースサイト運用(Shopify社)
Shopify ENGINEERING blogのGraeme Johnson氏の記事から引用https://engineering.shopify.com/17489060-docker-at-shopify-how-we-built-containers-that-power-over-100-000-online-shops
◆10万テナントのショップサイトをDocker環境で実現
Copyright © 2016 TIS Inc. All rights reserved. 19
導入方法 • コンテナ内部から不要な機能を除き、最小化 • コンテナの構築をDockerfileで自動化 • アプリケーションをDockerコンテナで動作させる
ことを前提とする Containerizingを行った • 提供するアプリケーションを1つのコンテナに集約
導入後の効果 • 利用申し込みからテナントへのサービスの提供の自動化を実現
• サービス提供までの時間短縮を実現 • リソース使用量の低減にも成功 • 現在は20万件以上のテナントにサービスを提供
②大規模コマースサイト運用(Shopify社)
Copyright © 2016 TIS Inc. All rights reserved.
アジェンダ
1. 開発環境の事例
① パッケージの保守開発環境(Works Applications社)
2. 本番環境の事例
① 料理レシピ情報サイト運用(クックパット社)
② 大規模コマースサイト運用(Shopify社)
③ 研究機関の大規模バッチ運用 (国立情報学研究所)
3. Dockerの本番活用イメージ
① Webサイト環境イメージ
② バッチ環境イメージ
20
Copyright © 2016 TIS Inc. All rights reserved. 21
③研究機関の大規模バッチ運用 (国立情報学研究所)
国立情報学研究所(NII) 横山重俊先生の講演資料から引用http://www.iic.hokudai.ac.jp/kyodo_kenkyu/cloud-week-2015/document/20150909yokoyama.pdf
経緯 • 某事件の影響で遺伝子研究の分野でも論文の再現性の検証を行うことが必須に
• 論文の検証に再現には、巨大な遺伝子のデータを大規模かつ複雑なソフトウェアでの解析が必須
Copyright © 2016 TIS Inc. All rights reserved. 22
③研究機関の大規模バッチ運用 (国立情報学研究所)
課題 • 巨大データの処理のために、各大学のリソースを1
つの大きなクラウドとして利用できる環境を実現 ⇒そのクラウド環境の運用負荷が課題に
Copyright © 2016 TIS Inc. All rights reserved. 23
③研究機関の大規模バッチ運用 (国立情報学研究所)
対応 • 遺伝子解析プログラムをDockerコンテナ化 • 遺伝子解析処理の超並列稼働と順序制御を自動化
Copyright © 2016 TIS Inc. All rights reserved.
まとめ:Dockerの本番導入事例からわかること
これら導入事例をから、Dockerを本番で活用する為には以下を考慮する必要があると考えられる。
24
① Dockerコンテナは、同じ機能を大量かつ、並列で動作させるのに適している。
②1つのコンテナには、稼働させる1つの機能を搭載する。
③ 搭載するアプリケーションもDockerコンテナで動作させることを前提で開発する。
④ Dockerを採用する最大の目的は、サービス提供時間の短縮と運用の自動化である。
Copyright © 2016 TIS Inc. All rights reserved.
アジェンダ
1. 開発環境の事例
① パッケージの保守開発環境(Works Applications社)
2. 本番環境の事例
① 料理レシピ情報サイト運用(クックパット社)
② 大規模コマースサイト運用(Shopify社)
③ 研究機関の大規模バッチ運用 (国立情報学研究所)
3. Dockerの本番活用イメージ
① Webサイト環境イメージ
② バッチ環境イメージ
25
Copyright © 2016 TIS Inc. All rights reserved.
①Webサイト環境
26
Copyright © 2016 TIS Inc. All rights reserved.
①Webサイト環境
27
セッション層
アプリケーション層
永続データ層
Copyright © 2016 TIS Inc. All rights reserved.
②バッチ環境イメージ
28
対象データの分割とコンテナの分散配置が肝
Copyright © 2016 TIS Inc. All rights reserved.
②バッチ環境イメージ
29
東京工業大学 寛本英之先生 論文「科学技術計算における効率の良い複数拠点利用とそれを実現するユーザ駆動型・拠点協調フレームワークの開発と検証」より引用 https://jhpcn-kyoten.itc.u-tokyo.ac.jp/ja/docH27/FinalRep/jh150042-MD03_FinalRep.pdf
◆Docker環境でも適用できそうなバッチの実装
複数のNodeに対して全てのバッチ処理を要求しておく
Copyright © 2016 TIS Inc. All rights reserved.
②バッチ環境イメージ
30
別nodeで処理が開始されたJOBはキャンセルする。
Copyright © 2016 TIS Inc. All rights reserved.
まとめ:Dockerの本番活用に必要なもの
Dockerを活用した本番環境を稼働、運用する為には
『Docker環境に最適化されたアプリケーション
+運用フレームワーク製品の開発』が必要
31
企業間の連携だけではなく、Dockerの活用についての知見も実績も豊富な大学・研究機関との連携も行いたい
http://www.iic.hokudai.ac.jp/kyodo_kenkyu/cloud-week-2016/