- 0 kr
Watch this product and we will notify you once it is back in stock.
How do you avoid making your project a big ball of mud? How do you balance a wide range of design concerns and constraints? How do you map customer requirements to working software? This course provides you with the means and methods to face these challenges.
Developers and architects who design systems or assume the role of the architect in a project
A couple of years of development. Preferably in an object oriented language (Java, C#, C++). The course, however, is language and platform independent.
What you will learn
The Role of The Architect
- Why design matters
- The architect's place in the team.
- Why architecture is hard
- Build and deployment
- Continuous Integration and Deployment
- Feature flags
- Securing our build and dependencies
- Afferent coupling
- Efferent coupling
- Cyclomatic complexity
Domain Driven Design (DDD)
- Bounded contexts
- Ubiquitous language
- Entity and value objects
- Context mapping
- Introduction to running Event Storming sessions to explore, discover and model a domain.
- CAP theorem
- ORM mapping
- NoSQL databases
- Using events as the source of truth
- Possibilities with Event Sourcing
- Implementing Event Sourcing
Reads vs Writes
- Separating reads from writes
- Normalized vs denormalized data
- Implementing the read and write side
- Command-Query Separation (CQS)
- Command Query Responsibility Segregation (CQRS)
- CQRS , vs Event Sourcing vs DDD
Behavior Driven Development
- Introduction to BDD
- Writing tests closer to the domain
- Writing BDD tests with command and events
- Introduction on how to model our design using the event modeling technique.
- Outbox pattern
- Exact once delivery
- Guaranteed ordering
- Data truth
- Circuit breakers
- Resilience patterns
- Chaos Engineering
Monolith and Micro Services
- Why do we fail with the monolith?
- How can we improve it?
- Micro frontends
- Slicing our architecture
- Event Aggregator pattern
Teacher: Tore Nestenius