少数チームによる高速な事業立ち上げ gcp サービ …...d2-3-s03: gcp...
TRANSCRIPT
![Page 1: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/1.jpg)
D2-3-S03:GCP サーバーレス サービスと Sansan データ化技術〜少数チームによる高速な事業立ち上げ
木田悠一郎, DSOC Development Group エンジニア, Sansan 株式会社磯部俊行, カスタマー エンジニア, Google Cloud Japan 2019/8/1
![Page 2: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/2.jpg)
木田 悠一郎
Sansan 株式会社DSOC Development Group エンジニア
磯部 俊行
Google Cloud Japanカスタマー エンジニア
![Page 3: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/3.jpg)
GCP サーバーレス サービス
Sansan サービス紹介
高精度なデータ化を支えるノウハウ
少数チームで高速にサービスを立ち上げる
Agenda
![Page 4: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/4.jpg)
01GCPサーバーレス サービス
![Page 5: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/5.jpg)
サーバー設定
HW 調達
モニタリング
バージョニング
プログラミング
ネットワーク設定
ロギング
ストレージ設計
オーケストレーション
テスト
OS 設定
MW 設定
アプリケーション開発で考えること
![Page 6: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/6.jpg)
物理サーバー / 仮想マシンの
プロビジョニング、管理、メンテナンスを意識することなく、
ソフトウェアの機能そのものや実行環境を得られる
サーバーレスとは?
No InfraManagement
Fully Managed Security
Pay only for usage
![Page 7: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/7.jpg)
開発 ビジネス バリュー
サーバーレスの目的
![Page 8: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/8.jpg)
運用モデル プログラミング モデル
No Provisioning -> Scalability- サーバー不要- サービス単位でスケール
Secure- 組み込みのマネージド
セキュリティ- 自動アップデート
Pay for usage- スモール スタート- コスト最適化
Focus on service- サービス指向の開発- マイクロサービス
Event-driven- 疎結合- 変更容易性
サーバーレスの開発モデル
![Page 9: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/9.jpg)
オーケストレーション vs コレオグラフィ
イベント
イベント
イベント
イベント各サービスが疎結合になり、開発単位が小さくなるため、高速に開発や変更が可能
Event-driven なアーキテクチャ
![Page 10: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/10.jpg)
Compute
Data Analytics ML & AI
Database & Storage
Smart assistants &
chat
DevOps
Messaging
GCP のサーバーレスはフルスタック
![Page 11: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/11.jpg)
Compute Database Messaging, Queue Data Monitoring
App Engine
Cloud Functions BigQuery Cloud
DataflowCloud
Pub/Sub Stackdriver
Cloud Run Cloud Storage
Cloud Memorystore
Cloud SQL
Cloud Spanner
Cloud Firestore
Cloud Bigtable
Cloud Tasks
Web アプリケーションのための GCP サーバーレスサービス
![Page 12: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/12.jpg)
高いスケーラビリティを持つサーバーレス Web アプリケーション
管理が容易
サーバー管理なし
スケールアウトが高速
ゼロにまでスケールイン
パッチなどの更新なし
開発しやすい
アプリのコードに集中できる
バージョニング
トラフィック スプリット
サポート ランタイム
Java
Python
Go
PHP
Node.js
Ruby alpha
{}
Google App Engine
![Page 13: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/13.jpg)
● NoSQL データベース
● 強整合性
● 高い可用性
○ マルチ リージョンで 99.999%
○ リージョナルで 99.99%
● 2 つのモード
○ ネイティブ モード(Realtime)
○ Datastore モード
Cloud Firestore
![Page 14: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/14.jpg)
Cloud Firestore の特長
データ更新をリアルタイムに同期
サーバサイドの DB としても
モバイル バックエンドとしても
name: "ユーザ A"description: "ユーザ A の説明"
My First Note
My Other Note
name: "ユーザ B"description: "ユーザ B の説明"
ドキュメント指向でスケーラブルなデータ構
成
![Page 15: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/15.jpg)
信頼性の高いタスクのオフロード
フル マネージドのタスクキュー : 長時間の非同期タスクも確実にディスパッ
チ。インフラ管理なし、使った分だけお支払い。
レート制御 と 再試行
必要なスループットに合わせてレート制御 や 再試行の設定が可能。
HTTP/S Auth(IAM)を使った柔軟なタスク ルーティング
GCP 内外のサービスに対してセキュアにタスクをディスパッチ。
マイクロサービス間の非同期タスク向けキューイング システム
Cloud Tasks
![Page 16: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/16.jpg)
at-least-once 配信
プロビジョニング不要の自動処理
グローバルにデザインされた高い可用性
信頼性の高いリアルタイムのメッセージング
Cloud Pub/Sub
![Page 17: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/17.jpg)
GCP サーバーレス サービス
Sansan サービス紹介
高精度なデータ化を支えるノウハウ
少数チームで高速にサービスを立ち上げる
Agenda
![Page 18: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/18.jpg)
02Sansanサービス紹介
![Page 19: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/19.jpg)
法人向けクラウド名刺管理サービス 個人向け名刺アプリ
![Page 20: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/20.jpg)
![Page 21: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/21.jpg)
03高精度なデータ化を支えるノウハウ
![Page 22: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/22.jpg)
高精度なデータ化を支えるノウハウ機械の力と人力を組み合わせる
![Page 23: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/23.jpg)
ミステイクディテクター
これにより、オペレーターは効率的
に最終チェックを行うことが可能にな
ります。
誤りの傾向を学習してミスの可
能性を予測
![Page 24: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/24.jpg)
言語処理判定
● 4言語(日英中韓)に対応
● データ化フローの効率化
● オペレータへの振り分けの自
動化
● 精度 98 %
名刺画像から言語を判定
![Page 25: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/25.jpg)
項目セグメンテーション
● 項目判別の結果を学習
● 単体モデルで項目矩形、
項目名の推定
● 精度 98 %
文字を読み取らずに、名刺のデ
ザインから項目を見分ける
![Page 26: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/26.jpg)
高精度なデータ化のための人の力
● 入力ルールやトレーニング問題の作成
● 一つの項目に対する、複数のオペレータによる多重入力
● 入力内容に対する目視チェック
![Page 27: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/27.jpg)
本日は「請求書のデータ化」に関する
取り組みをご紹介します
新たなデータ化サービスの検証
※ 正式な新サービスの発表ではございません
![Page 28: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/28.jpg)
04少数チームで
高速にサービス
を立ち上げる
![Page 29: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/29.jpg)
GCP サーバーレス採用の経緯
課題
運用負荷を下げ、本質的な機能の開発に集中したい
チャレンジすること自体に価値があり、
今後の技術選択の幅を増やすことができる
導入の背景
本気で使わないと分からない
昨年から社内でマルチクラウドを推進 参照: https://www.slideshare.net/ShimpeiNagai/gce-sansan
![Page 30: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/30.jpg)
請求書データ化システム
![Page 31: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/31.jpg)
使用言語
フロントエンド
React, Redux, TypeScript
Cloud Functions
Node.js
バックエンド
Node.js, TypeScript, Express
自動化エンジン
C#
![Page 32: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/32.jpg)
サービスの全体像
ユーザー側システム
請求書データ化システム
自動化エンジン
データ化結果
入力 / データ化システム
社内オペレーター
入力
データ化
請求書画像
![Page 33: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/33.jpg)
サービスの全体像
ユーザー側システム
請求書画像
請求書データ化システム
自動化エンジン
データ化結果
入力 / データ化システム
社内オペレーター
入力
データ化
![Page 34: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/34.jpg)
KPI 基盤
App Engine
Cloud Functions
BigQueryCloud Pub/Sub
ロギング / エラー通知
Stackdriver
Cloud Storage
Cloud Firestore
自動化エンジン
Compute Engine
ユーザー側システム
Cloud Dataflow
Cloud Tasks
アーキテクチャ
入力 / データ化システム
![Page 35: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/35.jpg)
KPI 基盤
App Engine
Cloud Functions
BigQueryCloud Pub/Sub
ロギング / エラー通知
Stackdriver
Cloud Storage
Cloud Firestore
自動化エンジン
Compute Engine
ユーザー側システム
Cloud Dataflow
Cloud Tasks
アーキテクチャ
入力 / データ化システム
![Page 36: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/36.jpg)
アーキテクチャ
KPI 基盤
BigQueryCloud Pub/Sub
ロギング / エラー通知
Stackdriver
自動化エンジン
Compute Engine
ユーザー側システム
Cloud Dataflow
App Engine
Cloud Functions
Cloud Storage
Cloud Firestore
Cloud Tasks
入力 / データ化システム
![Page 37: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/37.jpg)
KPI 基盤
App Engine
Cloud Functions
BigQueryCloud Pub/Sub
ロギング / エラー通知
Stackdriver
Cloud Storage
Cloud Firestore
自動化エンジン
Compute Engine
ユーザー側システム
Cloud Dataflow
Cloud Tasks
アーキテクチャ
入力 / データ化システム
ファイル連携
![Page 38: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/38.jpg)
KPI 基盤
App Engine
Cloud Functions
BigQueryCloud Pub/Sub
ロギング / エラー通知
Stackdriver
Cloud Storage
Cloud Firestore
自動化エンジン
Compute Engine
ユーザー側システム
Cloud Dataflow
Cloud Tasks
アーキテクチャ
入力 / データ化システム
![Page 39: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/39.jpg)
KPI 基盤
App Engine
Cloud Functions
BigQueryCloud Pub/Sub
ロギング / エラー通知
Stackdriver
Cloud Storage
Cloud Firestore
自動化エンジン
Compute Engine
ユーザー側システム
Cloud Dataflow
Cloud Tasks
アーキテクチャ
入力 / データ化システム
![Page 40: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/40.jpg)
KPI 基盤
App Engine
Cloud Functions
BigQueryCloud Pub/Sub
ロギング / エラー通知
Stackdriver
Cloud Storage
Cloud Firestore
自動化エンジン
Compute Engine
ユーザー側システム
Cloud Dataflow
Cloud Tasks
アーキテクチャ
入力 / データ化システム
![Page 41: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/41.jpg)
入力 / データ化システム
![Page 42: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/42.jpg)
入力データ化システム
KPI 基盤
BigQueryCloud Pub/Sub
ロギング / エラー通知
Stackdriver
自動化エンジン
Compute Engine
ユーザー側システム
Cloud Dataflow
App Engine
Cloud Functions
Cloud Storage
Cloud Firestore
Cloud Tasks
入力 / データ化システム
![Page 43: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/43.jpg)
● 非同期実行
● 定期実行
● デプロイ
● IP アドレス制限
● トラフィック分割
● オートスケール
新規開発で検討しなければならないこと
![Page 44: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/44.jpg)
● 非同期実行 Cloud Tasks
● 定期実行 App Engine Cron
● デプロイ gcloud app deploy コマンド
● IP アドレス制限 App Engine ファイア ウォール
● トラフィック分割 Traffic Splitting
● オートスケール ほぼ設定不要
新規開発で検討しなければならないこと
App Engine
![Page 45: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/45.jpg)
非同期実行 - Cloud Tasks
● 最低一回の実行を保証
● http status 200 系以外が返った場合はリトライ
○ リトライ回数の設定なども可能
Cloud Tasks
![Page 46: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/46.jpg)
定期実行 - App Engine Cron
● cron.yaml で設定
● gcloud app deploy cron.yaml で反映
cron:- description: "日次バッチ" url: /tasks/summary schedule: every 24 hours
App Engine
![Page 47: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/47.jpg)
デプロイ - gcloud app deploy コマンド
● Google Cloud SDK をインストールして設定
● プロジェクト ルートに yaml ファイルを置く
runtime: nodejs10service: default
App Engine
![Page 48: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/48.jpg)
IP アドレス制限 - App Engine ファイア ウォール
注意点
● GCP サービス間の通信もブロックされることがある
● Cloud Tasks は内部的に URL フェッチ サービスを使っているため、
URL フェッチ サービスの IP アドレスを許可する必要がある
● Cloud Pub/Sub はグローバルなサービスであるため、
ホワイトリスト追加はできない
=> Cloud Functions、 Cloud Tasks 経由にすることで解決しました
Cloud Storage
Cloud Functions
App Engine
Cloud Tasks
App Engine
Cloud Pub/Sub
Cloud Storage
![Page 49: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/49.jpg)
トラフィック分割 - Traffic Splitting
● 複数バージョンのインスタンスを同時に動かせる
● IP アドレスや Cookie でトラフィックを分割できる
● 管理画面から前のインスタンスのバージョンにロールバックすることも簡単
App Engine
![Page 50: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/50.jpg)
オートスケール
スタンダード環境 or フレキシブル環境
可能な限りスタンダード環境を使う
○ サンドボックス環境で実行される
○ デプロイやスケーリングが高速
詳しい説明は割愛
○ 公式ドキュメント参照
https://cloud.google.com/appengine/docs/flexible/java/flexible-for-standard-users?hl=ja
![Page 51: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/51.jpg)
フレキシブル環境を使うパターン①
● インスタンスを VPC ネットワークに紐づける
● Cloud Memorystore は VPC リソースなので、Cloud Memorystore を使いた
い場合も該当する
● 今回は、AWS 上の社内サービスと VPN 接続したかったので、 フレキシブル環境を使用
○ 現在は Serverless VPC Access を使えば、スタンダード環境から VPC リソースにアクセス可能。
● 今は US のみだが、Tokyo リージョンに来たら乗り換えたい https://cloud.google.com/vpc/docs/configure-serverless-vpc-access?hl=ja
![Page 52: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/52.jpg)
フレキシブル環境を使うパターン②
● CPU やメモリを消費する処理
● 特定のライブラリを使用する => 別サービスに切り出して Docker を使う
○ 現在は、Cloud Run を使うことでスタンダード環境と同じような
スケーラビリティを保ちつつ、Docker イメージを使った
柔軟な構成にすることができます。
App EngineCloud Functions
Cloud Storage Cloud Tasks App EngineCloud Tasks
Flexible Environment- 画像変換サービス-
![Page 53: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/53.jpg)
データベース
![Page 54: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/54.jpg)
データベース
KPI 基盤
BigQueryCloud Pub/Sub
ロギング / エラー通知
Stackdriver
自動化エンジン
Compute Engine
ユーザー側システム
Cloud Dataflow
App Engine
Cloud Functions
Cloud Storage
Cloud Firestore
Cloud Tasks
入力 / データ化システム
![Page 55: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/55.jpg)
なぜ Cloud Firestore を採用したか
● Google App Engine はオートスケールする
● データベースのスケールがボトルネックになるのは避けたい
○ Cloud Datastore は有力な選択肢の一つ
○ Cloud Firestore は Cloud Datastore の次期メジャー バージョン
○ 公式ドキュメント参照: https://cloud.google.com/datastore/docs/firestore-or-datastore?hl=ja
Cloud Firestore
![Page 56: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/56.jpg)
Cloud Firestore における DB 設計
● 複数のフィールドに対するクエリに複合インデックスを作成する
○ インデックスを作成せずに複合クエリを実行するとエラーになる
● 関連をサブ コレクションに持つことができる
● サブ コレクションに対して、コレクションをまたいだクエリを発行できなかった
○ 全てのドキュメントに対してクエリを発行したい場合は、
ルート コレクションにする必要があった
○ 現在は Collection Group を使えばサブ コレクションにもクエリを実行できる
Cloud Firestore
![Page 57: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/57.jpg)
サブ コレクションを使う場面
サブ コレクションにすることで、
複合インデックスを作成せずに関連を絞り込める
Cloud Firestore
db.collection ('users').doc ('Kida').collection ('posts').orderBy ('postedAt')=> 複合インデックス不要
db.collection ('posts').where ('user', '==', 'Kida').orderBy ('postedAt')=> posts コレクションの user と postedAt フィールドに複合インデックスが必要
例)特定のユーザーの投稿を投稿時間の順に取得するケース
![Page 58: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/58.jpg)
Cloud Firestore における DB 設計
SQL のような COUNT 関数はない
● ドキュメントをガバっと取ってきてカウントすることはできる
● 分散カウンタを使う
○ 1 ドキュメントあたり 1 秒間に約 1 回しか更新できない
○ カウンタ用のドキュメントを複数用意して、ランダムにインクリメントする
○ 全ドキュメントを取得して合計を計算する
● FieldValue.increment()を使う
● v1.1.0 でリリースされた
● 要件によっては、Redis などでカウントするのもあり
Cloud Firestore
![Page 59: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/59.jpg)
ロギング / エラー通知
![Page 60: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/60.jpg)
KPI 基盤
App Engine
Cloud Functions
BigQueryCloud Pub/Sub
ロギング / エラー通知
Stackdriver
Cloud Storage
Cloud Firestore
自動化エンジン
Compute Engine
ユーザー側システム
Cloud Dataflow
Cloud Tasks
ロギング・エラー通知
入力 / データ化システム
![Page 61: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/61.jpg)
StackdriverStackdriver Logging
● 標準出力するだけでログを蓄積できる
Stackdriver Error Reporting
● 近いエラーをグルーピングしてくれる
● 同じエラーを何度も通知しない
● GCP Console からステータス変更
● メール通知できる
○ Gmail のフィルタ機能で Slack 通知も可能
Stackdriver
![Page 62: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/62.jpg)
連携システム
![Page 63: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/63.jpg)
KPI 基盤
App Engine
Cloud Functions
BigQueryCloud Pub/Sub
ロギング / エラー通知
Stackdriver
Cloud Storage
Cloud Firestore
自動化エンジン
Compute Engine
ユーザー側システム
Cloud Dataflow
Cloud Tasks
連携システム
入力 / データ化システム
![Page 64: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/64.jpg)
自動化エンジン - Compute Engine
少しずつ自動化していく
※Web API として連携
請求書画像とオペレーターの入力データのセットを学習
![Page 65: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/65.jpg)
KPI 基盤
● アプリケーションから Cloud Pub/Sub 経由でログを送信
● Tableau で可視化
App Engine BigQueryCloud Pub/Sub Cloud Dataflow
Tableau
![Page 66: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/66.jpg)
GCP サーバーレスで
得られたメリット
![Page 67: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/67.jpg)
GCP サーバーレス採用の経緯
課題
運用負荷を下げ、本質的な機能の開発に集中したい
チャレンジすること自体に価値があり、
今後の技術選択の幅を増やすことができる
導入の背景
本気で使わないと分からない
昨年から社内でマルチクラウドを推進 参照 https://www.slideshare.net/ShimpeiNagai/gce-sansan
![Page 68: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/68.jpg)
初期構築コスト
運用コストが削減 本質的な機能の
開発に集中できた
GCP サーバーレスで得られたメリット
デプロイ
オートスケール非同期処理
定期実行
ファイア ウォール
トラフィック分割
ロギング / エラー通知
![Page 69: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/69.jpg)
既存システムとの比較
名刺データ化システム
アプリケーション エンジニア複数名 / 定常的に運用業務あり
請求書データ化システム
アプリケーション エンジニア 1 名 / 運用業務なし
サーバレス
※ 処理量が異なるので、あくまで参考になります
![Page 70: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/70.jpg)
コスト最適化
● 新規事業 = サーバー費用などのコストもなるべく抑えたい
● Google App Engine はインスタンスが 0 台までスケールイン
○ コスト管理の手間も削減して最適化
![Page 71: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/71.jpg)
今後やりたいこと
![Page 72: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/72.jpg)
Cloud AutoML による請求書分類
現状、以下のような分類が存在する○ 振込先が海外の口座
○ 口座振替(引き落とし)
○ その他
振込先:国内
振込先:海外
口座振替(引き落とし)
・・・ その他
現状オペレータによる仕分け
Cloud AutoML を活用できないか
![Page 73: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/73.jpg)
● Node.js クライアント ライブラリを使ってアクセスする
● 書き込み、読み取りの際にただのオブジェクトになってしまう
○ TypeScript を使っている旨味を享受しづらい
● クライアント ライブラリをラップして set(), update() などの引数に
型を指定できるようにしているが、少し煩雑になっている
● リポジトリ層のようなレイヤーを導入して、ドメイン オブジェクトとのマッピング
などを模索中
Cloud Firestore まわりの実装
Cloud Firestore
![Page 74: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/74.jpg)
社内での GCP 普及活動
チャレンジすること自体に価値があり、
今後の技術選択の幅を増やすことができる
● プロジェクトで閉じてしまっては意味がない
● 得られた知見を社内で共有し、
全社的に技術選択の幅を増やす
![Page 75: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/75.jpg)
Sansan のデータ化ノウハウを活かした、新たなサービスの創出にチャ
レンジする仲間を募集しています!!
We are hiring!
![Page 76: 少数チームによる高速な事業立ち上げ GCP サービ …...D2-3-S03: GCP サーバーレス サービスと Sansan データ化技術〜 少数チームによる高速な事業立ち上げ](https://reader033.vdocuments.site/reader033/viewer/2022041806/5e545f6be3aa55504554dfda/html5/thumbnails/76.jpg)
Enjoy GCP!!