Architecture is a structure, a way to distribute your application components in various groups. There is not a single way to organize your projects because it could depend on several aspects like project state, team size, time constraints, etc
An architectural pattern is a general, reusable resolution to a commonly occurring problem in software architecture within a given context. Pattern is an implementation that solves a particular problem. A principle is an abstraction, a guide to design.
There is no single way to structure a project, and each architecture has its own characteristics. Even though you do not define an architecture, following the next principles will lead you to maintain a well-organized code.
- DIP
- SOLID
- GRASP
- CQR
- CQRS
- Hexagonal Architecture
- Layered Architecture
- Modular Monolithic Architecture
- Microservice Architecture
- Event-driven Architecture
- DDD
- Patterns
- Proxy server
- Anti-patterns
- Stability
- Performance
- Durability
- Scalability
- Flexibility
- Encapsulation
- Testability
- Separation of Concerns
- Reduced Complexity (DI)
- Concentrate on Domain/Business
- Independence from framework, DB, UI, external service