SlideShare una empresa de Scribd logo
1 de 44
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
Jun 9, 2018
Spring_MT
DeNA Co., Ltd.
Rails on GKEで運用するWebアプリケーションの紹介
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
自己紹介
• 自己紹介
2
 2008年 DeNA入社
 2010年 エンジニアになる
 2011年 DeNA退社 -> 福岡へ
 2013年 DeNAに出戻り
 2016年 ゲーム事業本部
 2017年 コマース&インキュベーション事業本部
GitHub https://github.com/SpringMT
Twitter https://twitter.com/Spring_MT
@Spring_MT
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
開発チーム
スモールスタート
• フロント1名
• サーバー・インフラ1名
3
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
機能開発に集中するために
4
• 機能開発以外のやることを減らしたい
• 運用業務をシンプルにしたい
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
5
今回お話する内容
https://builderscon.io/tokyo/2018/session/b87465f5-4a05-4a6b-85c6-a50ab205dc27
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
今回お話する内容
6
モノリシックな作り
APIファースト
本番環境と同じ開発環境
サービスのコンテンツデータの運用
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
目次
環境のギャップをなくす
• Dockerを使ったイメージベースの成果物
• 設定ファイルの管理
• 反映方法
構成のギャップをなくす
• Kubernetes(GKE)
• その他
まとめ
7
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
コードベースを同じに
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
Dockerを使ったイメージベースの成果物管理
コードベースを同じに
• イメージを作成したら変えない
• ビルドは一回
• ddとか使ってバイナリをいじるようなことはしない
• 起動時にコードを追加するなどもしない
• 検証環境・本番環境でも動くようなイメージの構成にする
• なにも手を加えずに検証環境から本番環境にイメージを
移行させる
9
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
検証環境と本番環境でGCPのプロジェクトをわける
コードベースを同じに
• 検証環境と本番環境を完全に分離する
• 検証環境はQA専任チームなど別チームも閲覧・操作する
• 本番環境は開発者のみ
• この2つを行き来できるのはDockerのイメージのみ
アプリケーションのデータ運用(マスターデータ・アセット)は
最初から考えておく
10
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
Dockerのイメージの構成
コードベースを同じに
• 3種類のイメージにわけて作成
• 設定ファイルなどは全てのイメージに含まれる
11
├ api
├ DB_Schema
├ 管理ツール
├ config(subtree)
├ shared
API DB Schema 管理ツール
├ api
├ config(subtree)
├ shared
├ DB Schema
├ config(subtree)
├ shared
├ 管理ツール
├ config(subtree)
├ shared
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
Dockerのイメージの構成
コードベースを同じに
• stretchベース (NOT alpine)
glibcがなくて、stackdriver(の中のgrpc)のgemがビルドできない
12
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
Docker registry
コードベースを同じに
Dockerの社内registryは自前で用意はしない
Googleのパワーを借りる
• Google Container Builder
• Google Container Registry
13
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
社内リソースとの連携
コードベースを同じに
Container Builderを使うための調整
• GitHub:Enterprise、CircleCI Enterprise、社内rubygemsがある
• Container BuilderはGH:EにはアクセスできないのでGoogle Source
Repositoryを経由する
• 社内rubygemsは利用しない(社内gemは使わない)
• 使う場合はレポジトリに直接subtree等で取り込むことを想定
14
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
15
Dockerのイメージ作成フロー
コードベースを同じに
テストが通ったブランチは全部イメージを作る
Developers
Cloud Source
Repositories
Container
Registry
Container
Builder
HookPush
テスト実行
Push
DeNA
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
Dockerのイメージ作成
コードベースを同じに
CircleCIからSource Repositoryへpush
16
deploy:
machine:
enabled: true
steps:
- checkout
- run:
command: echo "${LIVE_SB_NETRC}" > ~/.netrc
- run:
command: git remote add google https://source.developers.google.com/p/sample/r/server
- run:
command: git push google "${CIRCLE_BRANCH}"
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
Dockerのイメージ作成
17
コードベースを同じに
Container BuilderではDockerfile指定だけ
• 凝ったことは特にしていない
• 1プロジェクトあたり10件の同時ビルドが可能
• 本プロジェクトでは3つは同時にビルドしたい
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
本番環境へのイメージの移行
コードベースを同じに
検証環境でテストしたイメージをそのまま本番環境に移行
• gcloudコマンドでGCPのプロジェクトを超えて持っていける
• gcloud container images add-tag
18
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
Rails
コードベースを同じに
RAILS_ENV
• 検証環境・本番環境はproductionで統一
• 環境を規定するために別の環境変数を用意
• Docker起動時に設定を読み込む
19
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
Rails
コードベースを同じに
20
ENV RAILS_ENV production
# Use EntryKit
ENTRYPOINT [ 
"prehook", "ruby -v", "--", 
"prehook", "bundle exec ruby shared/scripts/setup.rb", "--",
"switch", 
"shell=/bin/sh", 
"rails_c=bundle exec rails c", 
"rails_db=bundle exec rails db", 
"rails_s=bundle exec rails s -b 0.0.0.0", "--", 
"bundle", "exec", "unicorn_rails", "-c", "config/unicorn/production.rb" ]
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
Rails
コードベースを同じに
サーバーの設定
config用のレポジトリを用意し、subtreeで取り込み
Logは標準出力に
stackdriver loggingで回収 -> exportして各処理へ
パフォーマンス測定
本番環境はstackdriver trace
検証環境はstackdriver traceに加えてstackprofでも確認する
21
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
22
Rails
コードベースを同じに
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
構成を同じに
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
サーバーの構成を同じに
構成を同じに
kubernetes(GKE)を使った構築
Dockerのイメージの動作環境という視点でまずは選定
その上で
• 構成をそろえやすい
• 少人数でも管理・運用しやすい
24
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
kubernetesの管理
構成を同じに
設定はyamlで管理
• 規模感的にまだHemlとかを導入するほどでもない
• kustomizeは検討中
• Service + HPA + Deploymentで一つのyamlにまとめている
• 環境ごとの差分はなるべく少なく
• replicasの数くらいが差分になっている
25
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
kubernetesの構成
構成を同じに
ConfigMapとSecret
• 環境変数(ConfigMap、Secret)とアプリ内でもつ設定の分離
• 秘密情報は全てSecretを使って環境変数経由で受け渡す
• アプリケーションの設定情報はコードに含め環境変数で受け渡すことは基
本的にしない
• unicornのworker数などこまめに調整する数値のみ環境変数で管理
26
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
kubernetesの構成
構成を同じに
Service、HPA、Deployment
• API、管理ツール等ではreplicas以外の差はない
• HPAの設定、deploymentのProbeの設定を忘れずに
• graceful shutdownとスケーリングをちゃんと設定しておく
• 負荷試験時にイメージの更新を挟むことで確認
27
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
28
全体の構成
構成を同じに
Monitoring
Logging
Cloud Load
Balancing Cloud
SQL
Trace
Error
Reporting
Frontend
API
管理ツール
Cloud
Storage
Container Engine
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
GKEの設定
構成を同じに
バージョン
• v1.10.5を利用
• stackdriver monitoring v2を利用したかった
29
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
GKEの設定
構成を同じに
本番環境ではマスター承認済みのネットワークを設定
• 社内のgatewayサーバーからのみアクセスできる
deployサーバー(GCE)を用意してそこからのみkubectlが打てる
• gatewayサーバーにはttyrecが仕込んであり
監査用にログが残してある
• 検証環境はローカルマシンからkubectlを打てる
30
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
GKEの設定
構成を同じに
限定公開クラスタは無効
• CloudSQLがプライベートGoogleアクセスに対応していない
• https://cloud.google.com/vpc/docs/private-google-access
• アプリケーションからは結局Cloud SQL Proxy経由でアクセス
31
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
GKEの設定
構成を同じに
ノードの自動スケーリングは開発環境はon 本番環境はoff
• スケールするときにサービス断の可能性あり
32
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
GKEの設定
構成を同じに
権限管理
• google group + IAMで管理が基本
• 本番環境と検証環境を分けており、本番環境には入れる人を絞っている
• kubernetesのRBACはまだ使ってない
33
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
GKEの設定
構成を同じに
Preemptible VM
• 検証環境は全てPreemptible
• コストダウンともに、環境が常に新しくdisposableであることの確認が可
能
34
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
kubernetesを使ったメリット
構成を同じに
DNSの管理からの開放
• MyDNSと決別
プロセスがおちたら自動的に再起動
• daemontoolsと決別
35
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
kubernetesを使ったメリット
構成を同じに
Horizonatal Pod Autoscaler
• 自動でpodの数を調整してくれる
• 負荷試験ではテストしているが、リリース後からは発動してない
36
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
kubernetesのデメリット
構成を同じに
比較になるが、GAE/Goほどシンプルではないかも…
• 管理するものが多い印象
37
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
ハマったこと
構成を同じに
CronJob
• sidecarがあるとsidecarが終わらない問題
• v1.10.5未満だと失敗したjobが延々とリトライし続ける問題があった(解消済)
graceful shutdownできていない
• CloudSQL ProxyのpreStopの設定
38
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
ハマったこと
構成を同じに
DBスキーマの適用
• スキーマ管理はridgepoleを採用
• スキーマ適用用のpodを上げてそこのpodに入ってコマンドを打つ
39
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
改善したいポイント
構成を同じに
検証環境のクラスターをまとめる
• 検証環境毎にクラスターを作っているので、ここをまとめて環境を作りや
すくする
40
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
GCPで使っているサービス(GKE以外)
構成を同じに
• CloudSQL
• stackdriver
• dataflow
• BigQuery
• GCS
• CloudFunction
41
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
GCP以外に使っているサービス
構成を同じに
AWS
• SES
• メールだけはどうしようもなかった。。
Fastly
• CDNとimage optimizer
• image optimizerで画像の配信を柔軟に行っている
42
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
実績
まとめ
コードの差によるバグ
• 1件
• デバッグ機能をoffにする条件分岐
構成の差によるバグ
• なし
運用は今の所一人でも大丈夫
43
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
まとめ
まとめ
• Dockerやkubernetesを使って簡単に一貫性のある環境を
構築することができた
• その結果、環境起因による不具合を抑えることができて
いる(と思う)
44

