In this course, participants will learn about the pitfalls of misapplying an architecture style and applying it to the wrong problem. We’ll also cover topics like Microservices, CQRS, Hexagonal Architecture, Event Sourcing, System stability, Development quality, and more.
Target audience: Architects, Team Leads, Senior Developers
• Architecture and Architects
o What is “architecture”?
o What is good architecture?
o Who is a good architect?
o Architectural drivers
• Domain-Driven Design
o Why use DDD?
o How to discover a Bounded Context?
• System Architecture
o Modular Monolith
o How to make a choice?
o A path from Monolith to Microservices
• Documenting your Architecture
o Sharing main decisions
o Visualizing architecture
- Synchronous and Asynchronous communication
- Commands vs Events
- Big and Small Events
- Message Naming
- Event Choreography and Orchestration
- Message Concurrency
- Message Processing Order
- Dealing with Errors
- Idempotent Consumers
- Two-phase Commit for sending Messages?
- Coding your Architecture
- Project structure
- Applying Hexagonal Architecture principles
- Package structure
- Code quality automation
- Tactical Domain-Driven Design
- Designing Aggregates and Value Objects
- Ensuring Invariants in Domain Model
- Command Query Responsibility Segregation
- Event Sourcing: advantages and challenges
- REST API
- General principles
- Task-based REST API
- Dealing with Errors: Problem Details
- Stability of your System
- Common failures and stability antipatterns
- Stability patterns
- Securing your System
- Monitoring your System
- Aspects of monitoring
- Metrics to expose
Format: 20% workshop / 80% lecture
- Mid, senior developers and architects
- Good experience in mainstream languages such as Java, C # etc (examples to be presented in Java and Spring Boot)
PS: BRING YOU OWN COMPUTER