Integration & APIs
API design, messaging patterns, event-driven integration, and enterprise patterns
REST API DesignRichardson Maturity Model, resource naming, HTTP verbs, status codes, HATEOAS›REST Best PracticesVersioning, pagination, filtering, idempotency, rate limiting›GraphQLSchema-first design, queries, mutations, subscriptions, N+1 and DataLoader›gRPCProtocol buffers, streaming types, interceptors, service reflection›WebSockets & SSEReal-time use cases, heartbeat, reconnection, scalability challenges›API Gateway PatternsAuth, routing, request transformation, aggregation, throttling›API SecurityOAuth 2.0 for APIs, API keys, mutual TLS, scopes & audiences›Message QueuesRabbitMQ, AWS SQS/SNS; point-to-point, fan-out, delivery guarantees, DLQs›Event Streaming (Kafka)Topics, partitions, consumer groups, offsets, log compaction, Kinesis, Pulsar›Pub/Sub PatternTopics, subscriptions, fan-out, at-least-once vs exactly-once delivery›Event-Driven ArchitectureDomain events, choreography vs orchestration, schema versioning›Saga PatternDistributed transactions; choreography-based vs orchestration-based sagas›Outbox PatternReliable event publishing, transactional outbox, CDC with Debezium›Enterprise Integration (EIP)Message router, transformer, aggregator, splitter, content-based routing›Webhook PatternsDelivery guarantees, retry logic, HMAC signature verification, idempotency›Service Mesh IntegrationTraffic management, circuit breaking, retry policies via Istio/Envoy›Contract TestingPact, consumer-driven contracts, mock services, integration test strategies›