SlideShare a Scribd company logo
Our Journey to GCP
Who are we?
Future Shopping Experience
Web iOS Android
近くの店に  からアクセス
アイテムについて  で知る
でショッピングを楽しむ
     でお店とつながる
● 7名のエンジニア
○ 1x iOS
○ 1x Android / Vue.js
○ 2x Vue.js (一人リモート)
○ 3x バックエンド
(移行時には2名)
● デザイナー x1
● 他の部署には30名以上のメンバー
team
移行するにあたってのモチベーション
● モノリシックなアーキテクチャ
● バグの原因特定と解決の難しさ
● 開発環境ではDocker を利用していたが商用はコンテナ化されていなかった
● Kubernetes へのチーム全体の興味
● 技術の進化によるチーム文化の変化
● 未来に向けた考え
FACY 移行前アーキテクチャ EC2 Instances
● Nginx
● Rails + Vue.js
なぜGCP を選んだのか
● クラウドネイティブ時代のパートナーとしてのGoogle
● 絶え間ない進化:Google API の活用
● 他Google サービスの適用
● Google データポータル(旧 データスタジオ)の非エンジニアでの利用
● 素晴らしいドキュメントと手頃なサポートプラン
移行の流れ
テスト
データ移行&
初期開発
調整検討
詳細計画
順応&設定
リリース
調整
評価
モノリシック アーキテクチャ
メリット
● (多くの場合)普通に動く
● 1つの場所にコードがある
● 開発者が慣れている
● インフラの保守が簡単
デメリット
● 新しい開発者には理解が難しい
● 密結合し、”おまじない”が多くデバッ
グが難しい
● デプロイがリスキーになりうる
● 大きな変更時にはよく全体のメンテ
ナンスが必要になる
Assessment
マイクロサービス アーキテクチャ
メリット
● 一度の実装で、再利用可能
● サービスレベルでのモジュール化:
少ない”おまじない”とデバッグのし
やすさ
● スケールの簡易化と高い冗長性
● ランニング コスト削減
デメリット
● イニシャル コストが高い:誰もGCP
に慣れていなかった
● イニシャル コストが高い:コードの書
き直し
● 分散サービスにはこれまでとは違う
管理手法が必要
Assessment
短期的な移行ゴール
● 技術的負債とバグの軽減
● デプロイを安全で簡単にする
● 長期的なコスト削減
● 監視精度の向上
● フォールト トレラント(耐障害性)の改善
● 何かおかしいときのサポート体制
Assessment
どうやって短期的な移行ゴールを達成したのか
● Kubernetes(GKE)の利用
● Infrastructure as code: Kustomize を Declarative Configuration で利用
● Stackdriver Logging 上でのアラート、ダッシュボードの活用
● Google のカスタマー エンジニアとのディスカッション
● Google のサポート契約
Detailed Planning
移行の流れ
検討
詳細計画
順応&設定
テスト
データ移行&
初期開発
調整
リリース
調整
評価
移行アプローチの検討
● リフト&シフト
● リビルド(再構築)
● 移行してモダナイズ
https://cloud.google.com/migrate
Detailed Planning
長期的な移行ゴール
● コード自体を簡単に理解でき、利用可能なカタチにすること
● アプリケーション内で問題のあるパーツを分離すること
● 新しい開発部分はサービスに焦点をあてたアプローチを取れること
Detailed Planning
長期的な移行ゴールの達成方法
● 依存性を軽減するために、既存コードをモジュール化
● 新規開発時に素早くデプロイを可能にするためにマイクロサービス テンプレートを
開発
● 新規サービスのためにCloud Endpoints を利用
● OpenAPI 仕様:開発者が開発ポータル上で仕様の確認とテストができる
● Firebase Authentication の採用
● メッセージング、イベントの取り込み、配信としてCloud Pub/Sub の活用
Detailed Planning
GCP Services
...
...
...
Legacy App
facy.jp
アーキテクチャの ゴー
ル
Cloud SQL
Proxy
Logging
Agent
Stackdriver
Cloud
Storage
/new_api_1
Cloud
Pub/Sub
Cloud SQL
Cloud
Memorystore
New Cloud Endpoints / ESP (例)
api.facy.jp
/new_api_2
/new_api_3
Example
Backend
Service 1
Example
Backend
Service 2
Cloud
Load Balancer
Cloud CDN
Cloud Armor
TLS
Certificate
Cloud
Functions
Detailed Planning
移行フロー
検討
詳細計画
順応 & 設定
テスト
データ移行&
初期開発
調整
リリース
調整
評価
請求についての便利ポイント
● 細分化するために異なるプロジェクト別に設定する
● 設定はサービス アカウントとロールベースのアクセス構成について考える
● 予算設定とアラート設定を行う
その他のポイント:
○ Pub/Sub を予算アラートとCloud Functions 用に活用
○ Slack とのアラート連携
○ 請求書支払いはGoogle のパートナー経由で可能
Acclimatise & Configure
k8s Overview - GKE への移行
● 設定ファイルの管理ツールの検討 (Kustomize, ...)
● GCP プロダクトの選定と作成 (Postgres, Redis, ...)
● GKE Secrets の設計と作成
● 各種アプリケーションの設計
(Cloud Load Balancer / Ingress, Rails, Nginx, Cloud SQL Proxy, Cron jobs...)
● 設定ファイルの作成および検証 - ローカル環境 (Minikube) or リモート環境
Acclimatise & Configure
k8s Kustomize を利用した設定ファイルの管理
● Jsonnet 同様テンプレート記述言語
… さらに、YAML 設定ファイルを他の形式に変換することが可能
● Kustomize
(native support in kubectl from 1.14)
● Template-free, declarative (宣言型)
● ドキュメントが豊富
kustomize.io
kubectl.docs.kubernetes.io
Acclimatise & Configure
k8s Deployment
Ingress
Nginx
Backend
Backend Service
prod-service
prod-service.production.svc.cluster.local
Deployment
v-1.0.0
Deployment
v-1.1.0
Acclimatise & Configure
k8s Deployment
Selector:
app=facy,
env=production,
tier=app-rails,
version=v-1-0-0 version=v-1-1-0
Deployment
v-1.0.0
Deployment
v-1.1.0
prod-service
Acclimatise & Configure
k8s まとめ
● Kustomize では宣言的な設定ファイルの定義が可能
● Label と Selector が Kubernetes 利用において肝心なため注意して設計する必要
がある
● Deployment を Selector で切り替える
● クラスタの使用状況測定はクラスタの詳細な利用状況を BigQuery に取り出すこと
が可能
Acclimatise & Configure
移行フロー
検討
詳細計画 評価
順応&設定
テスト
データ移行&
初期開発
調整
リリース
調整
アドバイス、フィードバック、レビュー
● Google のカスタマー エンジニアと営業とのミーティング
● コミュニケーション方法の確保(質問&フィードバック)
● 進捗や質問を確認するためのチームミーティングを毎週開催
● GCP のサポートプランの活用
Advice, Feedback & Review
移行フロー
検討
詳細計画
順応&設定
テスト
データ移行&
初期設定
調整
リリース
調整
評価
移行フロー
検討
詳細計画
順応&設定
テスト
データ移行&
初期開発
調整
リリース
調整
評価
問題の発見は 早めに!
Stackdriver Error Reporting
Testing / Monitoring / Tweaks
Stackdriver Error Reporting
Image from Google Cloud Documentation
Testing / Monitoring / Tweaks
Stackdriver Error Reporting
Image from Google Cloud Documentation
Testing / Monitoring / Tweaks
Stackdriver Viewing Logs
Image from Google Cloud Documentation
Testing / Monitoring / Tweaks
Stackdriver Dashboards
Round Trip (Total) Latency
Response by HTTP Status
Testing / Monitoring / Tweaks
Stackdriver Tips
● Error Reporting はStackdriver Logging に統合されているので、シームレスなデ
バッグが可能に。リアルタイムレポートも使いやすい。
● Stackdriver のログはリソース別、ネームスペース別、セレクタ別でフィルター可能
● ダッシュボード上の指標を使ってアラートの設定が可能
(メールやSlack などにも通知可能)
Testing / Monitoring / Tweaks
移行フロー
検討
詳細計画
順応&設定
テスト
データ移行&
初期開発
調整
リリース
調整
評価
まとめ
● アーキテクチャ含め、ゴールを移行に際して定めることはとても意義があった
● どの程度マイクロサービスが移行の目標に影響を与えたのかは考えている
● 少ないリソースの中で、ハイブリット アプローチ(移行してモダナイズ型)は私たちが重要だと思っている
部分に集中して移行することを可能にしたと考えている
● 移行時にはGCP のサポート パッケージとして開発環境用のプランを最低限契約していることをおすすめ
● 予算機能とアラート機能は、コストを監視する上で便利
● ネームスペース、ラベル、セレクタは Kubernetes のインフラを考える上で重要だった
● Stackdriverはデバッグと エラーを監視するための非常に貴重なツール
使えるリソース
● GCP in Four Words or Less http://bit.ly/2H7y8qs
● github.com/GoogleContainerTools
● Map AWS services to GCP products http://bit.ly/2YgigYG
● cloud.google.com/migrate
● https://kustomize.io/