Más contenido relacionado

La actualidad más candente

DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -Tomoya Kabe
 
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconアバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconDeNA
 
20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecaseMinehiko Nohara
 
Rancher による社内向けテナントサービス基盤
Rancher による社内向けテナントサービス基盤Rancher による社内向けテナントサービス基盤
Rancher による社内向けテナントサービス基盤Keita Shimada
 
20180123 rancher meetupyokohama_minehiko_nohara
20180123 rancher meetupyokohama_minehiko_nohara20180123 rancher meetupyokohama_minehiko_nohara
20180123 rancher meetupyokohama_minehiko_noharaMinehiko Nohara
 
マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例Fukaya Akifumi
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術dena_study
 
これからの Microservices
これからの Microservicesこれからの Microservices
これからの MicroservicesToru Yamaguchi
 
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
DeNAの動画配信サービスを支えるインフラの内部  #denatechconDeNAの動画配信サービスを支えるインフラの内部  #denatechcon
DeNAの動画配信サービスを支えるインフラの内部 #denatechconDeNA
 
Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519虎の穴 開発室
 
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconDeNA
 
ログ分析で支えるゲームパラメータ設計 #denatechcon
ログ分析で支えるゲームパラメータ設計 #denatechconログ分析で支えるゲームパラメータ設計 #denatechcon
ログ分析で支えるゲームパラメータ設計 #denatechconDeNA
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceMakoto Haruyama
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みToshiharu Sugiyama
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)denatech2016
 
その後のDeNAのネイティブアプリ開発 #denatechcon
その後のDeNAのネイティブアプリ開発 #denatechconその後のDeNAのネイティブアプリ開発 #denatechcon
その後のDeNAのネイティブアプリ開発 #denatechconDeNA
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるMichitaka Terada
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術dena_study
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)Toshiharu Sugiyama
 
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオンWebアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン虎の穴 開発室
 

La actualidad más candente (20)

DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -
 
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconアバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
 
20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase
 
Rancher による社内向けテナントサービス基盤
Rancher による社内向けテナントサービス基盤Rancher による社内向けテナントサービス基盤
Rancher による社内向けテナントサービス基盤
 
20180123 rancher meetupyokohama_minehiko_nohara
20180123 rancher meetupyokohama_minehiko_nohara20180123 rancher meetupyokohama_minehiko_nohara
20180123 rancher meetupyokohama_minehiko_nohara
 
マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
これからの Microservices
これからの Microservicesこれからの Microservices
これからの Microservices
 
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
DeNAの動画配信サービスを支えるインフラの内部  #denatechconDeNAの動画配信サービスを支えるインフラの内部  #denatechcon
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
 
Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519
 
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
 
ログ分析で支えるゲームパラメータ設計 #denatechcon
ログ分析で支えるゲームパラメータ設計 #denatechconログ分析で支えるゲームパラメータ設計 #denatechcon
ログ分析で支えるゲームパラメータ設計 #denatechcon
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)
 
