Vous êtes sur la page 1sur 29

Achitecture

logicielle moderne
INF4027-Groupe 6:ARCHITECTURE LOGICIELLE
C’est quoi L'architecture logicielle moderne est
une approche de développement qui
l’architecture utilise des technologies et des

moderne? pratiques innovantes pour répondre


aux besoins évolutifs des
applications et des services.
Dans cette section, nous allons
nous concentrer sur les concepts
clés de l'architecture logicielle
moderne, notamment :
Architecture microservices
Conteneurisation et orchestration
Serverless computing ou Architecture
sans serveur
L'architecture microservices est une
approche de développement logiciel
qui consiste à créer des

A: applications en divisant les


fonctionnalités en petits services
ARCHITECTURE indépendants. Chaque service est
conçu pour effectuer une tâche
spécifique et communique avec les

MICROSERVICES autres services via des API. Cette


approche permet d'améliorer la
flexibilité, la scalabilité et la
résilience des applications.
quelques éléments à
savoir sur l'architecture
microservices
Flexibilité
Scalabilité
Résilience
Complexité
Gestion
Les microservices sont conçus pour être
indépendants les uns des autres, ce qui

Flexibitlité permet de les développer, de les tester


et de les déployer séparément. Cela
permet également de modifier ou de
remplacer un microservice sans affecter
les autres.

Les microservices peuvent être déployés sur

Scalabilité des serveurs distincts, ce qui permet d'ajuster


la capacité de chaque service en fonction de la
demande. Cela permet également de réduire les
coûts en évitant de surdimensionner
l'infrastructure.
Les microservices sont conçus pour être
tolérants aux pannes, ce qui signifie que

Résilience si un service échoue, cela n'affectera


pas les autres services. De plus, les
microservices peuvent être redémarrés
ou remplacés automatiquement en cas
de défaillance.

L'architecture microservices peut rendre

Complexité
l'application plus complexe, car elle
nécessite une coordination entre les
différents services. Cela peut rendre la
conception, le développement et le
débogage plus difficiles.
L'architecture microservices nécessite
une gestion plus complexe que les

Gestion architectures monolithiques


traditionnelles. Il est important de
mettre en place des outils et des
pratiques pour surveiller, gérer et
déployer chaque microservice.

En résumé, l'architecture microservices est une approche de


développement logiciel qui permet de créer des applications flexibles,
évolutives et résilientes en divisant les fonctionnalités en petits services
indépendants. Cependant, cela peut rendre l'application plus complexe et
nécessite une gestion plus avancée que les architectures monolithiques
traditionnelles.
La conteneurisation est une
méthode de virtualisation qui permet
d'exécuter des applications dans des
environnements isolés appelés
conteneurs. Les conteneurs sont
légers, portables et offrent une
B: isolation complète des ressources

Conteneurisation et
système. L'orchestration, quant à
elle, est le processus de gestion

orchestration : automatisée des conteneurs pour


garantir leur disponibilité, leur
évolutivité et leur résilience. Des
outils populaires tels que Docker et
Kubernetes sont utilisés pour la
conteneurisation et l'orchestration.
Questions

Quels sont les Quels sont les Qu'est-ce que


C’est quoi un outils de l'orchestration des
avantages de la
conteneur? et conteneurisation conteneurs ?
conteneurisation ? disponibles ?
comment mettre en
place un conteneur?
Il est important de comprendre les
avantages que la conteneurisation peut

Avantages offrir à votre application, tels que


l'isolation des ressources, la portabilité,
la facilité de déploiement et la scalabilité.

c’est quoi L'orchestration des conteneurs est le


processus de gestion automatisée des
l’orchestration conteneurs, y compris le déploiement, la mise
à l'échelle, la surveillance et la gestion des
des conteneurs? erreurs. Des outils tels que Kubernetes
offrent des fonctionnalités d'orchestration
puissantes pour gérer efficacement un grand
nombre de conteneurs.
C’est quoi un conteneur? et
comment mettre en place un conteneur?

Dockerisation d’une
Application spring
boot et déploiement
Conteneurisation:
de l’image docker
Exemple d’application
dans render utilisant
l’action GitHub
Render Web
service

Build and push


docker image

o n
exi
n n
push

