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
100
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
一番気が重いと言われたポストモーテム委員会の改革
coconala_engineer
0
110
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
coconala_engineer
1
300
(みんなやっているはずなのに情報が少ない)DNSレコード管理の改善
coconala_engineer
0
110
クラウド時代のDDoS対策:可用性を守るためのベストプラクティス
coconala_engineer
0
83
「エンジニアマネージャー」の役割を担っている / 担ってみたい方へのキャリアパスガイド
coconala_engineer
1
260
上場前後で描く、「モダンな情報システム部門」への進化とその取り組み
coconala_engineer
0
66
Qiita Organizationに取り組む前後の技術広報活動と今後の展望
coconala_engineer
0
61
ココナラのセキュリティ組織の体制・役割・今後目指す世界
coconala_engineer
0
280
SIEMによるセキュリティログの可視化と分析を通じた信頼性向上プロセスと実践
coconala_engineer
1
4.5k
Other Decks in Technology
See All in Technology
Goの組織でバックエンドTypeScriptを採用してどうだったか / How was adopting backend TypeScript in a Golang company
kaminashi
12
8.9k
品質文化を支える小さいクロスファンクショナルなチーム / Cross-functional teams fostering quality culture
toma_sm
0
160
ドキュメント管理の理想と現実
kazuhe
1
280
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
1
490
AIコーディングの最前線 〜活用のコツと課題〜
pharma_x_tech
4
2.8k
AWS全冠芸人が見た世界 ~資格取得より大切なこと~
masakiokuda
5
6.5k
営業向け誰でも話せるOCIセールストーク
oracle4engineer
PRO
2
130
Building App Extensions equivalents on Android (maybe?)
atsushieno
1
130
Linuxのパッケージ管理とアップデート基礎知識
go_nishimoto
0
690
AIエージェント開発手法と業務導入のプラクティス
ykosaka
9
2.5k
ここはMCPの夜明けまえ
nwiizo
32
12k
AIでめっちゃ便利になったけど、結局みんなで学ぶよねっていう話
kakehashi
PRO
1
460
Featured
See All Featured
KATA
mclloyd
29
14k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.7k
It's Worth the Effort
3n
184
28k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
Writing Fast Ruby
sferik
628
61k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
Being A Developer After 40
akosma
91
590k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.2k
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ができる人を増やす必要がある