Search

Search IconIcon to open search

Microservices (Architecture)

Last updatedUpdated: by Simon Späti · 3 min read

The core concepts of microservice architecture are:

  • Definition: Microservices are an architectural style where applications are structured as a collection of loosely coupled, independently deployable services.
  • Key Architectural Layers:
    • Presentation Layer: Handles user interface and client interactions
    • Business Process Layer: Contains core business logic and workflows
    • Data Access Layer: Manages data storage and retrieval
  • Communication Patterns:

# Architecture Overviews

Helpful images from Microservices Udemy Course.

# Monolithic Architecture

Traditional approach where all application components are tightly coupled in a single deployable unit. All layers share the same database and deployment lifecycle.

graph TB
    subgraph "Monolithic Architecture"
        M[Single Application
- Presentation Layer
- Business Logic
- Data Access Layer] DB1[(Database)] M --> DB1 end

# Service-Oriented Architecture (SOA)

Introduces service separation but relies on a centralized Enterprise Service Bus for communication, creating a potential bottleneck and single point of failure.

graph TB
    subgraph "Service-Oriented Architecture (SOA)"
        ESB[Enterprise Service Bus]
        S1[Service A] --> ESB
        S2[Service B] --> ESB
        S3[Service C] --> ESB
        ESB --> S4[Service D]
        ESB --> S5[Service E]
    end
  

# Microservices Architecture

Fully distributed approach where each service owns its data and communicates through well-defined APIs. The API Gateway provides a single entry point while services communicate directly with each other when needed.

graph TB
    subgraph "Microservices Architecture"
        API[API Gateway]
        
        MS1[User Service]
        MS2[Order Service]
        MS3[Payment Service]
        MS4[Inventory Service]
        MS5[Notification Service]
        
        DB2[(User DB)]
        DB3[(Order DB)]
        DB4[(Payment DB)]
        DB5[(Inventory DB)]
        
        API --> MS1
        API --> MS2
        API --> MS3
        API --> MS4
        API --> MS5
        
        MS1 --> DB2
        MS2 --> DB3
        MS3 --> DB4
        MS4 --> DB5
        
        MS2 -.-> MS1
        MS2 -.-> MS3
        MS2 -.-> MS4
        MS3 -.-> MS5
    end
  

# Other

Microservices Architectu

# Design Considerations

  • Service Boundaries:
    • Each service should have a clear, bounded context
    • Services should be sized appropriately - neither too large (Monolithic) nor too small (nano-services)
    • Data domains often define natural service boundaries
  • Technical Considerations:
    • Increased network latency due to service chains
    • Trade-offs between ACID Transactions and eventual consistency
    • Need for robust service discovery and load balancing
    • Importance of fault tolerance and circuit breaking

# Implementation Patterns

# Service Types

  • Edge Services: Handle external-facing concerns
  • Business Process Services: Implement core domain logic
  • Data Services: Manage data access and storage
  • Gateway Services: Route and aggregate service calls

# Technology Stack Diversity

  • Backend: Java, C#, Node.js
  • Frontend: JavaScript frameworks
  • Data Science: Python
  • Each service can use the most appropriate technology for its specific needs

# DevOps & Deployment

DevOps can influence microservice architecture:

  • Continuous Delivery Pipeline (CI/CD):
    1. Business Input drives development
    2. Code development and review
    3. Compilation and testing
    4. Unit test execution
    5. Defect reporting and tracking
  • Operational Considerations:
    • Logging and tracing across services
    • Monitoring and alerting
    • Service discovery
    • Configuration management
    • Security and access control

# Best Practices

  • Keep services autonomous and loosely coupled
  • Implement robust error handling and fallback mechanisms
  • Use asynchronous communication where possible
  • Maintain comprehensive service documentation
  • Implement proper versioning strategies
  • Consider implementing circuit breakers for fault tolerance

# Trade-offs and Challenges

  • Increased operational complexity
  • Network latency and reliability concerns
  • Data consistency across services
  • Service discovery and routing
  • Monitoring and debugging distributed systems
  • Team organization and communication

# Further Reading


Origin: Microservices Udemy Course
References: SOA
Created