Domain Driven Design & Microservices for Architects
- Descrição
- Currículo
- FAQ
- Revisões
PS: Focus is on designing Microservices not coding
-
No specific Microservices framework in use
-
All sample code is in plain JAVA to demonstrate/clarify understanding of DDD patterns, etc.
-
Models are developed in UML – using the PlantUML tool
-
PostgreSQL/MongDB/RabbitMQ/Kafka – free instances created on the cloud for demos & walkthroughs
PLEASE Do NOT join the course if you are looking for tutorials on Microservices Coding or specific framework!!!
What is this course about?
Microservices is a new way of building software in which an application is composed of an independent set of services. The biggest benefit of Microservices is that it enables an organization to transform at a very rapid pace. This speed to market is achieved due to the independent nature of the services that make up a Microservices application. Companies like Amazon, Netflix and Etsy have proven the value of Microservices beyond doubt.
Many organizations today are looking to adopt Microservices. These organizations are investing in technologies, tools, skills and are changing their software development and delivery processes as well. But still many organizations are failing to achieve the full benefits of Microservices; in fact many organizations feel that they have created technical debt by adopting Microservices.
So why is it that some organizations have been successful in adopting Microservices while others are not. One common aspect I have observed in companies that fail to adopt Microservices is that they treat Microservices as a purely technology initiative. They do not spend time in understanding the business aspects of their Microservices applications !!!
Microservices is NOT just about technology
The key element of the Microservices architecture is that services are Independent. This independent aspect of the service is what makes it possible for Microservices to change independently of other services. If scope of the microservices is leading to inter-dependencies between services then it would lead to a need for change coordination between teams which in turn will lead to the same problems we have with Monolithic applications !!! Release cycles will be longer and there will be no benefit of the adoption of Microservices.
To ensure that these is no interdependencies between Microservices, a Microservices architect needs to understand the domain and then decide on the boundary and scope of the Microservices. This is where Domain Driven Design comes into picture. Once the Microservices business boundaries are defined the services should be built using appropriate Microservices design patterns and technologies.
Teams working on Microservices should not just look at the technical aspects of the service but MUST keep in mind that there are other considerations that play a critical part in the success of Microservices initiative. In order to
Role of a Microservices Architect
An IT professional working in the role of Microservices architect is responsible for may aspects depending on the maturity of Microservices adoption in their organization. Here are the list of activities that the architects is responsible for:
-
Evaluate the business benefits of Microservices for their specific organization
-
Build a Business case for Microservices
-
Educate the Business & IT stakeholders on pros/cons of Microservices
-
Apply Domain Driven Design to demarcate the boundaries of Microservices
-
Define the domain model for the Microservices
-
Do the technical design of Microservices
-
Guide and Mentor the Microservices teams
-
Evaluate the technologies | frameworks for the realization of Microservices
-
Build proof of concepts to show how things work
How will this course help?
This course will help developers & architects in building skills needed for successful implementation of Microservices applications. It consists of a combination of concepts, UML modelling and working code to demonstrate the implementation of Microservices. Students will learn the concepts of Domain driven design by way of common industry examples and a case study (ACME travels).
Focus is on Architecture, Design and Development of Microservices.
1. Transformation & Microservices
2. Domain Driven Design
3. Applying the DDD strategic & tactical pattern
4. Event Driven Architecture
5. Event Storming
6. Data Management
7. Messaging
8. Distributed Transactions
9. API
IMPORTANT:
Code Samples
Focus is on the Microservices design not coding.
-
All of the sample code is in plain JAVA
-
Course does NOT cover any specific framework
-
SpringBoot is used in samples for API/GraphQL section
Please check out the course preview lectures before enrolling the course.
-
Review the topics covered
-
Make sure you understand instructor’s accent
Pre-Requisites
-
Basic understanding of JAVA or any other programming language
-
Some experience with software development practices
PS:
Hand on part is optional but students are encouraged to do hands on tasks to get a better feel of the design patterns.
-
3Microservices ArchitectureVídeo Aula
Monolithic Architecture
Microservices Architecture
Realization of Microservices Architecture
-
4Business & Digital TransformationVídeo Aula
Discussion on how Business Transformation is accelerated by Microservices Architecture.
-
5A Business Perspective of MicroservicesVídeo Aula
How teams are organized for building Microservices applications
Business capabilities and Microservices
Business Benefits of Microservices
-
6A Technical Perspective of MicroservicesVídeo Aula
Discussion on pros and cons of Microservices architecture from technology perspective.
-
7Adoption of Microservices ArchitectureVídeo Aula
-
8Domain, Sub-Domain and Domain ExpertsVídeo Aula
Understanding the domain and domain models
-
9Conceptual models, Architecture and DesignVídeo Aula
Conceptual vs Architectural models
Architecture vs Design
-
10Modeling techniques & Architectural StylesVídeo Aula
Discussion on commonly used modelling techniques and Architectural styles.
Students will be introduced to Domain Driven Design in this lesson.
-
11Domain ModelsVídeo Aula
Define models and elements of domain models.
-
12Modeling techniques & Architectural StylesVídeo Aula
Enterprise | Unified domain models
Knowledge crunching exercise
-
13Why understand the Business?Vídeo Aula
Overview of the topics covered in this section.
-
14Introduction to Business Model CanvasVídeo Aula
Understand the use of business model canvas
Learn how the Business model canvas is created
Example: Uber's Business Model Canvas
-
15Exercise : ACME Travels Business Model CanvasVídeo Aula
In this exercise we will create the Business Model Canvas for Acme Travels
-
16Introduction to DDD and PatternsVídeo Aula
Overview of the topics covered in this section.
-
17Business Subdomain TypesVídeo Aula
Learn about the 3 types of sub domains
Core
Support
Generic
-
18Exercise : ACME Subdomain Type AssignmentVídeo Aula
In this exercise we will categorize ACME Travel's subdomains in the core/support/generic categories.
-
19Understanding the Business ContextVídeo Aula
Understand the meaning or Context | Business Context
-
20Business Domain LanguageVídeo Aula
Bridging the gap between Business and Technology languages. Lesson introduces students to DDD Ubiquitous Language.
-
21Strategic Pattern : Ubiquitous LanguageVídeo Aula
Discussion on characteristics of Ubiquitous Language.
-
22Exercise : Define ACME's Ubiquitous LanguageVídeo Aula
In this lesson we will develop the Ubiquitous Language terms for ACME Travels Sales subdomain.
-
23Strategic Pattern : Bounded ContextVídeo Aula
Introduction to the DDD Strategic pattern : Bounded Context
By end of this lesson students should be able to explain the Bounded Contexts.
-
24Discovering the Bounded Contexts in a DomainVídeo Aula
Students will learn techniques for discovering the Bounded Contexts in a problem space.
-
25Exercise : Identify ACME's Bounded ContextsVídeo Aula
In this exercise we will try to identify Bounded Contexts in the ACME travels business domain.
-
26Intro to DDD Integration PatternsVídeo Aula
Overview of the topics covered in this section.
-
27Managing BC Relationships using Context MapsVídeo Aula
Big Ball of Mud
Challenges with Bounded Context dependencies
Context Maps
-
28Symmetric Relationship PatternsVídeo Aula
DDD Strategic Patterns:
Separate Ways
Partnership pattern
Shared Kernel
-
29Asymmetric Relationship PatternsVídeo Aula
DDD Strategic Patterns:
Customer-Supplier pattern
Conformist pattern
Anti corruption layer pattern
-
30One to Many Relationship PatternsVídeo Aula
DDD Strategic Patterns:
Open Host Service
Published Language
-
31Exercise : Context Mapping for a BankVídeo Aula
In this exercise we will draw up the context mapping in a banking domain.
-
32Intro to DDD Tactical PatternsVídeo Aula
Overview of the topics covered in this section.
-
33Entity Object - PatternVídeo Aula
DDD Tactical Pattern : Entity pattern
-
34Value Object - PatternVídeo Aula
DDD Tactical Pattern : Value Object pattern
-
35Exercise : Identify Entity & VO in ACME Sales ModelVídeo Aula
In this exercise we will identity | design the Entity and VO in the ACME Travels sales model
-
36Hands On : Building the ACME Sales Entities & VO in JAVAVídeo Aula
Walkthrough of the JAVA code & UML for ACME Travel Sales entities and value objects
-
37Aggregate & Factory - PatternVídeo Aula
DDD Tactical Pattern : Aggregate pattern
-
38Exercise : ACME Sales Use CaseVídeo Aula
In this exercise we will design an Aggregate in the ACME Travel Sales model
-
39Hands On : UML for ACME Sales AggregatesVídeo Aula
Walkthrough of JAVA code and UML model for the Aggregate(s) in the ACME sales model
-
40Model Behavior : Anemic & Rich ModelsVídeo Aula
Discussion on Anemic models and how to address anemic models
-
41Repository Object - PatternVídeo Aula
DDD Tactical Pattern : Repository pattern
-
42Hands On : ACME model Repository in UML & JAVAVídeo Aula
Walkthrough of the JAVA code and UML model for ACME travel repository
-
43Domain Service - PatternVídeo Aula
DDD Tactical Pattern : Services patterns
-
44Application Services - PatternVídeo Aula
DDD Tactical Pattern : Application Services pattern
-
45Infrastructure Services - PatternVídeo Aula
DDD Tactical Pattern : Infrastructure Services pattern
-
46Hands On : ACME Domain Service, UML & JAVAVídeo Aula
Walkthrough of the Java code and UML for the Domain Services in ACME travel model
-
47Hands On : Application and Infrastructure Services, UML & JAVAVídeo Aula
Walkthrough of JAVA code and UML for the ACME application and infrastructure services
-
48Intro to Events in MicroservicesVídeo Aula
Overview of the topics covered in this section.
-
49Monolithic & Distributed Communication PatternsVídeo Aula
Discussion of communication patterns used in Microservices
-
50Microservices Interaction PatternsVídeo Aula
Discussion on the Microservices interaction patterns
-
51Event Driven ArchitectureVídeo Aula
Introduction to Events Driven Architecture and its importance in development of Microservices applications.
-
52Hands On : Pub Sub with AMQP/RabbitMQVídeo Aula
Walkthrough of pub-sub messaging pattern using the RabitMQ messaging broker.
-
53Domain Events - PatternVídeo Aula
Introduction to domain events
-
54Hands On : Static Class Broker PatternVídeo Aula
Implementing domain events with a static class broker framework pattern
-
55Exercise : ACME Sales Domain EventsVídeo Aula
In this exercise we will Identify the ACME travel domain events
-
56Hands On : Realization of ACME Domain EventsVídeo Aula
Walkthrough of the JAVA code and UML for the implementation of the domain events for ACME travel.
-
57Integration Events - PatternVídeo Aula
DDD Tactical Pattern : Integration Events
-
58Exercise : ACME Sales Integration EventsVídeo Aula
In this exercise we will identify the Integration Events in the ACME travel domain
-
59Hands On : Realization of ACME Integration Events (1 of 2)Vídeo Aula
Walkthrough of JAVA code and UML for the implementation of ACME
-
60Hands On : Realization of ACME Integration Events (2 of 2)Vídeo Aula
Walkthrough of JAVA code and UML for the implementation of ACME
-
61Learning Objectives : Discovering the Events in a DomainVídeo Aula
Overview of the topics covered in this section.
-
62Introduction to Event StormingVídeo Aula
Events storming is a technique used for creating shared knowledge of the domain. This lesson will introduce students to event storming.
-
63Elements of Event StormingVídeo Aula
Elements of event storming flow.
-
64Preparing for the ES WorkshopVídeo Aula
Discussion on how to prepare for an Event Storming workshop.
-
65Conducting the ES WorkshopVídeo Aula
The process followed in an Event Storming workshop.
-
66Exercise : ACME Sales ES WorkshopVídeo Aula
Simulation of Event Storming Workshop for ACME sales
-
67Introduction to Microservices Data PersistenceVídeo Aula
Overview of the topics covered in this section.
-
68Monolithic Apps - Shared Persistence StorageVídeo Aula
Challenges with use of Shared Database in monolithic applications
-
69Service Oriented Architecture (SOA)Vídeo Aula
Introduction to SOA and how it addressed some of the challenges of shared database in Monoliths
-
70Separate Database patternVídeo Aula
Microservices have independent persistent layer. This lesson discusses the pros of separate database pattern for microservices.
-
71Brownfield Microservices : Database patterns | optionsVídeo Aula
Option for persistence layer for brownfield applications
-
72Shared Database PatternVídeo Aula
Options for breaking a shared database to separate databases
-
73Shared Database : Challenges & SolutionsVídeo Aula
Introduction to CQRS, Event Sources and SAGA patterns
-
74Need for more Data PatternsVídeo Aula
Overview of the topics covered in this section.
-
75Commands Query Separation (CQS)Vídeo Aula
Command Query Separation (CQS) Pattern
-
76Hands On : PostgreSQL Database for backendVídeo Aula
Setup PostgreSQL database for testing
Walkthrough of JDBC Repo implementation
-
77Realization of Commands & QueriesVídeo Aula
Considerations for CQ pattern
Read vs Write performance
Introduction to "Collaborative Domains"
-
78Hands On : Build the CQS PatternVídeo Aula
Walkthrough of JAVA code and UML for CQS realization
-
79Command Query Responsibility Segregation (CQRS)Vídeo Aula
Discussion on CQRS pattern
-
80Data Replication between WRITE-READ sidesVídeo Aula
Options for data replication between READ and WRITE sides
-
81Exercise : ACME CQRS for ProposalVídeo Aula
Exercise requires you to design CQRS for ACME Travels
-
82Hands On : ACME CQRS command implementationVídeo Aula
Walkthrough of JAVA code and UML for CQRS implementation
-
83Event Sourcing and Event Store considerationsVídeo Aula
Event Sourcing pattern
Considerations for building Event Store
-
84Hands On : MongoDB for ACME Sales READ sideVídeo Aula
Set up a NoSQL MongoDB for testing out the CQRS
-
85Hands On : CQRS-v1 Proposal SubscriberVídeo Aula
Walkthrough of JAVA code UML for version 1 of CQRS implementation for ACME
-
86Hands On : CQRS-v2 Read side QueryVídeo Aula
Walkthrough of JAVA code UML for version 2 of CQRS implementation for ACME