その後のDeNAのネイティブアプリ開発 #denatechcon
その後のDeNAのネイティブアプリ開発 #denatechconその後のDeNAのネイティブアプリ開発 #denatechcon
その後のDeNAのネイティブアプリ開発 #denatechcon
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
 
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオンWebアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン
 

Similar a Rails on GKEで運用するWebアプリケーションの紹介

Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Katsunori Kanda
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化Issei Hiraoka
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)TIS Inc.
 
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?CData Software Japan
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2Yushi_Takagi
 
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南Google Cloud Platform - Japan
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage PlatformMasaki Nakagawa
 
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)Kazuya Sugimoto
 
cndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcapsmalt
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CDIssei Hiraoka
 
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019MKT-INTHEFOREST
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?Developers Summit
 

Similar a Rails on GKEで運用するWebアプリケーションの紹介 (20)

Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 
Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2
 
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2
 
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform
 
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
 
CData API Server ハンズオン
CData API Server ハンズオンCData API Server ハンズオン
CData API Server ハンズオン
 
cndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmalt
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CD
 
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
 
【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう
 

Más de Makoto Haruyama

backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1Makoto Haruyama
 
fluent-plugin-resque_stat
fluent-plugin-resque_statfluent-plugin-resque_stat
fluent-plugin-resque_statMakoto Haruyama
 
初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談Makoto Haruyama
 
初心者エンジニアの システム構築 失敗談
初心者エンジニアの システム構築 失敗談初心者エンジニアの システム構築 失敗談
初心者エンジニアの システム構築 失敗談Makoto Haruyama
 
Mysql casual fukuoa_vlo_2
Mysql casual fukuoa_vlo_2Mysql casual fukuoa_vlo_2
Mysql casual fukuoa_vlo_2Makoto Haruyama
 
分散ファイルストレージ
分散ファイルストレージ分散ファイルストレージ
分散ファイルストレージMakoto Haruyama
 
Automation tech casual_talks_1_20120717
Automation tech casual_talks_1_20120717Automation tech casual_talks_1_20120717
Automation tech casual_talks_1_20120717Makoto Haruyama
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1Makoto Haruyama
 
20110622 haruyama webso]cket
20110622 haruyama webso]cket20110622 haruyama webso]cket
20110622 haruyama webso]cketMakoto Haruyama
 

