30
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. ヤフー株式会社 森下 大介 SpringOne Platform 2017 参加報告 - プラットフォーム周りのお話 - 2018年2月6日

JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Embed Size (px)

Citation preview

Page 1: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

ヤフー株式会社森下 大介

SpringOne Platform 2017

参加報告

- プラットフォーム周りのお話 -

2018年2月6日

Page 2: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .2

自己紹介

• ヤフーに中途入社の7年目

• 広告サービスの開発に従事

• 開発部門の部長

• Java言語サポートチーム

• Java黒帯

Page 3: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

今回のゴール

3

• アプリケーションプラットフォーム関連の話題や傾向を共有

• プラットフォームの使い分けについて考察

Page 4: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

アジェンダ

4

• セッション紹介

• Pivotal Cloud Foundry 2.0

• Docker & Kubernetes

• プラットフォームの比較

• 使い分けの考察

• まとめ

Page 5: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

確認

5

使っていますか?

• IaaS

• PaaS

• コンテナ(オーケストレーション)

Page 6: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

セッション紹介

Page 7: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

セッション一覧

7

動画は資料がとても見やすくてイイです。

■公式サイトhttps://springoneplatform.io/sessions

■YouTubehttp://info.pivotal.io/in4I0AUzclN00C0207O2J0U

Page 8: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Kuberunetes関連

8

■Pivotal Cloud Foundry 2.0https://www.youtube.com/watch?v=_uB5bBsMZIk&list=PLAdzTan_eSPQ2uPeB0bByiIUMLVAhrPHL&index=1&t=3s

■PKS: The What and How of Enterprise-Gradehttps://www.youtube.com/watch?v=bQKra0CB5zE&list=PLAdzTan_eSPQ2uPeB0bByiIUMLVAhrPHL&index=24&t=3799s

■Deploying Spring Boot Apps on Kuberneteshttps://www.youtube.com/watch?v=RelPurLZnII&list=PLAdzTan_eSPQ2uPeB0bByiIUMLVAhrPHL&index=54

■Kubernetes for the Spring Developerhttps://www.youtube.com/watch?v=OsWXtVbTnv0&list=PLAdzTan_eSPQ2uPeB0bByiIUMLVAhrPHL&index=56

Page 9: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Cloud-Native, Microservices関連

9

■Cloud-Native Java with Spring Cloud Serviceshttps://www.youtube.com/watch?v=6lCEzgkdfds&index=25&list=PLAdzTan_eSPQ2uPeB0bByiIUMLVAhrPHL

■How to Build Spring Services for Cloud-Native Platformshttps://www.youtube.com/watch?v=MbzIqgbT1-U&list=PLAdzTan_eSPQ2uPeB0bByiIUMLVAhrPHL&index=127

■Spring Cloud Gatewayhttps://www.youtube.com/watch?v=9wocKqF15B8&t=2615s&index=78&list=PLAdzTan_eSPQ2uPeB0bByiIUMLVAhrPHL

■Introducing Micrometer Application Metricshttps://www.youtube.com/watch?v=HIUoeLYWo7o&list=PLAdzTan_eSPQ2uPeB0bByiIUMLVAhrPHL&index=49

Page 10: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Pivotal Cloud Foundry 2.0

Page 11: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

概要

11

https://pivotal.io/jp/platform

以下3種類のプラットフォームで構成される。

PCFという名前はブランド名のような感じになった。

• Pivotal Application Service (PAS)

• Pivotal Function Service (PFS)

• Pivotal Container Service (PKS)

Page 12: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Before (PCF 1.x)

12

AWS GCP Azure OpenStack

BOSH

PaaS

任意のIaaS層

抽象化層

PCF 1.x

Page 13: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

After (PCF 2.0)

13

AWS GCP Azure OpenStack

BOSH

任意のIaaS層

抽象化層

PCF 2.0Pivotal Application

Service (PAS)

Pivotal Container

Service (PKS)

Pivotal Function

Service (PFS)

Kubernetes

Page 14: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Pivotal Container Service

14

https://pivotal.io/platform/pivotal-container-service

略称は「PKS」(なぜ?)

Kubernetesによるコンテナオーケストレーション環境を提供する。

PaaSよりも広いワークロードに対応できる。(Statefulだったり, Linux環境依存なものなど)

Page 15: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

Docker

&

Kubernetes

Page 16: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

概要

16

■Docker

コンテナ型の仮想環境を提供するプロダクト。

OSを丸ごと仮想化するタイプ(VMWare等)と違い、仮想化したいアプリケーションが必要とする最低限の環境(ディレクトリ構造、コマンド、ライブラリなど)を含めてDockerイメージというアーカイブファイルにして、それをプロセスとして起動する。

■Kubernetes

コンテナオーケストレーションと呼ばれる仕組みを提供するプロダクト。

Dockerコンテナのデプロイ、ネットワーク制御、インスタンス管理などを行ってくれる。長いので、略してk8sと言ったりする。

Page 17: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

試すなら

17

■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でローカル環境に構築できる

• https://github.com/kubernetes/minikube

Page 18: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

「Service」クラスタ内部IPアドレスを持ち、Podへのアクセス分散を行う。(L4ロードバランサ相当)

「Deployment」ReplicaSetを生成・管理し、ここでローリングアップデートやロールバックなどを実現する。

構成要素

18

「ReplicaSet」指定されたレプリカ数のPodを維持する。

「Pod」n個のコンテナを含む。デプロイの最小単位。

Docker

コンテナDocker

コンテナ

「Ingress」外部から到達可能なURLや、TLS終端などを提供する。(L7ロードバランサ相当)

Page 19: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

所感

19

JavaOneにも参加して同じように感じたが、Docker & Kubernetesがとても盛り上がっている。

よく語られている特徴は以下2点。

• 大抵のワークロードに対応できる

• 異なる事業者のプラットフォーム間や、オンプレ/パブリック間で共通言語として扱える• CLIとしてのdocker, kubectl

• Dockerfile, kubernetesの定義ファイル

Page 20: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

プラットフォーム

の比較

Page 21: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

IaaS

21

Infrastructure as a Service

• Amazon EC2

• Google Compute Engine

• Azure Virtual Machines

• OpenStack

利用者がOSを意識する形の仮想化。なんでも出来る自由度の代わりに、ハードウェア以外の全てを利用者が面倒を見る必要あり。

Page 22: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

PaaS

22

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などが違う。

Page 23: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

コンテナオーケストレーション

23

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、基本要素が一緒。ゆえに互換性、移植性が高い。特定のアプリケーション・アーキテクチャを強制しない。

Page 24: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

比較

24

IaaSPaaS

開発者寄り。開発言語とランタイムだけ意識してpushすればOK。ただしアプリケーション形態を適合する形にする必要あり。

インフラ寄り。OSを意識して使うので、運用やメンテナンスは実機とおなじ。その代わり自由度が高い。

Docker & Kubernetes

コンテナオーケストレーションは、両者の中間となって、自由度の高さとデプロイ・運用の楽さをあわせもつ。学習コストなども中間(PaaSよりは覚えることが多い)

楽だが制約あり面倒だが自由

Page 25: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

使い分けの考察

Page 26: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

PaaSを選ぶケース

26

Cloudに馴染む形になっている(クラウドフレンドリー的な)アプリケーションならPaaS。

アプリケーション以外の要素を極力省いてくれるので一番ラクだし、MarketPlaceのような、ミドルウェア的な機能もある。

※ただ個人的にはPCF(PaaS)でもKubernetesのようなローリングアップデートがぜひ欲しい

Page 27: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

コンテナを選ぶケース

27

以下のようなケースならDocker&Kubernetes。

※ただし学習コストはPaaSよりは多少かかる。

• PaaSがサポートしない言語、ランタイム

• PaaSがサポートしないアプリケーション形態

(非常駐型バッチ、複数プロセスで1デプロイ単位など)

• OSレイヤを意識するもの

(ローカルリソース、nativeライブラリなどを利用)

Page 28: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

理想

28

Cloud-Nativeな形のアプリケーションにしておくことでどこでも動く。

最高の移植性をもったものとなるので変化に適合しやすい。

• PaaSならpushすればよい

• コンテナオーケストレーション環境でも、シンプルなDockerコンテナにすればよい

※でもこれに苦戦しているところが多いから今のコンテナオーケストレーションの盛り上がりがあるのかも・・・

Page 29: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

まとめ

Page 30: JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話

Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved .

まとめ

30

• Docker & Kubernetesはとても盛り上がっている

• PaaSに適合できないケースでも使える(場合がある)

• 理想はCloud-Nativeなアプリケーション開発

• とはいえ、必要なら選択・活用できるように、基礎教養としておぼえましょう。