C’est quoi une architecture 3-Tiers ?
L’architecture trois tiers, une architecture logicielle qui divise notre application en trois niveaux/couches logiques et physiques : la couche présentation, la couche application et la couche données. Cette architecture est très répondue surtout pour les applications client-serveur traditionnelles. Cette architecture permet aux développeurs de créer des applications plus flexibles et évolutives dans le temps.
Nous allons voir ensemble dans cet article la composition et le rôle de chaque couche. Je vais vous présenter également deux architectures sur lesquelles vous pouvez vous appuyer pour construire une application 3-tiers sur le cloud Azure.
Couche Présentation
La couche présentation représente l’interface de communication entre l’application et l’utilisateur final. L’objectif de cette couche est d’afficher les données/informations à l’utilisateur et recueillir les données/saisies auprès de lui.
L’utilisateur va avoir accès à cette couche au travers d’un navigateur Web ou une interface utilisateur graphique (GUI) pour les applications de bureau. Le mode web est généralement développé en HTML, CSS et JavaScript. Les applications de bureau peuvent être écrites dans divers langages en fonction de la plate-forme comme le Java, Python..Etc.
Couche application
Cette couche qu’on peut décrire comme le coeur de notre application est appelée aussi niveau logique. Le traitement des informations recueillies dans la couche supérieure est fait à ce niveau avant d’être envoyées au niveau de données. La logique est décrite/définie par les développeurs de l’application dans le but de transformer les données de la couche application avant de les transmettre en forme de requêtes à la base de données.
Généralement, cette base logique est développée en utilisant Python, Java, Perl, PHP ou Ruby, et communique avec le niveau de données à l’aide d’appels API.
Couche données
Le niveau de données, appelé souvent : niveau de la base de données, niveau d’accès aux données ou back-end. Nous allons y trouver toutes les informations traitées par la couche supérieure stockées et gérées. La construction de votre couche base de donnés peut se baser sur une base de données relationnelle (SQL) ou Non relationnelle (NoSQL).
On cite : PostgreSQL, MySQL, MariaDB, Oracle, DB2, ou Microsoft SQL Server pour les bases de données relationnelles, et tel que Cassandra, CouchDB ou MongoDB pour les bases de données NoSQL.
Une architecture 3-Tiers sur Azure
Cette architecture est construite sur plusieurs briques et services Azure qu’on va lister ci-dessous :
- Organiation
- Un ressource group pour toute l’infrastructure,
- Une distribustion sur plusieurs AZ ( Availability Zone),
- Niveau Compute
- 2*VMs ( 2 différents AZ) sur Windows server avec SQL Server en mode Always On pour une meilleure disponibilité (une Master en Read/Write et le replica en Read Only). Un basculement automatique se basant sur Windows Server Failover Cluster (WSFC).
- 2*VMs ( 2 différents AZ) sur Windows server avec l’installation des fonctionnalités : AD DS (Active Directory Domain Services) et DNS ( Domain Name Services). Les objets du cluster sont enregistrés dans l’AD DS ainsi que le listener.
- Témoin (Quorum) : on utilise ici un Cloud Witness se basant sur Azure Blob Storage. Le témoin est indispensable pour éviter le split brain entre le neoud master et le slave du cluster WSFC.
- Un bastion (Jumpbox) : nous avons toutes et tous ce genre de jump server dans nos zone d’administration accessible que depuis nos réseaux interne et par les équipe d’administration. Microsoft propose Azure bastion qui va nous permettre de lister des IPs autorisées à accéder aux ressources au travers d’internet ou notre réseau interne. La connexion passe en TLS 443 puis en RDP depuis le bastion vers nos serveurs. Ci-dessous, un aperçu rapide de ce service que j’utilise tous les jours :
- Au niveau Réseau
- Un seul réseau virtuel (vNET) composé de plusieurs sous-réseaux (Subnet) pour une meilleure segmentation entre les différents niveaux,
- Une passerelle applicative (Application Gateway) qui va jouer le rôle d’équilibreur de charge de niveau 7 sur les requêtes HTTP avec la fonctionnalité WAF ( Web Application Firewall) intégrée par défaut. L’application est protégée contre les attaques et les vulnérabilités,
- 2*Équilibreurs de charge internes (Load Balancers) qui vont jouer le rôle d’équilibreurs de charge entre les serveurs front-end, Application et base de données,
- 6*Groupes de sécurité réseau (NSG), placés sur chaque subnet pour restreindre le trafic réseau au sein du réseau virtuel. Chaque niveau ne va communiquer qu’avec les ressources autorisées par l’administrateur. Par exemple, le niveau de la base de données n’accepte pas le trafic provenant du front-end Web, mais uniquement celui provenant du niveau professionnel et du sous-réseau de gestion,
- Protection DDoS supplémentaire en plus de la protection de base contre les attaques par déni de service distribué (DDoS) fournie par Azure,
- Azure DNS Service qui va fournir une résolution de nos noms de domaines, mais aussi de nos services internes avec une zone private DNS.
La figure suivante est une version améliorée de l’architecture précédente en ajoutant une région supplémentaire :
Les avantages d’une architecture 3 tiers
Les avantages d’une architecture 3 tiers sont multiples. Tout d’abord, la séparation logique et physique des trois niveaux. Chaque niveau peut fonctionner sur un système d’exploitation et une plate-forme de serveurs distincts – par exemple, un serveur Web avec K8S , un serveur d’applications sous Linux , un serveur de base de données sous Windows serveur – qui correspondent le mieux à ses exigences fonctionnelles.
Cette architecture permet une meilleure flexibilité et un meilleur contrôle du code. En effet, chaque niveau peut être modifié sans impacter les autres niveaux. De plus, cette architecture permet une meilleure évolutivité et une meilleure scalabilité.
Enfin, elle offre une meilleure fiabilité et disponibilité, car si un niveau est en panne, les autres niveaux peuvent continuer à fonctionner correctement.
Conclusion
L’architecture 3-tiers est un schéma de déploiement d’applications logicielles où les fonctions sont séparées en trois « tiers ». Cela peut être vu comme une pyramide, avec le tiers supérieur représentant l’interface utilisateur, le milieu représentant la logique des applications et le bas représentant la base de données. L’avantage de cette architecture est qu’elle permet une meilleure flexibilité et évolutivité des applications. De nombreuses entreprises ont adopté cette architecture pour développer et déployer leurs applications logicielles.
Cela fait décennies que l’architecture à trois niveaux domine le monde des applications client-serveur. On assiste aujourd’hui avec l’avènement du Cloud Public à une modernisation des applications, à l’aide de technologies natives du cloud telles que, les conteneurs et les microservices, et pour la migration vers le cloud.
A très vite