Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
370
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
SwiftTestingによる_モダンなiOSテスト手法とBDD.pdf
coconala_engineer
0
250
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
740
SIEMを利活用した信頼性向上プロセスと実践
coconala_engineer
0
42
Cursorを使って 新機能開発してみて 感じたこと
coconala_engineer
0
150
社内にAIレビューツール導入してみた
coconala_engineer
0
150
犯人はE2Eテスト? 並列実行で開発チームを救え!
coconala_engineer
0
63
サービスを止めるな! DDoS攻撃へのスマートな備えと最前線の事例
coconala_engineer
2
310
SREの次のキャリアの道しるべ 〜SREがマネジメントレイヤーに挑戦して、 気づいたこととTips〜
coconala_engineer
2
6.2k
ココナラiOSチームの生成AI利用
coconala_engineer
0
51
Other Decks in Technology
See All in Technology
なぜフロントエンド技術を追うのか?なぜカンファレンスに参加するのか?
sakito
8
1.8k
今すぐGoogle Antigravityを触りましょう
rfdnxbro
0
250
ECMAScript仕様の最新動向: プロセスの変化と仕様のトレンド
uhyo
1
290
Symfony AI in Action
el_stoffel
2
300
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
15k
AI時代のインシデント対応 〜時代を切り抜ける、組織アーキテクチャ〜
jacopen
4
180
Capture Checking / Separation Checking 入門
tanishiking
0
110
"'TSのAPI型安全”の対価は誰が払う?不公平なスキーマ駆動に終止符を打つハイブリッド戦略
hal_spidernight
0
210
MCP・A2A概要 〜Google Cloudで構築するなら〜
shukob
0
110
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
970
Design System Documentation Tooling 2025
takanorip
1
820
プラットフォームエンジニアリングとは何であり、なぜプラットフォームエンジニアリングなのか
doublemarket
1
500
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
5.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Designing Experiences People Love
moore
142
24k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
GitHub's CSS Performance
jonrohan
1032
470k
A Tale of Four Properties
chriscoyier
162
23k
For a Future-Friendly Web
brad_frost
180
10k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.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ができる人を増やす必要がある