Architecture
Entity Component System
Entity component system is a software architectural pattern mostly used in video game development for the representation of game world objects. An ECS comprises entities composed from components of data, with systems which operate on entities' components.
Domain-Drive Design
Domain-driven design is about designing fotware based on models of the underlying domain.
DDD deals with large domains using Bounded Contexts and explicit relationship between them. DDD recognizes that complete unification of models acrross organization isn't always feasible so instead Bounded Contexts allow us to divide large system into smaller sub-systems where each sub-system can have unrelated concepts as well as shared concepts where mapping between them needs to be made explicit.
-
Domain-Driven Design: Tackling Complexity in the Heart of Software (book) by Eric Evans - the OG DDD blue-cover book.
-
GETTING STARTED WITH DDD WHEN SURROUNDED BY LEGACY SYSTEMS (pdf) by Eric Evans
Event Driven Architecture
- Event Driven Architecture — 5 Pitfalls to Avoid
- The different types of events in event-driven systems
Hexagonal Architecture
Hexagonal architecture is an architectural pattern used in software design. It aims at creating loosely coupled application components that can be easily connected to their software environment by means of ports and adapters. This makes components exchangeable at any level and facilitates test automation.
C4 model
C4 Model for visualising software architecture.
- Context - the highest level view of a software system, a starting point showing the system in the context of the world
- Container - the applications and data stores that make up the software system
- Component - a grouping of related functionality encapsulated behind a well-defined interface within a Container.
- Code - the implementation details of a Component, as shown in UML class diagrams, entity relationship diagrams, etc. Code diagrams are optional and typically auto-generated by development tooling.
Resources
- Entity Component System FAQ - Frequently asked questions about Entity Component Systems
- Pattern: Transactional outbox
- A pattern language for microservices
- 12 Factor App Revisited
- No architecture is better than bad architecture
- Ports & Adapters Architecture
- The Distributed Computing Manifesto
- Demystifying software architecture patterns
- 10 Design Patterns Explained in 10 Minutes (video)
- Event Sourcing #architecture #event-driven
- Command Query Responsibility Segregation (CQRS)
- Real-time Messaging #messaging #system-design
- What we talk about when we talk about System Design
- Data-Oriented Design
- A Distributed Systems Reading List
- A Distributed Systems Reading List (different than the previous link)
- System Design Resources