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
GraphQLを活用したリアーキテクチャに対応するSLI/Oの再設計
Search
coconala_engineer
April 30, 2025
Technology
0
310
GraphQLを活用したリアーキテクチャに対応するSLI/Oの再設計
20250430_MIXI × ココナラのSRE改革大作戦 〜改善のその先へ〜
https://mixi.connpass.com/event/352623/
coconala_engineer
April 30, 2025
Tweet
Share
More Decks by coconala_engineer
See All by coconala_engineer
サービスを止めるな! DDoS攻撃へのスマートな備えと最前線の事例
coconala_engineer
2
230
SREの次のキャリアの道しるべ 〜SREがマネジメントレイヤーに挑戦して、 気づいたこととTips〜
coconala_engineer
2
5.2k
ココナラiOSチームの生成AI利用
coconala_engineer
0
34
AIと向き合う若手エンジニアの責任
coconala_engineer
0
34
一番気が重いと言われたポストモーテム委員会の改革
coconala_engineer
0
310
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
coconala_engineer
1
390
(みんなやっているはずなのに情報が少ない)DNSレコード管理の改善
coconala_engineer
0
130
クラウド時代のDDoS対策:可用性を守るためのベストプラクティス
coconala_engineer
1
110
「エンジニアマネージャー」の役割を担っている / 担ってみたい方へのキャリアパスガイド
coconala_engineer
1
290
Other Decks in Technology
See All in Technology
DatabricksのOLTPデータベース『Lakebase』に詳しくなろう!
inoutk
0
160
AIに全任せしないコーディングとマネジメント思考
kikuchikakeru
0
270
With Devin -AIの自律とメンバーの自立
kotanin0
2
790
[TechNight #91] Oracle Database 最新パフォーマンス分析手法
oracle4engineer
PRO
3
150
TypeScript 上達の道
ysknsid25
23
4.8k
今日からあなたもGeminiを好きになる
subaruhello
1
650
VLMサービスを用いた請求書データ化検証 / SaaSxML_Session_1
sansan_randd
0
110
新規事業におけるAIリサーチの活用例
ranxxx
0
170
ファインディにおける Dataform ブランチ戦略
hiracky16
0
210
OpenTelemetry の Log を使いこなそう
biwashi
5
1.1k
Recoil脱却の現状と挑戦
kirik
3
460
Expertise as a Service via MCP
yodakeisuke
1
160
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
246
12k
Docker and Python
trallard
45
3.5k
Side Projects
sachag
455
43k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Designing for Performance
lara
610
69k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
How to train your dragon (web standard)
notwaldorf
96
6.1k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Transcript
Copyright coconala Inc. All Rights Reserved. GraphQLを活用したリアーキテクチャに 対応するSLI/Oの再設計 DATA :
2025.4.30 Kou
Copyright coconala Inc. All Rights Reserved. 1. ココナラのリクエスト成功率 SLI/O 2.
BFFにGraphQLを導入 3. GraphQLとココナラのSLI/O計測のアンマッチ 4. GraphQLに対応したSLI/O計測 5. マイクロサービス化に合わせたSLI/O運用 2 Contents
Copyright coconala Inc. All Rights Reserved. • Prometheus + Grafana
を使用 • リクエストベース (not 時間ベース) • REST API / gRPC対応 • HTTPプロトコルを前提にした計測 ◦ 失敗したリクエストの ドメイン/パス/ステータスコード/HTTPメソッド などを参照できる 1 3 ココナラ(マーケットプレイス )のリクエスト成功率 SLI/O
Copyright coconala Inc. All Rights Reserved. • AWS環境でSREがREDメソッドを実践するための仕組み ( https://zenn.dev/coconala/articles/a3a5e33cd1d985
) 1 4 ココナラのリクエスト成功率 SLI/O
Copyright coconala Inc. All Rights Reserved. 2 5 BFFにGraphQLを導入 •
GraphQL with Apollo Federation (Cosmo Router) で BFF を実装する ◦ Web, Appの双方を提供しているココナラでは、 BFF は開発生産性に寄与する ◦ ストラングラーフィグパターンで、マイクロサービス化を推進できる
Copyright coconala Inc. All Rights Reserved. 6 3 GraphQLとココナラのSLI/O計測のアンマッチ REST
API GraphQL パス URLでリソースを一意に識別 /graphql という単一のURLエ ンドポイント メソッド HTTPメソッドを利用 HTTPメソッドの POST で固 定 ステータスコード HTTPステータスコードに準じ て定義 成功もエラーも、HTTPステー タスコード 200 を返却する エラー内容 HTTPステータスコードで概要 程度は把握できる 詳細はメッセージで定義 レスポンスボディに JSON と して埋め込まれる GraphQLは、柔軟なデータ取得を可能にする強力なメリットがある 一方で、HTTP とは考え方が異なるため、 HTTPが前提のココナラの SLI/O計測にはアンマッチ
Copyright coconala Inc. All Rights Reserved. 4 7 GraphQLに対応するSLI/O計測 GraphQL導入後も継続して
SLI/Oを計測できる環境を整える !!
Copyright coconala Inc. All Rights Reserved. • AWS環境でSREがREDメソッドを実践するための仕組み ( https://zenn.dev/coconala/articles/a3a5e33cd1d985
) 4 8 GraphQLに対応したSLI/O計測 実現可能性と運用性から方針を考える • 監視ツール乱立は避けたい ◦ 既存のSLI/Oの仕組みに載せられる方法は ないか? ▪ ログに情報 があれば、 自前の exporter を修正することで Prometheusのラベルに付与できる
Copyright coconala Inc. All Rights Reserved. ※ GraphQLエラーをIstioとGrafanaで監視する ( https://techblog.goinc.jp/entry/2023/12/12/090000
) 4 9 GraphQLに対応したSLI/O計測 方針から実装方法を考える • レスポンスからSLI/O計測に必要な情報を生成 ◦ レスポンスがエラーかどうか、 GraphQLのOperation名(パスの代わり )が最低限ほしい ▪ Apollo Federation(複数のGraphQLのゲートウェイとして 1つのエンドポイントを提供 ) でレスポンス解析処理を実装する 方法を採用した ▪ GraphQL サーバー側でレスポンス解析処理を行う方法 (※)もある
Copyright coconala Inc. All Rights Reserved. 4 10 GraphQLに対応したSLI/O計測 (実装に踏み込んだ話)
• リクエストされる Query名 (or Mutation名) を、HTTPのパス代わり に取得する ◦ ココナラで使用している Cosmo Router (Go lang) は、 コンテキストに ctx.Operation.Name として、Query名 (or Mutation名)を持つ ▪ これをログに出力した
Copyright coconala Inc. All Rights Reserved. 4 11 GraphQLに対応したSLI/O計測 (実装に踏み込んだ話)
• レスポンスボディを元に、リクエスト成功率を計測するための情報を生成する ◦ レスポンスボディを解析し、 INTERNAL_SERVER_ERROR 系(HTTPでいう5XX) であれば、リクエスト失敗 それ以外 は、リクエスト成功 としてフラグを立てる ▪ Apollo Federationでは、スーパークエリ、サブクエリという概念があり、 リクエストの成功・失敗を集計するには、スーパークエリのステータスを解析する
Copyright coconala Inc. All Rights Reserved. 4 12 GraphQLに対応したSLI/O計測
Copyright coconala Inc. All Rights Reserved. 5 13 マイクロサービス化に合わせた SLI/O運用
• 次なる課題 ◦ 「前スライドでエラーバジェット 100%超えてましたよ?」 ▪ マイクロサービスでもSLI/O計測はできるようになった ▪ 運用は大きいサービスの方法論を流用してる段階 • マイクロサービスごとのSLOを策定中 ◦ SLI/O運用の拡大・浸透から全社にSRE文化を広めたい ▪ マイクロサービスに適した SLI/O運用を Stream Aligned Teamと成熟させる • CUJが複数プロダクトを横断する場合のSLI/O運用 • これまではPlatform TeamであったSREの Enabling Teamとしての役割も重要になってきている ◦ マイクロサービスごとのSLI/O運用をEnablingするには、 まず SREチーム内でEnablingができる人を増やす必要がある