SlideShare a Scribd company logo
1 of 34
1© Miniascape Co., Ltd. All Rights Reserved.
GAE + Spannerで目指せ
No (Uncomfortable) Ops
2© Miniascape Co., Ltd. All Rights Reserved.
ななし
サーバーエンジニア
Twitter
@_nanasi880
スキル・経歴
● ソーシャルゲーム業界1年目
● 組み込み業界出身
● AWS 6ヶ月
● GCP 9ヶ月
● C/C++/Go/Java…
● 好きなGCPプロダクト : GAE
ささっと自己紹介
3© Miniascape Co., Ltd. All Rights Reserved.
めた
サーバーエンジニア
Twitter
@wMETAw
スキル・経歴
● ソーシャルゲーム業界5年目
● AWS 1年6ヶ月
● GCP 9ヶ月
● Go PHP Ruby…
● 関西ゲーム勉強会、GGLT実行委員
● Google Cloud Certified
Associate Cloud Engineer
ささっと自己紹介
4© Miniascape Co., Ltd. All Rights Reserved.
Miniascape株式会社
Happy Elementsの東京スタジオとして
2017年10月に設立
Make Another World
をスローガンに掲げ、新しいソーシャル
ゲームの遊びを目指しています。
2019年末に新作リリース予定!!
会社紹介
5© Miniascape Co., Ltd. All Rights Reserved.
クラウド選定
Datastore期
Spanner移行
6© Miniascape Co., Ltd. All Rights Reserved.
エンジニアは4人のみ採用予定
2人 : クライアント
2人 : サーバー (インフラ・クライアントお手伝い)
構築・運用コストをゼロにしたい
設立当初...
辛すぎるので
7© Miniascape Co., Ltd. All Rights Reserved.
No "Uncomfortable" Ops
システム運用の"うれしくない"ことをなくそう!!
NoOps Meetup Tokyo#1より
目指せ
8© Miniascape Co., Ltd. All Rights Reserved.
・インスタンスの起動が遅いとモヤモヤ
・ロールバック辛い問題
・突然のスパイク
・パッチリリースによりインスタンス再起動を強いられる
・DB分割問題(ヒットタイトルではRDBを60台水平分割)
運用でうれしくないこと
※水平分割の否定的発言ではなく、弊社にはDBスペシャリストも割り当てる人員もいないため...
9© Miniascape Co., Ltd. All Rights Reserved.
・インスタンスの起動が遅い
➡︎ GAE/SE Goだとスピンアップ起動時間が約300ms
・ロールバック辛い問題
➡︎ バージョン切り替えはわずか数秒!
・パッチリリースによりインスタンス再起動を強いられる
➡︎ Live Migrationによりパッチ当て作業がない
・DB分割問題
➡︎ 分散DBであるDatastoreまたはSpannerを利用
・突然のスパイク
➡︎ 分散DBとスピンアップの速さから余裕でオートスケール
GCPで解決できるか
※GAE/SE Go (Google App Engine Standard Environment Golang)
※Live Migration ダウンタイム無しでホストのメンテナンスを実行する
10© Miniascape Co., Ltd. All Rights Reserved.
GCP採用決定 ʕ◔ϖ◔ʔ
11© Miniascape Co., Ltd. All Rights Reserved.
GCPで提供されるPaaS (Platform as a Service)
Webアプリケーション作成に特化し
数行のyamlとアプリケーションソースをデプロイすれば即稼働
うれしいポイント
・HTTPSとURLの準備まで勝手にしてくれる
・BlueGreenデプロイメントサポート
・バージョン別にトラフィックの分配が可能
・バージョンの切り戻しが数秒で完了
Google App Engine
12© Miniascape Co., Ltd. All Rights Reserved.
# Go言語を使用
runtime: go111
# 全てのリクエストをGoアプリに流す
handlers:
- url: /.*
script: auto
app.yaml (コンフィグ)
13© Miniascape Co., Ltd. All Rights Reserved.
package main
import (
“fmt”
“net/http”
)
func main() {
http.HandleFunc(“/”, func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, “hello world”)
})
port := os.Getenv(“PORT”)
http.ListenAndServe(“:”+port, nil)
}
main.go
14© Miniascape Co., Ltd. All Rights Reserved.
(サーバーの)
構築/運用コストが0になった
15© Miniascape Co., Ltd. All Rights Reserved.
クラウド選定
Datastore期
Spanner移行
16© Miniascape Co., Ltd. All Rights Reserved.
Datastoreとは
分散型NoSQLデータベース
負荷状況に応じてスケールする可用性と耐久性に優れつつ
RDBMSぽさもあり強整合性も備えるDB
さまざまな制約
・Entity GroupへのWriteは毎秒1~5回まで
・祖先クエリとKeyでのGetのみ強整合性
・TXは楽観的であり、25個のEntity Groupしか跨げない
※Datastoreについてはスライド最後の資料をどうぞ
17© Miniascape Co., Ltd. All Rights Reserved.
Datastore期 構成
※対戦マッチングの仕様要件が多く
書き込み制限と複雑なクエリがあるため満せない
そのため、Spanner移行を前提とした構成
CloudSQLには
計画メンテが存在。
“うれしくない”
18© Miniascape Co., Ltd. All Rights Reserved.
Cloud Spannerとの接続に使用するgRPC接続を長時間保持できず
HTTPリクエスト毎にコネクションを作成する必要があった
➡︎ SELECTするだけで3秒かかる
理由は長くなってしまうので気になる方は懇親会で
2019/3/20にGAされた第二世代ランタイムで解消済み
Google App Engineの(当時の)問題点
19© Miniascape Co., Ltd. All Rights Reserved.
クラウド選定
Datastore期
Spanner移行
20© Miniascape Co., Ltd. All Rights Reserved.
Spannerとは
・RDBMSの構造とNoSQLのスケーラビリティを両立した
データベース
・Primary Keyを用いてSpannerが自動で水平分割を行う
・ANSI 2011 SQLに対応しているので、使い慣れたSQL
で対話が可能
・スライド末尾に論文のリンクがあるのでそちらを参照
21© Miniascape Co., Ltd. All Rights Reserved.
Spanner期 構成
22© Miniascape Co., Ltd. All Rights Reserved.
・計画ダウンタイムが無い
・1Write/EntityGroupのような厳しい制限が無い
・ノード数変更もオンデマンドで可能
・ボタン1つで高可用性(99.99%※)が手に入る
・IAMで制御できるのでID/パスワード管理が不要
・WebUIが使いやすく、クエリの実行計画も見やすい
Spanner嬉しいポイント
※SLA適用条件として、3ノード以上が必要
※Regionalインスタンスの場合
※Multi-Regionなら99.999%
23© Miniascape Co., Ltd. All Rights Reserved.
24© Miniascape Co., Ltd. All Rights Reserved.
25© Miniascape Co., Ltd. All Rights Reserved.
・ローカルエミュレーターが無い
・Primary Keyの選定
・トランザクションとロック
・値段
(おそらく)Spannerで困るポイント
26© Miniascape Co., Ltd. All Rights Reserved.
・諦めた
・素直にSpannerに接続するようにしている
・テーブル/Indexの作成込みで約8秒 ※参考ページ
・インスタンス起動も数秒~数十秒なのでむしろMySQLマ
シンより起動速くてストレスフリー
・SDKが提供されており、DB作成やドロップは簡単にで
きる
・ユニットテストが起動するたびに使い捨てのDBを作る
仕組みをCIに組み込んで運用中
ローカルエミュレーターが無い
27© Miniascape Co., Ltd. All Rights Reserved.
・Primary Keyを使って分散するので
AutoIncrementのような連続する値はアンチパターン
・ベストプラクティスはUUIDを使用
・「Spanner ホットスポット」で検索
・外部サービスと連携しない限り
Primary KeyがUUIDで困った事が無い
・どうしても数値が使いたい場面はSHA256して使用
Primary Keyの選定
28© Miniascape Co., Ltd. All Rights Reserved.
・トランザクションは2種類ある
・ReadOnlyとReadWrite
・ReadOnlyはブロックされない(MVCCによって実現)
・ReadWriteトランザクションは
楽観と悲観ロックの合わせ技のような挙動をする
・RWトランザクションでロックをとっても
Commitが走るまでは誰も排他ロックされない
SELECT ~ FOR UPDATE相当の操作は
明示的にはできない
トランザクションとロック
29© Miniascape Co., Ltd. All Rights Reserved.
30© Miniascape Co., Ltd. All Rights Reserved.
・DBのスペシャリストを探してきて採用するより
遥かに安くて低リスクと判断
・¥97,331.75/月では人は雇えない… ※GCP料金試算ページ
・開発環境は1インスタンス/1ノードを全環境でシェア
・各開発者単位でデータベースを分離し環境を分離
・夜間/休日等は自動でインスタンスをシャットダウン
値段
31© Miniascape Co., Ltd. All Rights Reserved.
THANK YOU !!
ご静聴ありがとうございました
32© Miniascape Co., Ltd. All Rights Reserved.
参考資料
33© Miniascape Co., Ltd. All Rights Reserved.
・Datastoreの概要
・Datastore/GO データ設計のコツDatastoreの概要と設計
34© Miniascape Co., Ltd. All Rights Reserved.
・地理分散DBについて
・普通の人でもわかるPaxos
・Spanner: Google’s Globally Distributed Database
・GoogleのSpannerに関する論文の和訳
・Transaction Abort 探検記
・Cloud Spanner を使って様々な Anomaly に立ち向かう
・DMM INSIDE
・Google Cloud Spanner Deep Dive
・merpay infra talk cloud spanner
参考リンク

