Architectural-Styles

Architectural styles define the framework for software structure and behaviour. These styles guide how components interact, communicate, and are deployed, directly impacting scalability, performance, and maintainability.

Goal

The goal is to select an architectural style that aligns with the project's requirements, enhances the team's ability to deliver features rapidly and reliably, and supports scalability and maintenance.

Context

Different architectural styles have different trade-offs and implications for system performance, scalability, and maintainability. By understanding the available architectural styles, teams can make informed decisions that align with their project's needs and objectives.

Styles

StyleDescriptionBenefitsConsiderations
Monolithic ArchitectureA single, unified code base in which components are interconnected and dependent, simplifying deployment but potentially complicating scalability.Easier to develop and testCan cause a blocker due to shared code and shared path to production.
Layered ArchitectureDivides the software into layers, each with a specific responsibility, promoting reusability and maintainability.Clear separation of concernsCan lead to tight coupling between layers.
Modular Architectureorganises the system into modules, each with its own functionality, promoting reusability and maintainability.Easier to maintain and scaleCan lead to complex dependency management.
Microservices ArchitectureDivides functionality into independent, loosely coupled services, enhancing scalability and enabling continuous deployment and integration.Promotes flexibility, fault isolation, and independent scalingIntroduces complexity and operational overhead.

Inputs

ArtifactDescription
User StoriesDetailed descriptions of the functionality, performance criteria, and interfaces needed for each component.

Outputs

ArtifactDescriptionBenefits
Architectural Decision RecordsDocuments that capture the important architectural decisions made during the development process.Provides a record of the project's architectural history and rationale.

Anti-patterns

  • Over-Engineering: Introducing unnecessary complexity by adopting an architectural style that exceeds the project's current needs.
  • Premature Optimisation: Optimising aspects of the architecture before understanding the actual performance bottlenecks.
  • Technology Bias: Selecting an architectural style based on personal preference rather than project requirements and objectives.

Was this page helpful?

Previous
Designing the System
© ZeroBlockers, 2024. All rights reserved.