More Related Content

PDF
Cld018 コンテナ go_~あなた
PPTX
Cld018 コンテナ go_~あなた
PDF
201204 プロ生@大阪 #15
PPTX
KnockoutJSを使用したアプリケーションの構築例
PPT
WebGLによる3Dアプリケーションに関するレポート
PDF
作って分かるKnockoutJS@ALM11月
PDF
Grunt.jsを使った Expressの開発環境構築
PPTX
プレビュー直前!? Windows Virtual Desktop まとめ
Cld018 コンテナ go_~あなた
Cld018 コンテナ go_~あなた
201204 プロ生@大阪 #15
KnockoutJSを使用したアプリケーションの構築例
WebGLによる3Dアプリケーションに関するレポート
作って分かるKnockoutJS@ALM11月
Grunt.jsを使った Expressの開発環境構築
プレビュー直前!? Windows Virtual Desktop まとめ

What's hot (20)

PDF
Microsoft azureで実装するwebserviceondocker
PDF
[Japan Tech summit 2017] CLD 013
PDF
ソフトウェアパッケージベンダーのためのクラウドソリューション「SQL Anywhere OnDemand Edition」
PDF
Knockout.js を利用したインタラクティブ web アプリケーション開発
PDF
20191120 beyondstudy#21 teraoka
PDF
17 E-5 震災とHackとクラウドと 亀渕分
PPTX
20171112 OSS on Azure another story and more
PDF
Nuxt.jsで手軽に構築するモダン・フロントエンド開発環境
PDF
すぐにでも使える Windows Virtual Desktop
PDF
Customazed CLI: カスタムVMイメージ作成支援ツール
PDF
Mvc conf session_5_isami
PDF
[Japan Tech summit 2017] CLD 008
PPTX
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
PDF
最近のJuju/MAAS について
PDF
0831 node学園lt
PDF
最速・最短・最簡単でKubernetesを始めるハウツー with k0s
PDF
Pro aspnetmvc3framework chap23
PPTX
Movable typeseminar 20120925
PDF
5分で振り返る windows azure の歴史
PDF
[Japan Tech summit 2017] CLD 003
Microsoft azureで実装するwebserviceondocker
[Japan Tech summit 2017] CLD 013
ソフトウェアパッケージベンダーのためのクラウドソリューション「SQL Anywhere OnDemand Edition」
Knockout.js を利用したインタラクティブ web アプリケーション開発
20191120 beyondstudy#21 teraoka
17 E-5 震災とHackとクラウドと 亀渕分
20171112 OSS on Azure another story and more
Nuxt.jsで手軽に構築するモダン・フロントエンド開発環境
すぐにでも使える Windows Virtual Desktop
Customazed CLI: カスタムVMイメージ作成支援ツール
Mvc conf session_5_isami
[Japan Tech summit 2017] CLD 008
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
最近のJuju/MAAS について
0831 node学園lt
最速・最短・最簡単でKubernetesを始めるハウツー with k0s
Pro aspnetmvc3framework chap23
Movable typeseminar 20120925
5分で振り返る windows azure の歴史
[Japan Tech summit 2017] CLD 003
Ad