More Related Content

What's hot

コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのかコンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのかgree_tech
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門torisoup
 
Quarkus Technical Deep Dive - Japanese
Quarkus Technical Deep Dive - JapaneseQuarkus Technical Deep Dive - Japanese
Quarkus Technical Deep Dive - JapaneseChihiro Ito
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例gree_tech
 
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringアメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringTakuya Hattori
 
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介bitbank, Inc. Tokyo, Japan
 
スケーラブルな Deep Leaning フレームワーク "Apache MXNet” を AWS で学ぶ
スケーラブルな Deep Leaning  フレームワーク "Apache MXNet” を AWS で学ぶスケーラブルな Deep Leaning  フレームワーク "Apache MXNet” を AWS で学ぶ
スケーラブルな Deep Leaning フレームワーク "Apache MXNet” を AWS で学ぶAmazon Web Services Japan
 
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能Takuya Iwatsuka
 
Implements OpenTelemetry Collector in DotNet
Implements OpenTelemetry Collector in DotNetImplements OpenTelemetry Collector in DotNet
Implements OpenTelemetry Collector in DotNetYoshifumi Kawai
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行gree_tech
 
俺的 Ignite update 萌えポイント portal&arm, compute, network -
俺的 Ignite update 萌えポイント   portal&arm, compute, network -俺的 Ignite update 萌えポイント   portal&arm, compute, network -
俺的 Ignite update 萌えポイント portal&arm, compute, network -Yui Ashikaga
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~torisoup
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現gree_tech
 
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介gree_tech
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話JustSystems Corporation
 
