14 hours


Course Code: 
Outline Status: 
14 hours
  • An understanding of enterprise application development concepts.

The workshop will be structured into three main topics:

The first topic is about architecture and we will cover some of the common architectures such as Onion, Hexagonal, and clean
architecture and why they were invented and what is the common principle behind all of them.
Then talking about modularity and what is the criteria in which we can achieve the modularity.
Then talking about monolith and modular monolith. The attendees will learn how to break down a monolithic solution into smaller, autonomous modules, apply CQRS to design scalable and maintainable systems, and deepen their understanding of Domain-Driven Design (DDD).

The Second part will focus on what is micorservices architecture, why do we need it? When to apply it and how. Assess the team readiness and willingness, and measure your progress and react accordingly to different situations. The team will learn how to apply microservics in a green field project and brown field project as well as how to migrate from one to another

The third part will focus on the topics of the communication styles, common patterns and the tradoffs of each solution. In between there will be workshops of a system design problem. The attendees will learn how to design a distributed system and what you should consider when choosing a pattern over the other. Then we will go in depth in some of these patterns and practices for event-driven approaches, asynchronous integration, messaging, observability, testing, deployment, containerization, and orchestration. At the end we will be go though containerization and orchistration, learning docke rand kuberertes and having a workshop to apply what we will learn about docker and k8s including its architecture, main resources, and deployment of services into a k8s cluster.
By the end of the workshop, the attendees will have a comprehensive understanding of different architecture styles including monolith, modular monolith, and microservices. As well as Domain-Driven Design, building distributed applications, and container orchestration using Kubernetes.

Course Outline: 

● Application architecture - N-Layer,onion, hexagonal, and Clean architecture
● Understand diff types of the monolith
● Monolith vs Microservices
● Understand how to design the modules using vertical slices
● How to communicate and integrate the autonomous modules
● Event-driven architecture and asynchronous event processing
● Dealing with transactional patterns and message delivery guarantees
● DDD (Domain Driven Design) - Basics (Entities, Value Objects)
● Understand when to use microservices
● Service discovery and registration
● API gateway and reverse proxy
● Communication between services
● Security: Aouth2, JWT, symmetric, Asymmetric keys
● Dealing with distributed transactions, Saga, unit/integration/contract testing
● Making use of observability principles to monitor the services and trace requests
● Containerization using Docker
● Docker compose to run multiple containers
● Understand Kubernetes architecture and its main resources
● k8s deployment resources (Pods, RC, RS, Deployment)
● K8s Services & Ingress
● Configs and secrets
● Volumes (PV, PVC)
● Horizontal scaling (HPA)

Overview in Category: