Software architects have no clean, easy decisions: everything is a terrible tradeoff. Architecture has lots of difficult problems, which this platform-agnostic class highlights by investigating what makes architecture so hard. This hands-on, platform-agnostic architecture class goes beyond the fundamentals of software architecture and focuses on the really hard problems. This class focuses primarily on aspects of distributed architectures and on areas surrounding modularity versus granularity, the challenges of event-driven architectures (including difficult error handling issues), distributed architecture patterns and how to decouple services to achieve proper granularity. Architecture is full of hard parts; by attending this workshop you can gain the insights and techniques to make it just a little softer.
Agenda
- Discerning Coupling in software architecture
- Modularity & Granularity for microservices
- Data integrators and disintegrators
- Choosing appropriate databases
- Data updates and ownership
- Data access
- Communication: synchronous or asynchronous?
- Consistency: Atomic or eventual?
- Coordination: orchestration or choreography?
- Transactional sagas
- Build your own trade-off analysis