Alibaba Cloudを自分なりに整理してみた
Alibaba Cloudを自分なりに整理してみたAlibaba Cloudを自分なりに整理してみた
Alibaba Cloudを自分なりに整理してみたQiu Binbin
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)NTT DATA Technology & Innovation
 
Deploy TypeScript with CodePipeline in Fargate
Deploy TypeScript with CodePipeline in FargateDeploy TypeScript with CodePipeline in Fargate
Deploy TypeScript with CodePipeline in Fargatebitbank, Inc. Tokyo, Japan
 

What's hot (20)

コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのかコンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのか
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
Quarkus Technical Deep Dive - Japanese
Quarkus Technical Deep Dive - JapaneseQuarkus Technical Deep Dive - Japanese
Quarkus Technical Deep Dive - Japanese
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
 
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringアメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpring
 
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介
 
スケーラブルな Deep Leaning フレームワーク "Apache MXNet” を AWS で学ぶ
スケーラブルな Deep Leaning  フレームワーク "Apache MXNet” を AWS で学ぶスケーラブルな Deep Leaning  フレームワーク "Apache MXNet” を AWS で学ぶ
スケーラブルな Deep Leaning フレームワーク "Apache MXNet” を AWS で学ぶ
 
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
 
Implements OpenTelemetry Collector in DotNet
Implements OpenTelemetry Collector in DotNetImplements OpenTelemetry Collector in DotNet
Implements OpenTelemetry Collector in DotNet
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 
クラウド入門(AWS編)
クラウド入門(AWS編)クラウド入門(AWS編)
クラウド入門(AWS編)
 
