exploring the philosophy behind docker/kubernetes/openshift

24
Exploring the Philosophy behind Docker/Kubernetes/OpenShift 〜Docker/Kubernetes/OpenShiftの「心」を考えてみる レッドハット株式会社 中井悦司 / Etsuji Nakai Senior Solution Architect and Cloud Evangelist v1.1 2016/05/10

Upload: etsuji-nakai

Post on 08-Jan-2017

2.012 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

Exploring the Philosophy behindDocker/Kubernetes/OpenShift〜Docker/Kubernetes/OpenShiftの「心」を考えてみる

レッドハット株式会社

中井悦司 / Etsuji NakaiSenior Solution Architect

and Cloud Evangelist

v1.1 2016/05/10

Page 2: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

2

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

Contents

Dockerが生まれた背景から読み解くDockerの「心」 Googleの公開文書から読み解くKubernetesの「心」 PaaSのユースケースから読み解くOpenShiftの「心」 まとめ

Page 3: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

Dockerが生まれた背景から読み解くDockerの「心」

Page 4: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

4

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

Dockerが提供する基本機能

Dockerfile

① Dockerイメージを自動作成

OSイメージ

アプリケーションライブラリー

アプリケーションフレームワーク

イメージの作成手順を記載

Dockerイメージ

OS上にインストール可能なものはすべてイメージ化可能

② Dockerイメージを保存・公開

③ Dockerサーバーに イメージを配布・実行

Page 5: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

5

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

History

2011年 米dotCloud社がパブリックのPaaSサービスを提供開始 2013年 dotCloudのコア技術を「Docker」として公開 2014年 dotCloud社は、Docker, Inc.に社名を変更して、Dockerを

     活用したサービス、製品にビジネスを切り替えることを表明 (*)

(*) dotCloudのPaaSサービスは、米cloudControl社が事業を引き継いでサービスを提供中  https://www.dotcloud.com/about.html

Page 6: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

6

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

クラウドサービスとしてのPaaS環境の課題 (1)

PaaSのメリット⇒ 実行環境の構築・管理に手間をかけず、アプリケーション開発に集中

アプリケーション実行環境(フレームワーク/ライブラリー)

サーバー/OS

開発したコードをクラウドにデプロイ

アプリケーションプログラム

Page 7: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

7

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

アプリケーション実行環境(フレームワーク/ライブラリー)

サーバー/OS

アプリケーションプログラム

クラウドサービスとしてのPaaS環境の課題 (2)

アプリケーションのコードと実行環境は、多くの場合、密結合しており、「ありもの」の実行環境だけでは、不便が生じることも多い

「悪魔は細部に宿る」

・使いたいフレームワークが無い・必要なライブラリーが不足・ライブラリーバージョンの不整合・etc...

Page 8: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

8

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

dotCloudが実行環境のメンテナンスに用意した仕組み dotCloudは、クラウド内部の仕組みとして、アプリケーションの実行環

境を自動構築して「Dockerイメージ」に固める技術を開発– さらに、クラウド以外の環境でも利用できるようにオープンソースとして公開

Dockerサービス

サーバー/OS

アプリケーションプログラム

さまざまな実行環境をDockerイメージとして

作成・メンテナンス

Dockerイメージ

Page 9: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

9

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

DevOpsの課題は開発と運用の「プロセスの断絶」

運用

変化が激しくて内容を伝えきれない

受け入れテストの時間が足りない

内容が分からないから運用手順書が更新できない

サービスを止めずに更新する方法が分からない

開発環境と本番環境の違いが不明でデプロイ時に何がおきるが分からない

「越えられない壁?」

設計

要件定義

テスト

コ ディング

Page 10: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

10

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

Dockerの「心」とは? アプリケーション実行環境のイメージ化

– アプリケーション開発者が責任を持って「確実に動く環境」を用意する– 本番環境へのデプロイを別手順で実施しない

アプリケーションのポータビリティ– Dockerデーモンがある環境ならどこでも実行可能– アプリケーションに合わせたサーバー/OS環境の準備を個別に実施しない

Dev(アプリ)とOps(インフラ)の境界を明確にすることでDevOpsをよりスムーズに実現

Dev視点

Ops視点

Page 11: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

Googleの公開文書から読み解くKubernetesの「心」

Page 12: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

12

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

元ネタ Large-scale cluster management at Google with Borg

– http://research.google.com/pubs/pub43438.html

Borg, Omega, and Kubernetes– http://research.google.com/pubs/pub44843.html

おすすめ

Page 13: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

13

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

Application Oriented Infrastructure 「コンテナによる隔離と依存性の最小化は、グーグル社内で非常

に効果的であることがわかったので、グーグルの社内インフラでは、唯一コンテナだけを利用できるようにした」

「個々のサーバーではなく、コンテナを管理するAPIを用意することで、データセンターの『プライマリーキー』をサーバーからアプリケーションへ変化させた」

