PS : L’accent est mis sur la conception de microservices et non sur le codage
-
Aucun framework de microservices spécifique n’est utilisé
-
Tous les exemples de code sont en JAVA simple pour démontrer/clarifier la compréhension des modèles DDD, etc.
-
Les modèles sont développés en UML – en utilisant le PlantUML outil
-
PostgreSQL/MongDB/RabbitMQ/Kafka – instances gratuites créées sur le cloud pour les démos et les procédures pas à pas
VEUILLEZ Ne PAS rejoindre le cours si vous recherchez des tutoriels sur le codage des microservices ou un framework spécifique !!!
De quoi parle ce cours ?
Les microservices sont une nouvelle façon de créer un logiciel dans lequel une application est composée d’un ensemble de services indépendants . Le plus grand avantage des microservices est qu’ils permettent à une organisation de transformer à un rythme très rapide. Cette vitesse de mise sur le marché est obtenue grâce à la nature indépendante des services qui composent un micro application roservices. Des entreprises comme Amazon, Netflix et Etsy ont prouvé sans aucun doute la valeur des microservices.
De nombreuses organisations cherchent aujourd’hui à adopter les microservices. Ces organisations investissent dans les technologies, les outils, les compétences et modifient également leurs processus de développement et de livraison de logiciels. Mais de nombreuses organisations ne parviennent toujours pas à tirer pleinement parti des microservices ; en fait, de nombreuses organisations ont le sentiment d’avoir créé une dette technique en adoptant les microservices.
Alors pourquoi certaines organisations ont-elles réussi à adopter des microservices alors que d’autres ne le sont pas. Un aspect commun que j’ai observé dans les entreprises qui n’adoptent pas les microservices est qu’elles traitent les microservices comme une initiative purement technologique. Ils ne passent pas de temps à comprendre les aspects commerciaux de leurs applications Microservices !!!
Les microservices ne sont PAS seulement une question de technologie
L’élément clé de l’architecture des microservices est que les services sont Indépendants. Cet aspect indépendant du service est ce qui permet aux Microservices de changer indépendamment des autres services. Si la portée des microservices conduit à des interdépendances entre les services, cela conduirait à un besoin de coordination du changement entre les équipes, ce qui à son tour conduirait aux mêmes problèmes que nous avons avec les applications monolithiques !!! Les cycles de publication seront plus longs et il n’y aura aucun avantage à adopter les microservices.
Pour s’assurer qu’il n’y a pas d’interdépendances entre les microservices, un architecte de microservices doit comprendre le domaine, puis décider de la limite et de la portée des microservices. C’est ici qu’intervient la Domain Driven Design . Une fois les limites commerciales des Microservices définies, les services doivent être construits à l’aide de modèles de conception de Microservices et de technologies appropriés.
Les équipes travaillant sur les Microservices ne doivent pas seulement examiner les aspects techniques du service, mais DOIT garder à l’esprit qu’il existe d’autres considérations qui jouent un rôle essentiel dans le succès de l’initiative Microservices. Afin de
Rôle d’un architecte de microservices
Un professionnel de l’informatique travaillant dans le rôle d’architecte de microservices est responsable de plusieurs aspects en fonction de la maturité de l’adoption des microservices dans leur organisation. Voici la liste des activités dont les architectes sont responsables :
-
Évaluer les avantages commerciaux des microservices pour leur organisation spécifique
-
Construire une analyse de rentabilisation pour les microservices
-
Éduquer les parties prenantes de l’entreprise et de l’informatique sur les avantages/inconvénients des microservices
-
Appliquer la conception axée sur le domaine pour délimiter les limites des microservices
-
Définir le modèle de domaine pour les microservices
-
Réaliser la conception technique de Microservices
-
Guider et encadrer les équipes Microservices
-
Évaluer les technologies | frameworks pour la réalisation de Microservices
-
Construire des preuves de concepts pour montrer comment les choses fonctionnent
Comment cela aide au cours ?
Ce cours aidera les développeurs & architectes dans le renforcement des compétences nécessaires pour une mise en œuvre réussie des applications de microservices. Il consiste en une combinaison de concepts, de modélisation UML et de code de travail pour démontrer la mise en œuvre des microservices. Les étudiants apprendront les concepts de la conception axée sur le domaine au moyen d’exemples courants de l’industrie et d’une étude de cas (ACME voyages).
L’accent est mis sur l’architecture, la conception et le développement de microservices.
1. Transformation & Microservices
2. Conception axée sur le domaine
3. Appliquer le modèle stratégique et tactique DDD
4. Architecture événementielle
5. Prise d’événement
6. Gestion des données
7. Messagerie
8. DistribuerTransactions écrites
9. API
IMPORTANT :
Exemples de code
L’accent est mis sur la conception des microservices et non sur le codage.
-
Tous les exemples de code sont en JAVA brut
-
Le cours ne couvre PAS un framework spécifique
-
SpringBoot est utilisé dans les exemples pour la section API/GraphQL
Veuillez consulter les présentations du cours avant de vous inscrire au cours.
-
Revoyez les sujets abordés
-
Assurez-vous de comprendre l’accent de l’instructeur
Pré-requis
-
Compréhension de base de JAVA ou de tout autre langage de programmation
-
Une certaine expérience des pratiques de développement logiciel
PS :
La partie pratique est facultative, mais les étudiants sont encouragés à effectuer des tâches pratiques pour avoir une meilleure idée des modèles de conception.
Course Ouline
Quick intro of the instructor
Course outline
Tips to get the most out of the course
By the end of this lesson students will have the development environment setup on their local machine.
Microservices Architecture
Monolithic Architecture
Microservices Architecture
Realization of Microservices Architecture
Discussion on how Business Transformation is accelerated by Microservices Architecture.
How teams are organized for building Microservices applications
Business capabilities and Microservices
Business Benefits of Microservices
Discussion on pros and cons of Microservices architecture from technology perspective.
Introduction to Domain Driven Design
Understanding the domain and domain models
Conceptual vs Architectural models
Architecture vs Design
Discussion on commonly used modelling techniques and Architectural styles.
Students will be introduced to Domain Driven Design in this lesson.
Define models and elements of domain models.
Enterprise | Unified domain models
Knowledge crunching exercise
Understanding the Business Domain
Overview of the topics covered in this section.
Understand the use of business model canvas
Learn how the Business model canvas is created
Example: Uber's Business Model Canvas
In this exercise we will create the Business Model Canvas for Acme Travels
Domain Driven Design : Strategic Patterns
Overview of the topics covered in this section.
Learn about the 3 types of sub domains
Core
Support
Generic
In this exercise we will categorize ACME Travel's subdomains in the core/support/generic categories.
Understand the meaning or Context | Business Context
Bridging the gap between Business and Technology languages. Lesson introduces students to DDD Ubiquitous Language.
Discussion on characteristics of Ubiquitous Language.
In this lesson we will develop the Ubiquitous Language terms for ACME Travels Sales subdomain.
Introduction to the DDD Strategic pattern : Bounded Context
By end of this lesson students should be able to explain the Bounded Contexts.
Students will learn techniques for discovering the Bounded Contexts in a problem space.
In this exercise we will try to identify Bounded Contexts in the ACME travels business domain.
Bounded Context Relationships
Overview of the topics covered in this section.
Big Ball of Mud
Challenges with Bounded Context dependencies
Context Maps
DDD Strategic Patterns:
Separate Ways
Partnership pattern
Shared Kernel
DDD Strategic Patterns:
Customer-Supplier pattern
Conformist pattern
Anti corruption layer pattern
DDD Strategic Patterns:
Open Host Service
Published Language
In this exercise we will draw up the context mapping in a banking domain.
Domain Driven Design - Tactical Patterns
Overview of the topics covered in this section.
DDD Tactical Pattern : Entity pattern
DDD Tactical Pattern : Value Object pattern
In this exercise we will identity | design the Entity and VO in the ACME Travels sales model
Walkthrough of the JAVA code & UML for ACME Travel Sales entities and value objects
DDD Tactical Pattern : Aggregate pattern
In this exercise we will design an Aggregate in the ACME Travel Sales model
Walkthrough of JAVA code and UML model for the Aggregate(s) in the ACME sales model
Discussion on Anemic models and how to address anemic models
DDD Tactical Pattern : Repository pattern
Walkthrough of the JAVA code and UML model for ACME travel repository
DDD Tactical Pattern : Services patterns
DDD Tactical Pattern : Application Services pattern
DDD Tactical Pattern : Infrastructure Services pattern
Walkthrough of the Java code and UML for the Domain Services in ACME travel model
Walkthrough of JAVA code and UML for the ACME application and infrastructure services
Events Driven Architecture & Domain Events
Overview of the topics covered in this section.
Discussion of communication patterns used in Microservices
Discussion on the Microservices interaction patterns
Introduction to Events Driven Architecture and its importance in development of Microservices applications.
Walkthrough of pub-sub messaging pattern using the RabitMQ messaging broker.
Introduction to domain events
Implementing domain events with a static class broker framework pattern
In this exercise we will Identify the ACME travel domain events
Walkthrough of the JAVA code and UML for the implementation of the domain events for ACME travel.
DDD Tactical Pattern : Integration Events
In this exercise we will identify the Integration Events in the ACME travel domain
Walkthrough of JAVA code and UML for the implementation of ACME
Walkthrough of JAVA code and UML for the implementation of ACME
Event Storming for creating shared knowledge
Overview of the topics covered in this section.
Events storming is a technique used for creating shared knowledge of the domain. This lesson will introduce students to event storming.
Elements of event storming flow.
Discussion on how to prepare for an Event Storming workshop.
The process followed in an Event Storming workshop.
Simulation of Event Storming Workshop for ACME sales
Microservices Data Management Patterns
Overview of the topics covered in this section.
Challenges with use of Shared Database in monolithic applications
Introduction to SOA and how it addressed some of the challenges of shared database in Monoliths
Microservices have independent persistent layer. This lesson discusses the pros of separate database pattern for microservices.
Option for persistence layer for brownfield applications
Options for breaking a shared database to separate databases
Introduction to CQRS, Event Sources and SAGA patterns
Microservices DB Performance Management
Overview of the topics covered in this section.
Command Query Separation (CQS) Pattern
Setup PostgreSQL database for testing
Walkthrough of JDBC Repo implementation
Considerations for CQ pattern
Read vs Write performance
Introduction to "Collaborative Domains"
Walkthrough of JAVA code and UML for CQS realization
Discussion on CQRS pattern
Options for data replication between READ and WRITE sides
Exercise requires you to design CQRS for ACME Travels
Walkthrough of JAVA code and UML for CQRS implementation
Event Sourcing pattern
Considerations for building Event Store
Set up a NoSQL MongoDB for testing out the CQRS
Walkthrough of JAVA code UML for version 1 of CQRS implementation for ACME
Walkthrough of JAVA code UML for version 2 of CQRS implementation for ACME
Microservices Managing the Data Integrity
Overview of the topics covered in this section.
As a best practice always design distributed systems for failures
Handling the write side failures to maintain data integrity in distributed systems
In this exercise you will be asked to identify the failure points in the ACME CQRS design
Walkthrough of JAVA code and UML for demonstrating the event duplication scenario
Microservices and Kafka
Overview of the topics covered in this section.
Introduction to Kafka streaming
Diving deeper into Kafka concepts
Create a Kafka cluster for experimentation
Walkthrough of JAVA code and UML for Kafka producer
Walkthrough of JAVA code and UML for Kafka consumer
Discussion on how to decided between Kafka and AMQP/RabitMQ
Managing Distributed Transactions with SAGA
Overview of the topics covered in this section.
Flow of the SAGA pattern
Two ways of implementing SAGA
Choreography
Orchestration
Practical considerations for building SAGA
In this exercise we will discuss implementation of SAGA for ACME
Walkthrough of JAVA code and UML for SAGA for ACME
Microservices and API
Overview of the topics covered in this section.
Discussion on what makes an API a RESTful API
Resources in REST API
Discussion on why API management is needed for Microservices
In this exercise we will discuss the design of REST API for ACME
Walkthrough of JAVA code and UML for ACME REST API
Introduction to GraphQL
How to define the schema for GraphQL
In this exercise we will design the GraphQL API for ACME
Walkthrough of JAVA code and UML for ACME GraphQL API