c o
Créez un Dockerfile dans le
répertoire racine de votre application
Spring Boot. Le Dockerfile définira
les étapes pour construire l'image
Docker. Voici un exemple de

1-Créer un
Dockerfile de base pour une
application Spring Boot :

Dockerfile Dockerfile
avec le Dockerfile précédent , nous
pouvons générer l’exécutable de
notre application avant de pusher
sur github

après les étapes ci- nous pouvons executer cette


commande à la racine de notre
contre, on pousse notre projet: mvn clean package
projet sur git: git push Cela va lancer le processus de
origin main:main construction de votre application.
Maven va télécharger les
dépendances nécessaires, compiler
les sources, exécuter les tests et
générer le fichier JAR dans le
répertoire target de votre projet.
Dans notre compte
render, suivons cette
procédure
On se connecte à notre dépôt
GitHub depuis render.
Ensuite, on choisit
l'environnement Docker.
Render utilisera le Dockerfile de notre
projet pour construire une image Docker
en utilisant notre fichier JAR, puis la
déploiera par la suite.
construction de
l’image docker et
déploiement par
render
Le conteneur vas se connecté à la base
de donné MYSQL déployée sur AWS
aucour de son exécution
déploiement du
conteneur terminé

et voici le lien de https://foodapp-txc3.onrender.com


l’api
Docker &
Kubernetes :
Comment Docker et
Kubernetes fonctionnent-
ils ensemble ?
Questions concernant
kubernete

C’est quoi le c’est quoi un C’est quoi le nœud


C’est quoi un pod? Ingress (Node )?
conteneur?
Controller?
Un pod est la plus petite unité de déploiement
dans Kubernetes. Il représente un groupe d'un ou
plusieurs conteneurs qui sont toujours déployés
ensemble sur le même nœud (node). Les

Pod
conteneurs d'un pod partagent le même espace de
réseau et peuvent communiquer entre eux via
localhost.

Un conteneur est une unité d'exécution


légère et isolée qui contient une application
Conteneur et toutes ses dépendances. Il utilise la
technologie de virtualisation au niveau du
système d'exploitation pour fournir un
environnement cohérent et portable pour
l'exécution d'applications
L'Ingress Controller est un composant dans
Kubernetes qui gère les règles d'acheminement du
trafic externe vers les services à l'intérieur du
cluster. Il agit comme une passerelle d'entrée pour
le trafic HTTP/HTTPS, permettant de configurer
Ingress Controller des règles d'acheminement basées sur des
chemins d'URL, des noms de domaine, etc. Il
facilite la gestion des routes et de la mise en
réseau pour les applications déployées dans le
cluster Kubernetes.

Un nœud (node) est une machine physique ou


virtuelle qui fait partie du cluster Kubernetes.
Nœud Il peut exécuter plusieurs pods et fournit les
ressources nécessaires pour exécuter les
conteneurs. Chaque nœud a un agent appelé
kubelet qui communique avec le contrôleur de
cluster Kubernetes pour gérer les pods et les
conteneurs sur ce nœud.
Le Serverless computing (ou
informatique sans serveur en français)
est un modèle d'architecture
informatique dans lequel le fournisseur
de services cloud gère dynamiquement
C: l'allocation des ressources
Serverless computing ou informatiques pour exécuter des
applications. Dans ce modèle, le
Architecture sans serveur développeur n'a pas besoin de se
préoccuper de la gestion des serveurs
ou de l'infrastructure sous-jacente.
Le Serverless computing repose sur l'utilisation de
fonctions en tant que service (Function-as-a-Service ou
FaaS), qui sont des blocs de code autonomes qui peuvent
être exécutés en réponse à des événements spécifiques.
Les fournisseurs de services cloud tels que AWS Lambda,
Google Cloud Functions ou Microsoft Azure Functions
offrent des plateformes pour exécuter ces fonctions.

sur quoi repose le Le Serverless computing permet aux


serverless computing? développeurs de se concentrer sur
l'écriture de code métier plutôt que sur la
gestion de l'infrastructure, ce qui peut
réduire les coûts et améliorer l'efficacité.
Cependant, ce modèle peut également
présenter des défis en matière de gestion
des données, de sécurité et de
performances, qui doivent être pris en
compte lors de la conception
d'applications Serverless.
Serverless computing
ou Architecture sans
serveur

Vous aimerez peut-être aussi