Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
menu基盤チームによるGoogle Cloudの活用事例~Application Integ...
Search
yoshifumi_ishikura
December 16, 2024
Programming
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
menu基盤チームによるGoogle Cloudの活用事例~Application Integration, Cloud Tasks編~
https://sake-game.connpass.com/event/333486/
yoshifumi_ishikura
December 16, 2024
Other Decks in Programming
See All in Programming
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
850
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.9k
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
500
霧の中の代数的エフェクト
funnyycat
1
420
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
120
5分で問診!Composer セキュリティ健康診断
codmoninc
0
580
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
1.8k
FDEが実現するAI駆動経営の現在地
gonta
2
200
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.6k
関数型プログラミングのメリットって何だろう?
wanko_it
0
190
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
150
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
140
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Rails Girls Zürich Keynote
gr2m
96
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
A better future with KSS
kneath
240
18k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
Documentation Writing (for coders)
carmenintech
77
5.4k
Making the Leap to Tech Lead
cromwellryan
135
10k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
Leo the Paperboy
mayatellez
8
1.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Transcript
menu基盤チームによる Google Cloudの活用事例 ~Application Integration, Cloud Tasks編~ 1
自己紹介:秋山諒次郎(あきやまりょうじろう) ・今年1月中途入社 ・バックエンド/インフラエンジニア ・基盤チーム ・最近の関心: 決済システム
1:全国33都道府県でデリバリーサービス展開 2:KDDI社との資本業務提携 3:フードだけでなく、「クイックコマース 領域」のサービスとしてNo1を目指す
配達員様 店舗様 注文者様 注文する 配 達 す る 受 け
渡 す 店舗・配達員・ユーザーのスリーマッチングモデル
1.Application Integrationの活用 2.Cloud Tasksの活用 Contents
©MENU.INC Application Integrationの活用
Application Integrationとは 1.Cloud Cloudが提供する iPaaS (integration Platform as a Service)
2.異なるプラットフォーム間のデータ連携 3.ノーコード / ローコード
Application Integrationとは 外部App Application Integration データマッピング 条件分岐 JavaScript 実行 Pub/Sub
Cloud Scheduler REST API 外部App Pub/Sub Cloud Scheduler REST API Cloud SQL Workflows
Application Integration UI
背景 ・CSで受けたユーザー問い合わせ起因の処理を スムーズに実行したい ・SFA/CRMツールから内部リソースへの処理実行を トリガーしたい ・素早く開発したい
背景 SFA/CRM Tool GKE Google Cloud ユーザー問い合わせ
やったこと SFA/CRM Tool Application Integration データマッピング トリガー 認証プロファイル pub/sub GKE
Google Cloud
Application Integrationを使ってみて ・認証周りを簡単に設定できたので素早く開発できた ・認証プロファイルを設定、接続タスクで紐づけるのみ ・認証プロファイルは一度作成すれば再利用できる
Application Integrationを使ってみて ・データマッピングが直感的 ・マッピング関数の充実
Application Integrationを使ってみて ・Google Workspace アプリとの連携 ・バックオフィス業務にも活用できそう
©MENU.INC Cloud Tasksの活用
自己紹介:石倉 佳文(いしくら よしふみ) ・23卒新卒入社 ・基盤チーム ・バックエンド/インフラエンジニア ・関心のある技術 Go, k8s, o11y,
仮想化
背景 ・外部の企業のシステムからmenuに商品を登録するために 使 用するAPIがある ・こちらのAPIの商品画像をアップロードする部分で負荷の 部分 で問題があった ・こちらのAPIを一定のスループットを保ちながら安定させ る必 要があった
課題 ・商品画像のアップロードで課題 ・非同期で処理していたが、特に流量の制限をしていなかっ たの でたくさんイベントが発行されると後続のサーバーに 負荷がかか る(スケールが間に合わない) ・画像のアップロードする処理が短期間で同時に走ってしまうと Cloud Natのポートが枯渇する問題が発生した
要件 ・画像のアップロードの速度はそこまで求められていない(夜 中に 実行して朝完了していればOK) ・スパイクするようなリクエストがきても緩やかに安定して完 了させ たい ・過剰スケールなどをしないようにイベント流量を制御できる ような 状態にしておきたい
改善前の構成 簡略図
やったこと ・画像をアップロードするサーバーをVPCの外に出した (ポート 枯渇の解消) ・画像をアップロードするサーバーをGCEからCloud Runに 変 更した(より柔軟にスケールできる) ・Cloud Tasksを導入した(イベントの流量を調整できる)
Cloud Tasksとは ・Google Cloudが提供している非同期タスクを実行するこ との できるフルマネージドサービス ・タスクという単位でキューに実行したい処理をためる ・キューにためたタスクの実行タイミングが柔軟に調整でき る ・リトライする機構が標準である
Cloud TasksとPub/Subの比較 ・Cloud Tasksはパブリッシャー側で制御することが目的 ・具体的な配信スケジュールの決定 ・配信レート ・リトライなど Cloud Tasks か
Pub/Sub かの選択
Cloud TasksとPub/Subの比較 ・PubSubはパブリッシャーとサブスクライバーの分離が 目 的 ・パブリッシャーはサブスクライバーのことを気にする必 要がな い ・パブリッシャーに対して複数のサブスクライバーという 構成を 取れるので、イベント駆動なアーキテクチャなどと 親和性が高く 拡張性の高い構成を作りやすい
Cloud Tasks か Pub/Sub かの選択
Cloud TasksとPub/Subの併用 ・Pub/Subはイベント駆動型のアーキテクチャに適している ・大量のメッセージ配信を得意としている ・Cloud TasksはHTTPリクエストのバッファリングや柔軟な 流通 量の制御などに適している 組み合わせることでPub/Subでイベント駆動なアーキテクチャを 実現しつつ、Cloud Tasksで処理をバッファリングすることでシンプ
ルな構成で拡張性や高負荷への柔軟性の高い構成を実現できる https://cloud.google.com/blog/ja/products/serverless/buffer-http-requests-with-cloud-tasks
タスクの作成方法 ・Create Taskメソッド ・タスク単位でのルーティングが必要な場合など複雑な非同 期処理を行いたい時に使用する ・Buffer Taskメソッド ・すぐに実行する必要のないHTTPリクエストをキューに バッファリングして適切なタイミングで実行する
・キューレベルのルーティングが必要 ・クライアントライブラリ(SDK)の提供はない ※アクセス トー クンの取得の実装は自分で行なった
タスクの作成方法 ・今回はスパイクするような高負荷をバッファリングして緩 やかに 処理したいのでBuffer Taskメソッドが適切 https://cloud.google.com/tasks/docs/creating-http-target-tasks?hl=ja
改善後の構成 簡略図
Cloud Tasksを使ってみて良かったこと ・インフラのレイヤーで調整することができる → アプリケーション側で調整する必要がないので実装コ ストがかからない → 目標実行完了時間などと動作を見合わせてあとから調
整しやすい → 配信レートとは別に最大同時実行数を設定することが できスケールする最大値を固定することができ制御し やす かった
Cloud Tasksを使ってみて良かったこと ・標準で柔軟なリトライ機構 → Cloud Runで一時的なエラーが発生してもリトライし てくれる
Cloud Tasksを使ってみて良かったこと ・Cloud Tasks側の負荷を気にしなくていい → タスクをたくさん作っても詰まることなく安定した動 作 だった
menuのサービスを支える仲間を募集中です!!! 採⽤情報はこちら!