API Design & Communication

Learn the fundamental patterns for designing robust APIs and communication strategies between services in distributed systems.

Quick Reference

REST Best Practices

  • Use nouns for resources (/users, not /getUsers)
  • Leverage HTTP methods (GET, POST, PUT, DELETE)
  • Return appropriate status codes (200, 201, 400, 404)
  • Version your APIs (/v1/users)
  • Use query parameters for filtering/pagination

Synchronous vs Asynchronous

  • Synchronous: User authentication, product details, payment processing
  • Asynchronous: Order fulfillment, notifications, report generation
  • Consider latency requirements when choosing
  • Think about failure handling needs
  • Balance coupling vs complexity trade-offs

Messaging Service Selection

  • SQS: Work distribution, task queuing (one consumer per message)
  • SNS: Broadcasting, fan-out (multiple consumers per message)
  • EventBridge: Content-based routing, integrations
  • Kinesis: High-throughput streaming data
  • Consider order, delivery guarantees, and throughput needs

System Design Interview Tips

When discussing API design and communication patterns in your interview, focus on these key aspects:

Latency Requirements

Explain how your communication choice impacts end-to-end latency. For user-facing operations, discuss when synchronous calls are appropriate vs. when asynchronous patterns with status polling provide a better experience.

Failure Handling

Address how your design handles service failures. Explain retry strategies, circuit breakers, and dead-letter queues for different communication patterns, and how they contribute to system reliability.

Scaling Considerations

Discuss how your communication patterns support independent scaling of services. Explain why message queues enable independent scaling of producers and consumers, and how this impacts overall system architecture.

API Evolution

Demonstrate awareness of API versioning strategies and backward compatibility. Explain how your design supports adding new features while maintaining compatibility with existing clients.