Más de Makoto Haruyama (11)

backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1
 
Fluentd in Co-Work
Fluentd in Co-WorkFluentd in Co-Work
Fluentd in Co-Work
 
fluent-plugin-resque_stat
fluent-plugin-resque_statfluent-plugin-resque_stat
fluent-plugin-resque_stat
 
初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談
 
初心者エンジニアの システム構築 失敗談
初心者エンジニアの システム構築 失敗談初心者エンジニアの システム構築 失敗談
初心者エンジニアの システム構築 失敗談
 
Mysql casual fukuoa_vlo_2
Mysql casual fukuoa_vlo_2Mysql casual fukuoa_vlo_2
Mysql casual fukuoa_vlo_2
 
Yapc2012 ltthon
Yapc2012 ltthonYapc2012 ltthon
Yapc2012 ltthon
 
分散ファイルストレージ
分散ファイルストレージ分散ファイルストレージ
分散ファイルストレージ
 
Automation tech casual_talks_1_20120717
Automation tech casual_talks_1_20120717Automation tech casual_talks_1_20120717
Automation tech casual_talks_1_20120717
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
 
20110622 haruyama webso]cket
20110622 haruyama webso]cket20110622 haruyama webso]cket
20110622 haruyama webso]cket
 

Rails on GKEで運用するWebアプリケーションの紹介

  • 1. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Jun 9, 2018 Spring_MT DeNA Co., Ltd. Rails on GKEで運用するWebアプリケーションの紹介
  • 2. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 自己紹介 • 自己紹介 2  2008年 DeNA入社  2010年 エンジニアになる  2011年 DeNA退社 -> 福岡へ  2013年 DeNAに出戻り  2016年 ゲーム事業本部  2017年 コマース&インキュベーション事業本部 GitHub https://github.com/SpringMT Twitter https://twitter.com/Spring_MT @Spring_MT
  • 3. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 開発チーム スモールスタート • フロント1名 • サーバー・インフラ1名 3
  • 4. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 機能開発に集中するために 4 • 機能開発以外のやることを減らしたい • 運用業務をシンプルにしたい
  • 5. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 5 今回お話する内容 https://builderscon.io/tokyo/2018/session/b87465f5-4a05-4a6b-85c6-a50ab205dc27
  • 6. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 今回お話する内容 6 モノリシックな作り APIファースト 本番環境と同じ開発環境 サービスのコンテンツデータの運用
  • 7. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 目次 環境のギャップをなくす • Dockerを使ったイメージベースの成果物 • 設定ファイルの管理 • 反映方法 構成のギャップをなくす • Kubernetes(GKE) • その他 まとめ 7
  • 8. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. コードベースを同じに
  • 9. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Dockerを使ったイメージベースの成果物管理 コードベースを同じに • イメージを作成したら変えない • ビルドは一回 • ddとか使ってバイナリをいじるようなことはしない • 起動時にコードを追加するなどもしない • 検証環境・本番環境でも動くようなイメージの構成にする • なにも手を加えずに検証環境から本番環境にイメージを 移行させる 9
  • 10. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 検証環境と本番環境でGCPのプロジェクトをわける コードベースを同じに • 検証環境と本番環境を完全に分離する • 検証環境はQA専任チームなど別チームも閲覧・操作する • 本番環境は開発者のみ • この2つを行き来できるのはDockerのイメージのみ アプリケーションのデータ運用(マスターデータ・アセット)は 最初から考えておく 10
  • 11. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Dockerのイメージの構成 コードベースを同じに • 3種類のイメージにわけて作成 • 設定ファイルなどは全てのイメージに含まれる 11 ├ api ├ DB_Schema ├ 管理ツール ├ config(subtree) ├ shared API DB Schema 管理ツール ├ api ├ config(subtree) ├ shared ├ DB Schema ├ config(subtree) ├ shared ├ 管理ツール ├ config(subtree) ├ shared
  • 12. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Dockerのイメージの構成 コードベースを同じに • stretchベース (NOT alpine) glibcがなくて、stackdriver(の中のgrpc)のgemがビルドできない 12
  • 13. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Docker registry コードベースを同じに Dockerの社内registryは自前で用意はしない Googleのパワーを借りる • Google Container Builder • Google Container Registry 13
  • 14. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 社内リソースとの連携 コードベースを同じに Container Builderを使うための調整 • GitHub:Enterprise、CircleCI Enterprise、社内rubygemsがある • Container BuilderはGH:EにはアクセスできないのでGoogle Source Repositoryを経由する • 社内rubygemsは利用しない(社内gemは使わない) • 使う場合はレポジトリに直接subtree等で取り込むことを想定 14
  • 15. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 15 Dockerのイメージ作成フロー コードベースを同じに テストが通ったブランチは全部イメージを作る Developers Cloud Source Repositories Container Registry Container Builder HookPush テスト実行 Push DeNA
  • 16. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Dockerのイメージ作成 コードベースを同じに CircleCIからSource Repositoryへpush 16 deploy: machine: enabled: true steps: - checkout - run: command: echo "${LIVE_SB_NETRC}" > ~/.netrc - run: command: git remote add google https://source.developers.google.com/p/sample/r/server - run: command: git push google "${CIRCLE_BRANCH}"
  • 17. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Dockerのイメージ作成 17 コードベースを同じに Container BuilderではDockerfile指定だけ • 凝ったことは特にしていない • 1プロジェクトあたり10件の同時ビルドが可能 • 本プロジェクトでは3つは同時にビルドしたい
  • 18. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 本番環境へのイメージの移行 コードベースを同じに 検証環境でテストしたイメージをそのまま本番環境に移行 • gcloudコマンドでGCPのプロジェクトを超えて持っていける • gcloud container images add-tag 18
  • 19. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Rails コードベースを同じに RAILS_ENV • 検証環境・本番環境はproductionで統一 • 環境を規定するために別の環境変数を用意 • Docker起動時に設定を読み込む 19
  • 20. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Rails コードベースを同じに 20 ENV RAILS_ENV production # Use EntryKit ENTRYPOINT [ "prehook", "ruby -v", "--", "prehook", "bundle exec ruby shared/scripts/setup.rb", "--", "switch", "shell=/bin/sh", "rails_c=bundle exec rails c", "rails_db=bundle exec rails db", "rails_s=bundle exec rails s -b 0.0.0.0", "--", "bundle", "exec", "unicorn_rails", "-c", "config/unicorn/production.rb" ]
  • 21. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Rails コードベースを同じに サーバーの設定 config用のレポジトリを用意し、subtreeで取り込み Logは標準出力に stackdriver loggingで回収 -> exportして各処理へ パフォーマンス測定 本番環境はstackdriver trace 検証環境はstackdriver traceに加えてstackprofでも確認する 21
  • 22. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 22 Rails コードベースを同じに
  • 23. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 構成を同じに
  • 24. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. サーバーの構成を同じに 構成を同じに kubernetes(GKE)を使った構築 Dockerのイメージの動作環境という視点でまずは選定 その上で • 構成をそろえやすい • 少人数でも管理・運用しやすい 24
  • 25. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. kubernetesの管理 構成を同じに 設定はyamlで管理 • 規模感的にまだHemlとかを導入するほどでもない • kustomizeは検討中 • Service + HPA + Deploymentで一つのyamlにまとめている • 環境ごとの差分はなるべく少なく • replicasの数くらいが差分になっている 25
  • 26. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. kubernetesの構成 構成を同じに ConfigMapとSecret • 環境変数(ConfigMap、Secret)とアプリ内でもつ設定の分離 • 秘密情報は全てSecretを使って環境変数経由で受け渡す • アプリケーションの設定情報はコードに含め環境変数で受け渡すことは基 本的にしない • unicornのworker数などこまめに調整する数値のみ環境変数で管理 26
  • 27. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. kubernetesの構成 構成を同じに Service、HPA、Deployment • API、管理ツール等ではreplicas以外の差はない • HPAの設定、deploymentのProbeの設定を忘れずに • graceful shutdownとスケーリングをちゃんと設定しておく • 負荷試験時にイメージの更新を挟むことで確認 27
  • 28. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 28 全体の構成 構成を同じに Monitoring Logging Cloud Load Balancing Cloud SQL Trace Error Reporting Frontend API 管理ツール Cloud Storage Container Engine
  • 29. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. GKEの設定 構成を同じに バージョン • v1.10.5を利用 • stackdriver monitoring v2を利用したかった 29
  • 30. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. GKEの設定 構成を同じに 本番環境ではマスター承認済みのネットワークを設定 • 社内のgatewayサーバーからのみアクセスできる deployサーバー(GCE)を用意してそこからのみkubectlが打てる • gatewayサーバーにはttyrecが仕込んであり 監査用にログが残してある • 検証環境はローカルマシンからkubectlを打てる 30
  • 31. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. GKEの設定 構成を同じに 限定公開クラスタは無効 • CloudSQLがプライベートGoogleアクセスに対応していない • https://cloud.google.com/vpc/docs/private-google-access • アプリケーションからは結局Cloud SQL Proxy経由でアクセス 31
  • 32. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. GKEの設定 構成を同じに ノードの自動スケーリングは開発環境はon 本番環境はoff • スケールするときにサービス断の可能性あり 32
  • 33. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. GKEの設定 構成を同じに 権限管理 • google group + IAMで管理が基本 • 本番環境と検証環境を分けており、本番環境には入れる人を絞っている • kubernetesのRBACはまだ使ってない 33
  • 34. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. GKEの設定 構成を同じに Preemptible VM • 検証環境は全てPreemptible • コストダウンともに、環境が常に新しくdisposableであることの確認が可 能 34
  • 35. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. kubernetesを使ったメリット 構成を同じに DNSの管理からの開放 • MyDNSと決別 プロセスがおちたら自動的に再起動 • daemontoolsと決別 35
  • 36. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. kubernetesを使ったメリット 構成を同じに Horizonatal Pod Autoscaler • 自動でpodの数を調整してくれる • 負荷試験ではテストしているが、リリース後からは発動してない 36
  • 37. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. kubernetesのデメリット 構成を同じに 比較になるが、GAE/Goほどシンプルではないかも… • 管理するものが多い印象 37
  • 38. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. ハマったこと 構成を同じに CronJob • sidecarがあるとsidecarが終わらない問題 • v1.10.5未満だと失敗したjobが延々とリトライし続ける問題があった(解消済) graceful shutdownできていない • CloudSQL ProxyのpreStopの設定 38
  • 39. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. ハマったこと 構成を同じに DBスキーマの適用 • スキーマ管理はridgepoleを採用 • スキーマ適用用のpodを上げてそこのpodに入ってコマンドを打つ 39
  • 40. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 改善したいポイント 構成を同じに 検証環境のクラスターをまとめる • 検証環境毎にクラスターを作っているので、ここをまとめて環境を作りや すくする 40
  • 41. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. GCPで使っているサービス(GKE以外) 構成を同じに • CloudSQL • stackdriver • dataflow • BigQuery • GCS • CloudFunction 41
  • 42. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. GCP以外に使っているサービス 構成を同じに AWS • SES • メールだけはどうしようもなかった。。 Fastly • CDNとimage optimizer • image optimizerで画像の配信を柔軟に行っている 42
  • 43. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 実績 まとめ コードの差によるバグ • 1件 • デバッグ機能をoffにする条件分岐 構成の差によるバグ • なし 運用は今の所一人でも大丈夫 43
  • 44. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. まとめ まとめ • Dockerやkubernetesを使って簡単に一貫性のある環境を 構築することができた • その結果、環境起因による不具合を抑えることができて いる(と思う) 44