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
300
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
1
48
SREの次のキャリアの道しるべ 〜SREがマネジメントレイヤーに挑戦して、 気づいたこととTips〜
coconala_engineer
1
4k
ココナラiOSチームの生成AI利用
coconala_engineer
0
27
AIと向き合う若手エンジニアの責任
coconala_engineer
0
30
一番気が重いと言われたポストモーテム委員会の改革
coconala_engineer
0
300
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
coconala_engineer
1
380
(みんなやっているはずなのに情報が少ない)DNSレコード管理の改善
coconala_engineer
0
130
クラウド時代のDDoS対策:可用性を守るためのベストプラクティス
coconala_engineer
0
100
「エンジニアマネージャー」の役割を担っている / 担ってみたい方へのキャリアパスガイド
coconala_engineer
1
290
Other Decks in Technology
See All in Technology
助けて! XからWaylandに移行しないと新しいGNOMEが使えなくなっちゃう 2025-07-12
nobutomurata
2
190
対話型音声AIアプリケーションの信頼性向上の取り組み
ivry_presentationmaterials
3
840
CDKコード品質UP!ナイスな自作コンストラクタを作るための便利インターフェース
harukasakihara
2
220
Contributing to Rails? Start with the Gems You Already Use
yahonda
2
120
Introduction to Bill One Development Engineer
sansan33
PRO
0
260
セキュアなAI活用のためのLiteLLMの可能性
tk3fftk
1
280
TLSから見るSREの未来
atpons
2
290
AIエージェントが書くのなら直接CloudFormationを書かせればいいじゃないですか何故AWS CDKを使う必要があるのさ
watany
18
7.4k
Rethinking Incident Response: Context-Aware AI in Practice
rrreeeyyy
1
810
サイバーエージェントグループのSRE10年の歩みとAI時代の生存戦略
shotatsuge
4
970
ソフトウェアQAがハードウェアの人になったの
mineo_matsuya
3
190
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
18k
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
340
Into the Great Unknown - MozCon
thekraken
40
1.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.3k
Designing for humans not robots
tammielis
253
25k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Producing Creativity
orderedlist
PRO
346
40k
How to Think Like a Performance Engineer
csswizardry
25
1.7k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
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ができる人を増やす必要がある