From argos
REST/GraphQL/gRPC/AsyncAPI/WebSocket/SSE paradigma seçim disipline. Public vs internal, consumer profile (browser/mobile/partner/service), hybrid mimari (BFF GraphQL + gRPC backend; Apollo Federation; grpc-gateway; Connect), versioning + tooling karşılaştırma. api-contract-review'dan farkı: review değil paradigma karar.
npx claudepluginhub resultakak/argos --plugin argosThis skill uses the workspace's default tool permissions.
`agents/shared/severity-rubric.md` ve `agents/shared/escalation-matrix.md`
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
agents/shared/severity-rubric.md ve agents/shared/escalation-matrix.md
default-load sayılır (agents/coordination.md §11). Bu skill'in çıktısı
Critical / High / Medium / Low + kanıt formatında olmak zorunda — spekülatif
Critical yasak. Sahiplik dışı bulgu ilgili agent'a delege; karar yetkisi eşiği
aşılırsa kullanıcı onayı zorunlu.
| Soru | Cevap |
|---|---|
| Consumer? | browser / mobile / partner / internal service |
| Volume? | RPS, concurrent connection |
| Latency budget? | p50, p99 |
| Bandwidth constraint? | mobile cellular, IoT |
| Streaming? | hayır / server→client / client→server / bidirectional |
| Caching? | edge CDN OK / personalized only |
| Schema evolution sıklığı? | weekly / monthly / quarterly |
| Public surface? | partner SDK / 3rd-party |
| Tooling maturity gerek? | full ecosystem / niche OK |
→ REST + OpenAPI 3 default
/v1/, /v2/)GraphQL public alternative:
→ gRPC + Protobuf default
REST internal alternative:
→ GraphQL (over-fetch eliminate) veya REST (basitlik)
Hybrid:
→ AsyncAPI + Kafka/NATS/RabbitMQ/SQS
/data-contracts skill bağıWebHook fallback:
→ WebSocket
/websocket-debug skill→ SSE veya WebSocket
BFF:
[mobile] [web] → [GraphQL BFF] → [gRPC service mesh]
[partner] → [REST API] → [gRPC service mesh]
Apollo Federation:
[GraphQL gateway] ── compose ──┬─ Users subgraph (Go gRPC backend)
├─ Orders subgraph (Python REST backend)
└─ Inventory subgraph (Node gRPC)
grpc-gateway (proto annotation → REST mirror):
service OrderService {
rpc GetOrder(GetOrderRequest) returns (Order) {
option (google.api.http) = { get: "/v1/orders/{order_id}" };
}
}
Connect (Buf): tek handler — gRPC + Connect + browser; bundle ~10KB.
/architecture-decision-writer delege.
# ADR-00X: Adopt GraphQL BFF + gRPC internal
## Context
Mobile + web 4 platform; ortalama 8 downstream service aggregate. Mobile
over-fetch p95 1.8MB; mobile bandwidth maliyet yüksek; client-side stitching
karışık.
## Decision
- BFF: GraphQL (Apollo Server)
- Internal: gRPC (existing)
- Public partner API: REST mevcut kalır
## Alternatives
- A. Tek REST BFF: over-fetch devam (mobile +30% data)
- B. Tek gRPC: browser native değil; grpc-web bundle +20KB; flexible
query yok
- C. Apollo Federation: ≤ 5 subgraph (henüz 2); premature
## Consequences
- (+) Mobile data -%40
- (+) Frontend velocity (single query)
- (-) GraphQL N+1 problem; DataLoader gerek
- (-) Caching kompleks; persisted queries gerek
- (-) Rate limit query-complexity-based
Yeni paradigma adoption:
Phase 1 (1 ay): Pilot 1 endpoint paralel (REST + yeni)
Phase 2 (2 ay): Top 5 endpoint migrate (shadow read)
Phase 3 (3 ay): Consumer migrate (deprecation header)
Phase 4 (3 ay): Eski paradigma sunset
Big-bang yasak.
| Paradigma | Tooling |
|---|---|
| REST | OpenAPI Generator, Swagger UI, Postman, Pact, schemathesis |
| GraphQL | Apollo Server/Studio, Hasura, urql, graphql-codegen |
| gRPC | buf, grpcurl, otelgrpc, Connect |
| AsyncAPI | AsyncAPI Studio, Schema Registry, schemathesis |
| WebSocket | k6 ws, Postman, wscat |
Her paradigma için:
| Paradigma | Versioning |
|---|---|
| REST | URL /v1/... + RFC 9745 Deprecation header |
| gRPC | proto package v1, v2; field number reserved |
| GraphQL | @deprecated directive; schema versioning yok |
| AsyncAPI | topic events.X.v1; Schema Registry compat |
/semantic-versioning bağı.
User: /api-paradigm new-svc (mobile + web + partner consumer; çoklu downstream)
Agent (system-design-architect + api-contract-guardian):
1. Use case inventory:
- Consumer: iOS, Android, web SPA, 3 partner SDK
- Volume: 800 RPS sustained
- Latency: p99 < 300ms client; p99 < 100ms internal
- Streaming: server-stream notifications (Phase 2)
- Cache: 60% read product catalog; CDN gerek
2. Decision matrix:
- Internal: gRPC (existing mesh, mTLS, polyglot, perf)
- Mobile + web: GraphQL BFF (over-fetch -%40 mobile)
- Partner: REST (existing SDK, ekosistem)
- Notifications: SSE (tek yön, HTTP-friendly, reconnect)
- Events: AsyncAPI Kafka (existing pipeline)
3. ADR-0099 yazıldı (alternatif: tek REST BFF, tek gRPC, Federation).
4. Migration plan:
- Phase 1 (1 ay): GraphQL BFF pilot 5 endpoint
- Phase 2 (2 ay): Apollo persisted queries + DataLoader
- Phase 3 (3 ay): SSE notifications
- REST partner API as-is (sustaining)
5. Tooling: Apollo Server v4, graphql-codegen TS types, persisted query DB,
query complexity rate-limiter.
6. Versioning:
- GraphQL: `@deprecated` directive
- REST partner: URL /v1, /v2 (`/semantic-versioning`)
- gRPC internal: proto package v1 (`/data-contracts`)
# API Paradigm Selection: <service-or-system>
## Use case inventory
- Consumer profile + volume + latency + streaming + cache
## Decision per use case
- Public partner: REST
- Internal: gRPC
- BFF: GraphQL veya REST
- Async: AsyncAPI
- Real-time: WebSocket / SSE
## Hybrid pattern
- BFF / Federation / gateway / Connect
## ADR
- Decision + alternatives + consequences
## Migration plan (varsa)
- Phase 1-N
## Tooling
## Versioning per paradigma
## Action Items
| P | Aksiyon | Sahip | Bitiş |