Architecture
Role
- understanding and managing Architectural Drivers: requirements, quality attributes, constraints, and principles
- designing software
- includes technology selection
- identifying and mitigating technical risks
- leadership
- quality assurance
vs Design
@simon-brown
In the real world, the distinction between architecture and design isn’t clear-cut, but this definition does provide us with a basis to think about what might be significant (i.e. “architectural”) in our own software systems. For example, this could include:
- The overall shape of the software system (e.g. client-server, web-based, native mobile, distributed, microservices, asynchronous vs synchronous, etc).
- The structure of the code inside the various parts of the software system (e.g. whether the code is structured as components, layers, features, ports and adapters, etc). What is “software architecture”? 14
- The choice of technologies (i.e. programming language, deployment platform, etc).
- The choice of frameworks (e.g. web MVC framework, persistence/ORM framework, etc).
- The choice of design approach/patterns (e.g. the approach to performance, scalability, availability, etc).
Resources
- https://nikolaschou.medium.com/open-sourcing-software-architecture-models-17b0149ba638 introduces https://www.softwarearchitecturemodels.com
- https://blog.bitloops.com/over-engineered-todo-app-to-learn-ddd-hexagonal-architecture-cqrs-and-event-sourcing-74b53a6210fc
References
Children
- Architecture Decision Records
- Backend for Frontend
- Bce
- Cell
- Choreography
- Clean Architecture
- Command Query Responsibility Segregation
- Command Sourcing
- DCI Architecture
- Dependency Inversion
- EBI Architecture
- Event Driven Architecture
- Event Streaming
- Hexagon Architecture
- Inversion of Control
- Lean
- Microservice
- Monolith
- Mvc
- Onion
- Orchestration
- Pool Architecture
- Relay Architecture
- Serverless
- Togaf
- Vertical Slice
Backlinks