Upload
google-cloud-platform-japan
View
2.017
Download
0
Embed Size (px)
Citation preview
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