俺的 Ignite update 萌えポイント portal&arm, compute, network -
俺的 Ignite update 萌えポイント   portal&arm, compute, network -俺的 Ignite update 萌えポイント   portal&arm, compute, network -
俺的 Ignite update 萌えポイント portal&arm, compute, network -
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
 
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
 
Alibaba Cloudを自分なりに整理してみた
Alibaba Cloudを自分なりに整理してみたAlibaba Cloudを自分なりに整理してみた
Alibaba Cloudを自分なりに整理してみた
 
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
Kafka・Storm・ZooKeeperの認証と認可について #kafkajpKafka・Storm・ZooKeeperの認証と認可について #kafkajp
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
 
Deploy TypeScript with CodePipeline in Fargate
Deploy TypeScript with CodePipeline in FargateDeploy TypeScript with CodePipeline in Fargate
Deploy TypeScript with CodePipeline in Fargate
 

Similar to GAE + Spannerで目指せ No (Uncomfortable) Ops

グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & AppsGoogle Cloud Platform - Japan
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由gree_tech
 
さいきんのMySQLに関する取り組み(仮)
さいきんのMySQLに関する取り組み(仮)さいきんのMySQLに関する取り組み(仮)
さいきんのMySQLに関する取り組み(仮)Takanori Sejima
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
 
20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container ServicesAmazon Web Services Japan
 
Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上Ryo Sasaki
 
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティングAmazon Web Services Japan
 
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方理弘 山崎
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Makoto Haruyama
 
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueModernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueNoritaka Sekiyama
 
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...Insight Technology, Inc.
 
kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用Koichi HARUNA
 
sysloadや監視などの話(仮)
sysloadや監視などの話(仮)sysloadや監視などの話(仮)
sysloadや監視などの話(仮)Takanori Sejima
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したことAmazon Web Services Japan
 
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)オラクルエンジニア通信
 

Similar to GAE + Spannerで目指せ No (Uncomfortable) Ops (20)

グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由
 
さいきんのMySQLに関する取り組み(仮)
さいきんのMySQLに関する取り組み(仮)さいきんのMySQLに関する取り組み(仮)
さいきんのMySQLに関する取り組み(仮)
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services
 
Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上
 
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
 
Oracle GoldenGate Cloud Serviceユーザーズガイド
Oracle GoldenGate Cloud ServiceユーザーズガイドOracle GoldenGate Cloud Serviceユーザーズガイド
Oracle GoldenGate Cloud Serviceユーザーズガイド
 
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介
 
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueModernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
 
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
 
kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用
 
sysloadや監視などの話(仮)
sysloadや監視などの話(仮)sysloadや監視などの話(仮)
sysloadや監視などの話(仮)
 
Migration to AWS part2
Migration to AWS part2Migration to AWS part2
Migration to AWS part2
 
NVIDIA 入門
NVIDIA 入門NVIDIA 入門
NVIDIA 入門
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)
 

Recently uploaded

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (14)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