Similar to 【日本語版】Styler: Our Journey to GCP (20)

PDF
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
PDF
GCPで実現するクラウドネイティブアプリケーション
PDF
GCP & Gaming 〜平成最後のアップデート〜 | Google Cloud INSIDE Games & Apps
PPTX
Tech lounge gcp_20190313
PDF
長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
PPTX
Rails on GKEで運用するWebアプリケーションの紹介
PDF
Google Cloud Platform 概要
PDF
20170719 GCPUG OSAKA #3
PDF
クラウドインターネットルータ
PDF
[CEDEC 2018] グローバル スケール コネクテッドゲームを GCP で作ろう!
PDF
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
PPTX
2019年度 CaaS ワークショップ @ NTTコム
PDF
Azure 高速サイトソリューション
PDF
GCP でも Serverless!!
PDF
Jenkinsとhadoopを利用した継続的データ解析環境の構築
PDF
私たちがGCPを使い始めた本当の理由
PDF
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
PDF
Google Cloud でアプリケーションを動かす.pdf
PDF
Cloud Native をやっていくにはどう学んでいくかをみんなで考えてみる
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
GCPで実現するクラウドネイティブアプリケーション
GCP & Gaming 〜平成最後のアップデート〜 | Google Cloud INSIDE Games & Apps
Tech lounge gcp_20190313
長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Rails on GKEで運用するWebアプリケーションの紹介
Google Cloud Platform 概要
20170719 GCPUG OSAKA #3
クラウドインターネットルータ
[CEDEC 2018] グローバル スケール コネクテッドゲームを GCP で作ろう!
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
2019年度 CaaS ワークショップ @ NTTコム
Azure 高速サイトソリューション
GCP でも Serverless!!
Jenkinsとhadoopを利用した継続的データ解析環境の構築
私たちがGCPを使い始めた本当の理由
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
Google Cloud でアプリケーションを動かす.pdf
Cloud Native をやっていくにはどう学んでいくかをみんなで考えてみる
Ad

【日本語版】Styler: Our Journey to GCP