001_Application Architecture - ZHAW-PM4-Compass/compass GitHub Wiki

Application Architecture

Status

Decided

Context

The project will be a web application. The architecture options considered therefore include a monolith, layered architecture, and microservices.

  • Monolith: One deployment with one code base and data base
    • Pro: Easy to manage, simplicity, re-usage of code
    • Con: Scalability, code bottleneck, flexibility
  • Layered Architecture:
    • Pro: Separation of concerns, flexibility and scalability, ease of deployment
    • Con: Performance overhead, increased complexity, duplication
  • Microservices:
    • Pro: Flexibility, independence, variance of technologies
    • Con: Complexity, operative overhead, challenges with network

Decision

Opt for a layered architecture with two applications communicating over REST interfaces, balancing complexity and modularity. Seperating frontend and backend.

Consequences

  • Enables focused development on separate layers, improving maintainability.
  • REST interface facilitates future expansion or integration with other services.
⚠️ **GitHub.com Fallback** ⚠️