>100 Views
February 06, 18
スライド概要
2018/02/05のJSUGでお話させてもらった、アプリケーションプラットフォーム関連についての資料です。
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
SpringOne Platform 2017 参加報告 - プラットフォーム周りのお話 2018年2月6日 ヤフー株式会社 森下 大介 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
自己紹介 • • • • • 2 Co p yrig ht © 2 0 1 7 ヤフーに中途入社の7年目 広告サービスの開発に従事 開発部門の部長 Java言語サポートチーム Java黒帯 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
今回のゴール 3 • アプリケーションプラットフォーム関連の 話題や傾向を共有 • プラットフォームの使い分けについて考察 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
アジェンダ • • • • • • 4 セッション紹介 Pivotal Cloud Foundry 2.0 Docker & Kubernetes プラットフォームの比較 使い分けの考察 まとめ Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
確認 使っていますか? • IaaS • PaaS • コンテナ(オーケストレーション) 5 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
セッション紹介 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
セッション一覧 動画は資料がとても見やすくてイイです。 ■公式サイト https://springoneplatform.io/sessions ■YouTube http://info.pivotal.io/in4I0AUzclN00C0207O2J0U 7 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Kuberunetes関連 ■Pivotal Cloud Foundry 2.0 https://www.youtube.com/watch?v=_uB5bBsMZIk&list=PLAdzTan_eSPQ2uPeB0bByiIUML VAhrPHL&index=1&t=3s ■PKS: The What and How of Enterprise-Grade https://www.youtube.com/watch?v=bQKra0CB5zE&list=PLAdzTan_eSPQ2uPeB0bByiIUML VAhrPHL&index=24&t=3799s ■Deploying Spring Boot Apps on Kubernetes https://www.youtube.com/watch?v=RelPurLZnII&list=PLAdzTan_eSPQ2uPeB0bByiIUMLV AhrPHL&index=54 ■Kubernetes for the Spring Developer https://www.youtube.com/watch?v=OsWXtVbTnv0&list=PLAdzTan_eSPQ2uPeB0bByiIUM LVAhrPHL&index=56 8 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Cloud-Native, Microservices関連 ■Cloud-Native Java with Spring Cloud Services https://www.youtube.com/watch?v=6lCEzgkdfds&index=25&list=PLAdzTan_eSPQ2uPeB0b ByiIUMLVAhrPHL ■How to Build Spring Services for Cloud-Native Platforms https://www.youtube.com/watch?v=MbzIqgbT1U&list=PLAdzTan_eSPQ2uPeB0bByiIUMLVAhrPHL&index=127 ■Spring Cloud Gateway https://www.youtube.com/watch?v=9wocKqF15B8&t=2615s&index=78&list=PLAdzTan_eS PQ2uPeB0bByiIUMLVAhrPHL ■Introducing Micrometer Application Metricshttps://www.youtube.com/watch?v=HIUoeLYWo7o&list=PLAdzTan_eSPQ2uPeB0b ByiIUMLVAhrPHL&index=49 9 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Pivotal Cloud Foundry 2.0 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
概要 https://pivotal.io/jp/platform 以下3種類のプラットフォームで構成される。 PCFという名前はブランド名のような感じになった。 • Pivotal Application Service (PAS) • Pivotal Function Service (PFS) • Pivotal Container Service (PKS) 11 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Before (PCF 1.x) PaaS PCF 1.x BOSH 抽象化層 任意のIaaS層 12 AWS Co p yrig ht © 2 0 1 7 GCP Azure Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . OpenStack
After (PCF 2.0) PCF 2.0 Pivotal Application Service (PAS) Pivotal Function Service (PFS) Pivotal Container Service (PKS) Kubernetes BOSH 抽象化層 任意のIaaS層 13 AWS Co p yrig ht © 2 0 1 7 GCP Azure Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . OpenStack
Pivotal Container Service https://pivotal.io/platform/pivotal-container-service 略称は「PKS」(なぜ?) Kubernetesによるコンテナオーケストレーション環境を提供 する。 PaaSよりも広いワークロードに対応できる。 (Statefulだったり, Linux環境依存なものなど) 14 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Docker & Kubernetes Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
概要 ■Docker コンテナ型の仮想環境を提供するプロダクト。 OSを丸ごと仮想化するタイプ(VMWare等)と違い、仮想化したいアプリケーション が必要とする最低限の環境(ディレクトリ構造、コマンド、ライブラリなど)を含めて Dockerイメージというアーカイブファイルにして、それをプロセスとして起動する。 ■Kubernetes コンテナオーケストレーションと呼ばれる仕組みを提供するプロダクト。 Dockerコンテナのデプロイ、ネットワーク制御、インスタンス管理などを行ってくれ る。長いので、略してk8sと言ったりする。 16 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
試すなら ■Docker Docker for Windows/Macで試せる。 ※以前あったDocker ToolboxはLegacy desktop solutionとのこと • https://docs.docker.com/docker-for-mac/ • https://docs.docker.com/docker-for-windows/ ■Kubernetes minikubeでローカル環境に構築できる • 17 https://github.com/kubernetes/minikube Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
構成要素 「Ingress」 「Service」 外部から到達可能なURLや、 TLS終端などを提供する。 (L7ロードバランサ相当) クラスタ内部IPアドレスを持ち、 Podへのアクセス分散を行う。 (L4ロードバランサ相当) 「Deployment」 ReplicaSetを生成・管理し、 ここでローリングアップデートやロールバックなどを実現する。 「ReplicaSet」 指定されたレプリカ数のPodを維持する。 「Pod」 n個のコンテナを含む。デプロイの最小単位。 Docker コンテナ 18 Co p yrig ht © 2 0 1 7 Docker コンテナ Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
所感 JavaOneにも参加して同じように感じたが、 Docker & Kubernetesがとても盛り上がっている。 よく語られている特徴は以下2点。 • 大抵のワークロードに対応できる • 異なる事業者のプラットフォーム間や、 オンプレ/パブリック間で共通言語として扱える • • 19 CLIとしてのdocker, kubectl Dockerfile, kubernetesの定義ファイル Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
プラットフォーム の比較 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
IaaS Infrastructure as a Service • • • • Amazon EC2 Google Compute Engine Azure Virtual Machines OpenStack 利用者がOSを意識する形の仮想化。なんでも出来る自由度 の代わりに、ハードウェア以外の全てを利用者が面倒を見る 必要あり。 21 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
PaaS Platform as a Service • Amazon Elastic Beanstalk • Google App Engine • Azure App Service • Heroku • Pivotal Cloud Foundry 1.x • Pivital Application Service(PCF 2.0) 利用者はアプリケーションのランタイムのみ意識する形の仮想化。面倒を見る範 囲が極小化される代わりにアプリケーション形態を強要させられる。また、各サー ビスごとの環境、cli、サポート言語、FWなどが違う。 22 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
コンテナオーケストレーション IaaSとPaaSの中間。 • • • • • • Amazon Elastic Container Service for Kubernetes Google Kubernetes Engine Azure Container Service Redhat OpenShift Pivital Container Service(PCF 2.0) Cisco Container Platform Docker & Kubernetes。 各サービスでcli、基本要素が一緒。ゆえに互換性、移植性が高い。 特定のアプリケーション・アーキテクチャを強制しない。 23 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
比較 インフラ寄り。OSを意識して使うので、 運用やメンテナンスは実機とおなじ。 その代わり自由度が高い。 IaaS 面倒だが自由 開発者寄り。開発言語とランタイムだけ意識して pushすればOK。ただしアプリケーション形態を 適合する形にする必要あり。 PaaS Docker & Kubernetes コンテナオーケストレーションは、両者の中間となって、 自由度の高さとデプロイ・運用の楽さをあわせもつ。 学習コストなども中間(PaaSよりは覚えることが多い) 24 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 楽だが制約あり
使い分けの考察 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
PaaSを選ぶケース Cloudに馴染む形になっている(クラウドフレンドリー的 な)アプリケーションならPaaS。 アプリケーション以外の要素を極力省いてくれるので一 番ラクだし、MarketPlaceのような、ミドルウェア的な機能 もある。 ※ただ個人的にはPCF(PaaS)でもKubernetesのような ローリングアップデートがぜひ欲しい 26 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
コンテナを選ぶケース 以下のようなケースならDocker&Kubernetes。 ※ただし学習コストはPaaSよりは多少かかる。 27 • PaaSがサポートしない言語、ランタイム • PaaSがサポートしないアプリケーション形態 (非常駐型バッチ、複数プロセスで1デプロイ単位など) • OSレイヤを意識するもの (ローカルリソース、nativeライブラリなどを利用) Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
理想 Cloud-Nativeな形のアプリケーションにしておくことで どこでも動く。 最高の移植性をもったものとなるので変化に適合しやすい。 • • PaaSならpushすればよい コンテナオーケストレーション環境でも、 シンプルなDockerコンテナにすればよい ※でもこれに苦戦しているところが多いから今のコンテナオーケス トレーションの盛り上がりがあるのかも・・・ 28 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
まとめ Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
まとめ • Docker & Kubernetesはとても盛り上がっている • PaaSに適合できないケースでも使える(場合がある) • 理想はCloud-Nativeなアプリケーション開発 • とはいえ、必要なら選択・活用できるように、 基礎教養としておぼえましょう。 30 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .