50
Confidential and proprietary コンテナで作る モバイルバックエンド Google Cloud Platform Sales Engineer 福田

Google for Mobile: コンテナで作るモバイル バックエンド - 福田 潔

Embed Size (px)

Citation preview

Confidential and proprietary

コンテナで作るモバイルバックエンド

Google Cloud Platform Sales Engineer福田 潔

Confidential and proprietary Google for Mobile

Kiyoshi Fukudaグーグル株式会社

Google for Work

Google Cloud Platform Sales Engineer

Confidential and proprietary

contents

Google for Mobile

モバイルバックエンドの選択肢

コンテナとは?なぜコンテナなのか

マイクロサービスアーキテクチャ

Kubernetes と Google Container Engine

モバイルバックエンド

?

モバイルバックエンド

Confidential and proprietary

なぜコンテナなのか?

Copyright 2015 Google Inc

Googleでは10年間に渡り、すべてのサービスをコンテナで動かしてきた毎週20億以上のコンテナを立ち上げている

Images by Connie Zhou

コンテナ イメージ

依存性

アプリケーション コード

コンテナはアプリケーションコードとその依存性を一つの

ユニットとしてまとめる

これにより、アプリケーションとインフラを疎結合にするこ

とができる

• 伝統的なIT環境において、インフラエンジニアはアプリケーションの実

行環境を正しく整えることが重要

• コンテナはアプリケーションとその依存性がまとまっているので、例え

ば、開発環境、テスト環境、本番環境をまたいだデプロイが容易になる

• オンプレミス、プライベートクラウド、パブリッククラウド等異なる実行環

境間の移動が容易になる

コンテナとは?

軽量仮想マシンに比べて

軽量でシンプル。数十ミリ秒で起動

ポータブル様々な実行環境に対応し、

デプロイメントが容易

効率性リソース使用量が少なく、コンピュートリソースを細分化して効率的に利用可能

コンテナのメリット

Copyright 2015 Google Inc

コンテナ運用の課題

ノード ノード

クラスタ

ノード

???

● 複数のノードに対するコンテナのデプロイは?

● ノード障害が発生した場合は?

● コンテナ障害が発生した場合は?

● アプリケーションのアップグレードはどうやって管理する?

Kubernetes κυβερνήτης: Greek for “pilot” or “helmsman of a ship”

the open source cluster manager from Google

Kubernetesのエコシステム

Confidential and proprietary

マイクロサービスアーキテクチャ

Confidential and proprietary Google for Mobile

Google Trends: Microservices

Confidential and proprietary Google for Mobile

モノリシックアプリケーション

マイクロサービスアーキテクチャ

http://martinfowler.com/articles/microservices.html

Confidential and proprietary Google for Mobile

http://martinfowler.com/articles/microservices.htmlモノリシック マイクロサービス

マイクロサービスアーキテクチャのメリット

● 複数人での開発が用意

○ ビルドの単位を小さくできる

● バージョンアップが用意になる

○ サービス単位でアップグレード

● 実装方法の柔軟性が高まる

○ マルチプログラミング言語

○ マルチDB

○ インタフェースレベルで統一されていれば良い

Confidential and proprietary

どうやって動かすか?

Kubernetesのクラスタを構築する

Container EngineGoogle Cloud Platform

Container EngineGoogle Cloud Platform

アプリケーション(コンテナ)をデプロイする

App A

App Aポッド

レプリケーションコントローラ

App A

App A

App A

App A

App A

レプリケーションコントローラ

サービス Service A

App A

App A

App A

App A

マイクロサービス A

これだけでおしまい!

マイクロサービス A

マイクロサービス C マイクロサービス D

マイクロサービス B

マイクロサービス A

マイクロサービス Cマイクロサービス D

マイクロサービス B

マイクロサービス A

マイクロサービス Cマイクロサービス D

マイクロサービス B

マイクロサービス A

マイクロサービス C

マイクロサービス D (2.0)

マイクロサービス B

作ってみましょう

JavaScript

var http = require('http');

var server = http.createServer(function (request, response) {

response.writeHead(200, {"Content-Type": "text/plain"});

response.end("Hello Service A v1\n");

});

server.listen(8080);

アプリケーション

Bash

$ docker build -t gcr.io/<project>/servicea:v1

$ gcloud docker push gcr.io/<project>/servicea:v1

コンテナをビルドする

YAML

apiVersion: v1

kind: ReplicationController

metadata:

name: frontend

labels:

name: frontend

name: frontend

spec:

replicas: 2

selector:

name: frontend

レプリケーションコントローラ

template:

metadata:

labels:

name: frontend

spec:

containers:

- image: gcr.io/project-id/frontend:1.0

name: frontend

ports:

- containerPort: 8080

name: http-server

Bash

$ kubectl create -f servicea-controller.yaml

レプリケーションコントローラを起動する

YAML

apiVersion: v1

kind: Service

metadata:

name: frontend

labels:

name: frontend

spec:

type: LoadBalancer

フロントエンドサービス

ports:

- port: 80

targetPort: 3000

protocol: TCP

selector:

name: frontend

Bash

$ kubectl create -f servicea-service.yaml

サービスを起動する

Bash

$ kubectl scale rc servicea-controller --replicas=10

スケール

Bash

$ kubectl rolling-update servicea-v1 -f servicea-

controller-v2.yaml

バージョンアップ

まとめ

● コンテナおよびマイクロサービスアーキテクチャによりアプリケーションの作り方と運

用方法が変わってくる

● Google の社内運用をベースにした作成されたオープンソースのコンテナマネージャ → Kubenetes

● KubernetesのマネージドサービスであるGoogle Container Engineを使うと簡単

● さあ、始めてみましょう!

無料セミナーのお知らせ

● Google Cloud Platform を始めてみよう

○ ハンズオン

○ Google Compute Engine / BigQuery / Google Container Engine (coming soon…)

○ 次回日程:BigQuery編 12月15日 @グーグル 六本木オフィス

申し込みフォーム:https://goo.gl/N0g4No

無料セミナーのお知らせ

● Google Cloud Platform を知ってみよう

○ 概要紹介、顧客事例

○ 質疑応答

○ 次回日程:12月15日 @グーグル 六本木オフィス

申し込みフォーム:https://goo.gl/vFL2hO

Thank You

Google Cloud Platform 50