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
280
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
ココナラiOSチームの生成AI利用
coconala_engineer
0
23
AIと向き合う若手エンジニアの責任
coconala_engineer
0
27
一番気が重いと言われたポストモーテム委員会の改革
coconala_engineer
0
280
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
coconala_engineer
1
360
(みんなやっているはずなのに情報が少ない)DNSレコード管理の改善
coconala_engineer
0
120
クラウド時代のDDoS対策:可用性を守るためのベストプラクティス
coconala_engineer
0
97
「エンジニアマネージャー」の役割を担っている / 担ってみたい方へのキャリアパスガイド
coconala_engineer
1
280
上場前後で描く、「モダンな情報システム部門」への進化とその取り組み
coconala_engineer
0
79
Qiita Organizationに取り組む前後の技術広報活動と今後の展望
coconala_engineer
0
73
Other Decks in Technology
See All in Technology
Securing your Lambda 101
chillzprezi
0
260
JSX - 歴史を振り返り、⾯⽩がって、エモくなろう
pal4de
2
100
ゆるSRE #11 LT
okaru
1
590
堅牢な認証基盤の実現 TypeScriptで代数的データ型を活用する
kakehashi
PRO
2
220
開発効率と信頼性を両立する Ubieのプラットフォームエンジニアリング
teru0x1
0
140
型システムを知りたい人のための型検査器作成入門
mame
15
3.7k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
43
25k
Tenstorrent HW/SW 概要説明
tenstorrent_japan
0
390
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
17k
原則から考える保守しやすいComposable関数設計
moriatsushi
2
240
Rubyで作る論理回路シミュレータの設計の話 - Kashiwa.rb #12
kozy4324
1
190
kubellが挑むBPaaSにおける、人とAIエージェントによるサービス開発の最前線と技術展望
kubell_hr
0
280
Featured
See All Featured
Facilitating Awesome Meetings
lara
54
6.4k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Why Our Code Smells
bkeepers
PRO
337
57k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Making Projects Easy
brettharned
116
6.2k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
The World Runs on Bad Software
bkeepers
PRO
68
11k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.8k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
6
690
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ができる人を増やす必要がある