– アプリケーション開発者、および、運用担当者は、個々のサーバーやOSの設定を気にする必要がなくなった。

– インフラチームは、実行中のアプリケーション、あるいは、その開発者に大きな影響を与えることなくハードウェアやOSの更新を実施できるようになった。

– リソースのモニタリングをサーバーではなく、アプリケーション単位で実施するように変わり、アプリケーション監視や問題判別の精度が向上した。

⇒ 個々のハードウェアやOSの違いをアプリケーション開発者に意識させず、   「1つのコンピューターであるかのように利用可能にした」

Page 14: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

14

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

サーバーの境界を意識しないアプリケーションデプロイ

コンテナの配置先を自動的に振り分ける仕組みを用いて、複数ホストを「1つのコンピューティングリソース」として活用します。

アプリケーションを機能単位に分割してコンテナ化することで、さらなるメリットが得られます。

– 必要な機能を負荷に応じてオートスケールします。– 機能単位でコンテナを入れ替えることにより、稼働中のアプリケーションの動的な機能

変更が可能になります。

Dockerホスト Dockerホスト Dockerホスト ・・・

複数ホストを束ねて「1つのコンピュータ」として活用

マイクロサービス化アプリケーション

Page 15: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

PaaSのユースケースから読み解くOpenShiftの「心」

Page 16: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

16

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

サーバー/仮想マシン

Docker

サーバー/仮想マシン

Docker

Kubernetes

DevOps環境

・・・

実行リソース提供

コンテナー管理

複数サーバーに跨るオーケストレーション

UI、モニタリング、イメージ作成ワークフロー

etc.

RHEL7

OpenShift v3

OpenShift v3:DockerによるDevOps環境を実現

・・・

・・・

OpenShift v3は、Docker/Kubernetesをコアコンポーネントとして、インテグレートされたDevOps環境を提供します。

Page 17: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

17

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

OpenShiftが提供する主な追加機能

Dockerイメージのバージョン管理– イメージストリームとイメージビルドシステム– 「開発環境」そのものを開発可能に

同一の開発環境のクラウド上への配布– テンプレート機能–それぞれの開発者に「自分専用」の開発/検証環境を提供

マルチテナントでの利用– プロジェクト単位でのネームスペースの分割– 開発機能(ブランチ)単位で独立した開発/検証環境を提供

サーバーの境界を意識しないコンテナのデプロイ– Kubernetesによるコンテナのオーケストレーション–マイクロサービス型アプリケーションのDevOps環境を実現

Page 18: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

18

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

従来のPaaSの利用形態

アプリ開発者

開発環境テンプレート

新しいコードをPushすると開発・テスト環境に展開してビルド

開発したコードの稼働確認

Page 19: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

19

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

従来のPaaSの利用形態

アプリ開発者

開発環境テンプレートテンプレートそのものの

メンテナンスはどうする?開発中に開発環境の

アップデートは可能?

開発が終わったアプリはどうやって本番展開する?

Page 20: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

20

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

OpenShiftにおける役割分担

アプリ開発者

開発環境構成テンプレート

テンプレート管理者公式RHELイメージ

Dockerfile

テスト担当者

開発環境イメージ

テスト環境構成テンプレート

開発中アプリイメージ

ソースコード

動作確認

コード開発

テスト用デプロイ環境

動作確認

本番環境構成テンプレート

開発用デプロイ環境本番用デプロイ環境

開発済みアプリイメージ

テスト済みアプリイメージ

リリース担当者

Page 21: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

21

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

テンプレートとGUIの組み合わせによるPaaSの提供

テンプレート機能とGUIを組み合わせることで、アプリケーション開発者には、従来型の「PaaS」環境として見せることができます。

アプリケーション開発者はコードの開発のみに集中

Page 22: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

まとめ

Page 23: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

23

Exploring the Philosophy behindDocker/Kubernetes/OpenShift

今後の方向性 コンテナ化とマイクロサービス化は、アプリケーションの特性に応じた併用が可

能だと考えます。

–複数サービスの共通機能(ある程度固定化した機能)は、コンテナ化でSaaS的に提供– サービス特有の機能(頻繁な変更が求められる部分)は、マイクロサービス化して

OpenShiftで開発・実行– いずれの場合もアプリケーションとインフラ環境の分離性を高めることで、クラウド間

での環境移行は圧倒的に容易

OpenStack

仮想マシン ・・・

・・・

アプリケーションのコンテナ化で本番デプロイを安全・迅速に

OpenStack

ベアメタルサーバー

ベアメタルサーバー ・・・

アプリケーションのマイクロサービス化でオートスケール、動的機能拡張を実現

仮想マシン

仮想マシン

Dockerによるコンテナ化OpenShiftによるマイクロサービス化

Page 24: Exploring the Philosophy behind Docker/Kubernetes/OpenShift

EMPOWER PEOPLE,

EMPOWER ENTERPRISE,

OPEN INNOVATION.