Course Outline
Part I: Domain Modelling and Design
-
Principles of Domain Driven Design
-
Utilizing event storming for domain discovery
-
Bounded contexts and context mapping strategies
-
Data ownership and the database-per-service principle
Part II: Contracts and Communication
-
Contract design principles
-
API versioning and evolution strategies
-
Synchronous communication patterns
-
Asynchronous communication patterns
Part III: Building Microservices
-
Implementing clean architecture structures
-
Dependency management and security considerations
-
Introduction to Dapr (Distributed Application Runtime)
-
Patterns for service-to-service communication
-
State management techniques
-
Publish/subscribe messaging
-
Managing secrets and configurations
-
Leveraging built-in telemetry for observability
Part IV: Testing Strategies
-
Heartbeat tests
-
End-to-end testing methodologies
-
Service-level testing approaches
Part V: Infrastructure
-
Infrastructure as Code (using Bicep)
-
Containers and orchestration (Kubernetes / Azure Container Apps)
-
Infrastructure pipelines and deployment processes
-
Storage and database service integration
Part VI: Deployment
-
Setting up CI/CD pipelines
-
Implementing deployment rings
-
Utilizing feature flags
Part VII: Observability
-
Centralised logging
-
Distributed tracing
-
Metrics collection and dashboard creation
-
Monitoring and alerting systems
Part VIII: Resilience and Disaster Recovery
-
Configuring health probes and readiness checks
-
Managing compute resource failures
-
Strategies for infrastructure failure
-
Service-level failure handling
Requirements
- Proficiency in at least one backend programming language (such as C#, Java, Python, or similar)
- A fundamental understanding of REST APIs and HTTP protocols
- Experience with Git and standard version control workflows
- Basic familiarity with a cloud platform (e.g., Azure, AWS, or GCP), including app deployment or portal navigation
Target Audience
-
Development teams in the process of migrating from monolithic architectures to microservices
-
Software architects responsible for designing distributed systems
-
Teams already utilizing microservices seeking to enhance their design, scalability, and reliability
-
Technical professionals seeking a practical, hands-on approach to cloud-native architecture
Testimonials (4)
The instructor was knowledgeable about the course topic and also other related topics, and was able to answer our questions, or even make a note of questions he didn't immediately know the answer to and got back to use later.
Abe Sabbagh - Enbridge
Course - Advanced RabbitMQ - 2 Days
Possibility to perform independent exercises in the training environment.
Tomasz - PKO Zycie Towarzystwo Ubezpieczen S.A.
Course - Kafka for Administrators
the technical preparation of teachers
Giorgio - Asystel-BDF S.p.A.
Course - Creating a Service Mesh with Istio and Kubernetes
Very practical examples. The trainer has tried to keep a pace where everybody is able to go with even though the group was quite inhomogeneous regarding the knowhow. He has provided a lot of support to basically everybody who asked for it :)