Application Architecture Training
Level
IntermediateDuration
16h / 2 daysDate
Individually arrangedPrice
Individually arrangedApplication Architecture Training
Do you want to build microservices? Start with good architecture! Make sure your application is ready, that you know how to separate independent modules and communicate asynchronously, with events. A new day, a new framework. That can be interesting, but it’s not the key in programming. It’s good to know about new technologies, but much more important are the architectural fundamentals, which we will present here. Good architecture will make updating a library or replacing a framework with a shiny new one easier. On the other hand, without good architecture a new framework/library might help, but very likely will just obfuscate your code and introduce yet another workaround for a problem.
Who is this training for?
Those looking to grow towards being software architects
Those reworking an old project
Those starting a new project
What You Will Learn
- You’ll understand how to build web applications that are easy to maintain
- You’ll see what CQRS, DDD and clean architecture are all about
- You’ll learn how to postpone implementation decisions over time
- You’ll become familiar with architecture: modular monolith
Training Program
- Sample existing code (legacy system)
- Containerization
- Java, Spring, Hibernate
- Testing using Postman
- Package access in Java
- IDE settings
- Simplifying code
- Package by Feature vs. Package by Layer (+ front-end)
- Facade – the only entry to a module
- Encapsulation
- Behavior-Driven Development (BDD)
- Future refactoring
- Command Query Responsibility Segregation (CQRS)
- Facade vs service
- CommandHandler
- QueryRepository
- Clean / Hexagonal / Onion Architecture, Ports and Adapters architecture
- Layers beyond technical ones: capabilities, operations, policies, decision support
- Dependency inversion
- Ports and adapters
- Persistence in adapters
- Using Spring only as an adapter
- Maven Modules
- Dependencies between modules
- Module vs package
- Java 9+ modules
- Monolith vs microservices
- Different JVM languages in modules
- Domain-Driven Design
- Strategic DDD
- EventStorming
- Tactical DDD
- Database entities vs domain entities
- Practical tips
- Event-based communication
- Publishing from domain and application layers
- Retries of delivery
- Handling events
- Support in Spring