google for mobile: コンテナで作るモバイル バックエンド - 福田 潔
TRANSCRIPT
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
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
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
○ インタフェースレベルで統一されていれば良い
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
YAML
apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
name: frontend
spec:
type: LoadBalancer
フロントエンドサービス
ports:
- port: 80
targetPort: 3000
protocol: TCP
selector:
name: frontend
まとめ
● コンテナおよびマイクロサービスアーキテクチャによりアプリケーションの作り方と運
用方法が変わってくる
● 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