Back to Blog
2025-04-20Abyan Dimas

Microservices Architecture: Breaking the Monolith

Distributed Systems

In the beginning, there was the Monolith. One giant codebase, one database, one deployment. It was simple, until it wasn't.

As teams grow, the monolith becomes a bottleneck. Enter Microservices: breaking the application into small, independent services.

The Core Principles

  1. Single Responsibility: Each service does one thing well (e.g., "User Service", "Payment Service", "Email Service").
  2. Decentralized Data: Each service owns its own database. No sharing tables!
  3. Independent Deployment: You can deploy the Payment Service without restarting the User Service.

Communication Patterns

Services need to talk to each other. There are two main ways:

1. Synchronous (REST/gRPC)

Service A calls Service B and waits for an answer.

// Service A (Order Service)
const user = await axios.get('http://user-service/users/123');
  • Pros: Simple to understand.
  • Cons: Tight coupling. If Service B is down, Service A might fail.

2. Asynchronous (Message Queues)

Service A emits an event ("Order Created") to a queue (RabbitMQ, Kafka). Service B listens and reacts.

// Service A
channel.publish('orders', 'order_created', { id: 123 });

// Service B (Email Service)
channel.consume('orders', (msg) => {
  sendEmail(msg.userId);
});
  • Pros: Decoupled. Service A doesn't care if Service B is online immediately.
  • Cons: Complexity. How do you trace a request across services?

The Challenges

Microservices are not a silver bullet. They introduce Distributed Complexity.

  • Network Latency: Calls are no longer in-memory function calls.
  • Data Consistency: How do you do transactions across two databases? (Hint: Sagas).
  • Observability: You need structured logging and tracing (Jaeger, Zipkin) to debug.

Conclusion

Don't start with microservices. Start with a modular monolith. Only break it apart when the organizational pain of coordination outweighs the technical pain of distributed systems.

Share this article

Read Next