Skip to main content

Monolith Vs MicroService

Monolith​

Definition: Single massive system with a single codebase.

Advantages:

  • Easy development (centralized codebase).
  • Easy testing.
  • Easy deployment (single executable file).
  • Simple debugging.
  • Good performance (can execute functions that may need multiple APIs in microservices).

Disadvantages:

  • Slower development speed.
  • Limited scalability.
  • Lower reliability (errors in one module affect the whole application).
  • Limited tech flexibility (any change in framework or language affects the entire app).
  • Deployment inefficiency (small changes require full redeployment).

Microservices​

Definition: Collection of small, self-contained modules based on business functionalities.

Advantages:

  • Agility (small teams that can deploy frequently).
  • Flexible scaling.
  • Continuous deployment.
  • Highly maintainable and testable.
  • Independently deployable.
  • Technology flexibility.
  • High reliability.

Disadvantages:

  • Complex management (multiple servers, teams).
  • Higher infrastructure costs.
  • Organizational overhead (communication and collaboration needs).
  • Debugging challenges.
  • Lack of standardization.
  • Limited ownership of entire systems.

Strangler Fig Pattern​

Purpose: Incrementally migrate functionality to new services with easy rollback if needed.

Common Setup: Reverse proxy/API gateway to handle routing with minimal impact on the existing system.

Steps:

  1. Identify parts of the existing system to migrate.
  2. Implement this functionality in a new microservice.
  3. Consider a "parallel run" to provide more functionality to the system.

Disadvantage: Requires interception/diversion of calls.

Branch by Abstraction Pattern​

Purpose: Incremental code improvement; allows old and new code to coexist in the same version with minimal disruption.

Phases:

  1. Build an abstraction layer for functionality to be replaced.
  2. Apply the abstraction in the existing module.
  3. Develop new functionality in a new service (initially idle without functional flow).
  4. Create a service provider or wrapper to connect the new service using the abstraction.
  5. Redirect data flow through the new service.
  6. Remove the abstraction once stable.

Remote Procedure Call (RPC)​

Purpose: Enables programs on different machines to call functions remotely as if they were local.

gRPC:

  • Opensource RPC framework built on HTTP/2 and Protocol Buffers (protobuf) as IDL (Interface Definition Language).
  • Uses HTTP/2 for efficient, concurrent data streaming with multiple messages over a single connection.
  • gRPC is ideal for microservice communication, not typically for frontendbackend as it relies on lowerlevel network access.

Webhooks​

Definition: A mechanism for apps to communicate via HTTP POST requests when specific events occur.

3Step Process:

  1. Setup: Receiver provides a unique URL for data reception.
  2. Event Occurrence: Triggered by specific changes.
  3. Execution: HTTP POST request sent to the webhook URL.

Examples:

  • CI/CD systems automatically triggering builds or deployments when code changes.
  • Payment processing systems updating order status and triggering actions.
  • Sending automated reminders based on specific actions.