GAE + Spannerで目指せ No (Uncomfortable) Ops

  • 1. 1© Miniascape Co., Ltd. All Rights Reserved. GAE + Spannerで目指せ No (Uncomfortable) Ops
  • 2. 2© Miniascape Co., Ltd. All Rights Reserved. ななし サーバーエンジニア Twitter @_nanasi880 スキル・経歴 ● ソーシャルゲーム業界1年目 ● 組み込み業界出身 ● AWS 6ヶ月 ● GCP 9ヶ月 ● C/C++/Go/Java… ● 好きなGCPプロダクト : GAE ささっと自己紹介
  • 3. 3© Miniascape Co., Ltd. All Rights Reserved. めた サーバーエンジニア Twitter @wMETAw スキル・経歴 ● ソーシャルゲーム業界5年目 ● AWS 1年6ヶ月 ● GCP 9ヶ月 ● Go PHP Ruby… ● 関西ゲーム勉強会、GGLT実行委員 ● Google Cloud Certified Associate Cloud Engineer ささっと自己紹介
  • 4. 4© Miniascape Co., Ltd. All Rights Reserved. Miniascape株式会社 Happy Elementsの東京スタジオとして 2017年10月に設立 Make Another World をスローガンに掲げ、新しいソーシャル ゲームの遊びを目指しています。 2019年末に新作リリース予定!! 会社紹介
  • 5. 5© Miniascape Co., Ltd. All Rights Reserved. クラウド選定 Datastore期 Spanner移行
  • 6. 6© Miniascape Co., Ltd. All Rights Reserved. エンジニアは4人のみ採用予定 2人 : クライアント 2人 : サーバー (インフラ・クライアントお手伝い) 構築・運用コストをゼロにしたい 設立当初... 辛すぎるので
  • 7. 7© Miniascape Co., Ltd. All Rights Reserved. No "Uncomfortable" Ops システム運用の"うれしくない"ことをなくそう!! NoOps Meetup Tokyo#1より 目指せ
  • 8. 8© Miniascape Co., Ltd. All Rights Reserved. ・インスタンスの起動が遅いとモヤモヤ ・ロールバック辛い問題 ・突然のスパイク ・パッチリリースによりインスタンス再起動を強いられる ・DB分割問題(ヒットタイトルではRDBを60台水平分割) 運用でうれしくないこと ※水平分割の否定的発言ではなく、弊社にはDBスペシャリストも割り当てる人員もいないため...
  • 9. 9© Miniascape Co., Ltd. All Rights Reserved. ・インスタンスの起動が遅い ➡︎ GAE/SE Goだとスピンアップ起動時間が約300ms ・ロールバック辛い問題 ➡︎ バージョン切り替えはわずか数秒! ・パッチリリースによりインスタンス再起動を強いられる ➡︎ Live Migrationによりパッチ当て作業がない ・DB分割問題 ➡︎ 分散DBであるDatastoreまたはSpannerを利用 ・突然のスパイク ➡︎ 分散DBとスピンアップの速さから余裕でオートスケール GCPで解決できるか ※GAE/SE Go (Google App Engine Standard Environment Golang) ※Live Migration ダウンタイム無しでホストのメンテナンスを実行する
  • 10. 10© Miniascape Co., Ltd. All Rights Reserved. GCP採用決定 ʕ◔ϖ◔ʔ
  • 11. 11© Miniascape Co., Ltd. All Rights Reserved. GCPで提供されるPaaS (Platform as a Service) Webアプリケーション作成に特化し 数行のyamlとアプリケーションソースをデプロイすれば即稼働 うれしいポイント ・HTTPSとURLの準備まで勝手にしてくれる ・BlueGreenデプロイメントサポート ・バージョン別にトラフィックの分配が可能 ・バージョンの切り戻しが数秒で完了 Google App Engine
  • 12. 12© Miniascape Co., Ltd. All Rights Reserved. # Go言語を使用 runtime: go111 # 全てのリクエストをGoアプリに流す handlers: - url: /.* script: auto app.yaml (コンフィグ)
  • 13. 13© Miniascape Co., Ltd. All Rights Reserved. package main import ( “fmt” “net/http” ) func main() { http.HandleFunc(“/”, func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, “hello world”) }) port := os.Getenv(“PORT”) http.ListenAndServe(“:”+port, nil) } main.go
  • 14. 14© Miniascape Co., Ltd. All Rights Reserved. (サーバーの) 構築/運用コストが0になった
  • 15. 15© Miniascape Co., Ltd. All Rights Reserved. クラウド選定 Datastore期 Spanner移行
  • 16. 16© Miniascape Co., Ltd. All Rights Reserved. Datastoreとは 分散型NoSQLデータベース 負荷状況に応じてスケールする可用性と耐久性に優れつつ RDBMSぽさもあり強整合性も備えるDB さまざまな制約 ・Entity GroupへのWriteは毎秒1~5回まで ・祖先クエリとKeyでのGetのみ強整合性 ・TXは楽観的であり、25個のEntity Groupしか跨げない ※Datastoreについてはスライド最後の資料をどうぞ
  • 17. 17© Miniascape Co., Ltd. All Rights Reserved. Datastore期 構成 ※対戦マッチングの仕様要件が多く 書き込み制限と複雑なクエリがあるため満せない そのため、Spanner移行を前提とした構成 CloudSQLには 計画メンテが存在。 “うれしくない”
  • 18. 18© Miniascape Co., Ltd. All Rights Reserved. Cloud Spannerとの接続に使用するgRPC接続を長時間保持できず HTTPリクエスト毎にコネクションを作成する必要があった ➡︎ SELECTするだけで3秒かかる 理由は長くなってしまうので気になる方は懇親会で 2019/3/20にGAされた第二世代ランタイムで解消済み Google App Engineの(当時の)問題点
  • 19. 19© Miniascape Co., Ltd. All Rights Reserved. クラウド選定 Datastore期 Spanner移行
  • 20. 20© Miniascape Co., Ltd. All Rights Reserved. Spannerとは ・RDBMSの構造とNoSQLのスケーラビリティを両立した データベース ・Primary Keyを用いてSpannerが自動で水平分割を行う ・ANSI 2011 SQLに対応しているので、使い慣れたSQL で対話が可能 ・スライド末尾に論文のリンクがあるのでそちらを参照
  • 21. 21© Miniascape Co., Ltd. All Rights Reserved. Spanner期 構成
  • 22. 22© Miniascape Co., Ltd. All Rights Reserved. ・計画ダウンタイムが無い ・1Write/EntityGroupのような厳しい制限が無い ・ノード数変更もオンデマンドで可能 ・ボタン1つで高可用性(99.99%※)が手に入る ・IAMで制御できるのでID/パスワード管理が不要 ・WebUIが使いやすく、クエリの実行計画も見やすい Spanner嬉しいポイント ※SLA適用条件として、3ノード以上が必要 ※Regionalインスタンスの場合 ※Multi-Regionなら99.999%
  • 23. 23© Miniascape Co., Ltd. All Rights Reserved.
  • 24. 24© Miniascape Co., Ltd. All Rights Reserved.
  • 25. 25© Miniascape Co., Ltd. All Rights Reserved. ・ローカルエミュレーターが無い ・Primary Keyの選定 ・トランザクションとロック ・値段 (おそらく)Spannerで困るポイント
  • 26. 26© Miniascape Co., Ltd. All Rights Reserved. ・諦めた ・素直にSpannerに接続するようにしている ・テーブル/Indexの作成込みで約8秒 ※参考ページ ・インスタンス起動も数秒~数十秒なのでむしろMySQLマ シンより起動速くてストレスフリー ・SDKが提供されており、DB作成やドロップは簡単にで きる ・ユニットテストが起動するたびに使い捨てのDBを作る 仕組みをCIに組み込んで運用中 ローカルエミュレーターが無い
  • 27. 27© Miniascape Co., Ltd. All Rights Reserved. ・Primary Keyを使って分散するので AutoIncrementのような連続する値はアンチパターン ・ベストプラクティスはUUIDを使用 ・「Spanner ホットスポット」で検索 ・外部サービスと連携しない限り Primary KeyがUUIDで困った事が無い ・どうしても数値が使いたい場面はSHA256して使用 Primary Keyの選定
  • 28. 28© Miniascape Co., Ltd. All Rights Reserved. ・トランザクションは2種類ある ・ReadOnlyとReadWrite ・ReadOnlyはブロックされない(MVCCによって実現) ・ReadWriteトランザクションは 楽観と悲観ロックの合わせ技のような挙動をする ・RWトランザクションでロックをとっても Commitが走るまでは誰も排他ロックされない SELECT ~ FOR UPDATE相当の操作は 明示的にはできない トランザクションとロック
  • 29. 29© Miniascape Co., Ltd. All Rights Reserved.
  • 30. 30© Miniascape Co., Ltd. All Rights Reserved. ・DBのスペシャリストを探してきて採用するより 遥かに安くて低リスクと判断 ・¥97,331.75/月では人は雇えない… ※GCP料金試算ページ ・開発環境は1インスタンス/1ノードを全環境でシェア ・各開発者単位でデータベースを分離し環境を分離 ・夜間/休日等は自動でインスタンスをシャットダウン 値段
  • 31. 31© Miniascape Co., Ltd. All Rights Reserved. THANK YOU !! ご静聴ありがとうございました
  • 32. 32© Miniascape Co., Ltd. All Rights Reserved. 参考資料
  • 33. 33© Miniascape Co., Ltd. All Rights Reserved. ・Datastoreの概要 ・Datastore/GO データ設計のコツDatastoreの概要と設計
  • 34. 34© Miniascape Co., Ltd. All Rights Reserved. ・地理分散DBについて ・普通の人でもわかるPaxos ・Spanner: Google’s Globally Distributed Database ・GoogleのSpannerに関する論文の和訳 ・Transaction Abort 探検記 ・Cloud Spanner を使って様々な Anomaly に立ち向かう ・DMM INSIDE ・Google Cloud Spanner Deep Dive ・merpay infra talk cloud spanner 参考リンク