


Du local au mondial : la migration Azure qui a accru notre efficacité et notre sécurité
Contexte : aperçu du système d'origine
Dans l'un de mes emplois, j'ai travaillé sur un système de gestion robuste, développé en Java, intégré à RabbitMQ et PostgreSQL, avec pour mission de contrôler les paiements, les expéditions et les stocks d'une grande plateforme de commerce électronique. Le système d'origine, qui fonctionnait localement dans un centre de données sur site, ne répondait plus aux demandes croissantes d'évolutivité et de fiabilité. Ce système était confronté à des défis tels qu'une latence élevée dans les transactions critiques, des difficultés de maintenance et une augmentation des coûts opérationnels à mesure que les charges de travail augmentaient.
L'objectif de cette migration était non seulement de déplacer le système vers le cloud, mais également d'améliorer l'architecture pour la rendre plus évolutive, résiliente et efficace. Le choix d'Azure comme plate-forme cloud a été motivé par sa capacité à répondre aux besoins spécifiques d'une architecture moderne et robuste tout en prenant en charge les meilleures pratiques en matière de sécurité, de gouvernance et d'optimisation des coûts, comme décrit dans Azure Well -Architected Framework.
Contexte système : le nouveau modèle dans Azure
Aperçu
Le nouveau système est conçu pour être hautement évolutif, résilient et facile à gérer, en utilisant les principes d'Azure Well-Architected Framework. L'architecture est conçue pour gérer l'augmentation du trafic, garantir une haute disponibilité et réduire les coûts opérationnels. Migrer vers Azure ne signifiait pas seulement déplacer les composants existants, mais également revoir et moderniser l'architecture pour garantir que le système était agile, sécurisé et efficace.
L'architecture a été planifiée en quatre niveaux du modèle C4, en mettant l'accent sur une vision claire du contexte, des conteneurs, des composants et du code. Cela garantirait que toutes les parties prenantes – des ingénieurs aux gestionnaires – sont alignées sur les objectifs d’évolutivité et de fiabilité du nouveau système.
Contexte (diagramme de contexte)
Le diagramme contextuel illustre le système de paiement, de fret et de gestion des stocks dans son ensemble. Le système interagit avec divers composants externes tels que les clients, les systèmes de paiement et les plateformes de transport. Ce diagramme se concentre sur la manière dont les utilisateurs et les systèmes externes interagissent avec le système.
Le nouveau système a été divisé en trois domaines d'activité principaux :
- Gestion des paiements : traite les transactions financières en utilisant l'intégration avec des passerelles de paiement et d'autres services financiers externes.
- Gestion du fret : interagit avec les prestataires logistiques pour calculer et surveiller l'état de livraison des commandes.
- Gestion des stocks : surveille les niveaux de stock et génère des alertes automatiques lorsque les articles sont proches de la pénurie.
Chacun de ces domaines a été traité comme un microservice distinct, facilitant une évolutivité indépendante et une gestion simplifiée. Le diagramme contextuel se concentre sur les interactions entre ces services et les plateformes externes, telles que les systèmes de paiement, les systèmes d'expédition et les services utilisateurs.
Conteneurs (diagramme des conteneurs)
Le diagramme de conteneur se concentre sur les principaux conteneurs logiciels au sein de l'architecture. Chaque service a été transformé en un conteneur d'application distinct, exploitant les capacités de conteneurisation de Kubernetes sur Azure. RabbitMQ a été remplacé par un Azure Service Bus pour améliorer la communication asynchrone, tandis que PostgreSQL a été migré vers Azure Database pour PostgreSQL, avec des optimisations pour garantir une plus grande disponibilité et évolutivité.
Les principaux conteneurs comprennent :
- Frontend Web (App) : une application Web qui interagit avec les utilisateurs pour gérer les commandes, les paiements, l'expédition et l'inventaire. Cette application a été déplacée vers Azure App Service.
- API Gateway : Un service qui gère le routage des demandes vers des microservices spécifiques de paiement, d'expédition et d'inventaire. Utilise Azure API Management pour gérer la sécurité, l'authentification et le contrôle du trafic.
- Microservice de paiement : Responsable du traitement et de la validation des transactions financières. Il a été restructuré pour communiquer avec les passerelles de paiement et effectuer des transactions en toute sécurité. Il était hébergé sur Azure Kubernetes Service (AKS).
- Microservice d'expédition : Responsable du calcul des frais d'expédition et du suivi de l'état des livraisons. Ce service communique avec les prestataires logistiques externes via des API RESTful et a été hébergé dans des conteneurs sur AKS.
- Microservice d'inventaire : responsable du contrôle des stocks, de l'émission d'alertes de stock faible et de la communication avec les systèmes de vente pour garantir que les produits sont disponibles pour les clients. Ce service a également été déplacé vers AKS.
- Base de données PostgreSQL : la base de données a été migrée vers Azure Database pour PostgreSQL, offrant une haute disponibilité et une sauvegarde automatique. La migration a été réalisée à l'aide de l'outil Azure Database Migration Service.
- Service Bus (RabbitMQ remplacé par Azure Service Bus) : gère les files d'attente de messages asynchrones entre les microservices, garantissant que les transactions et les processus métier se déroulent de manière efficace et résiliente.
Composant (Diagramme des composants)
Le diagramme des composants se concentre sur l'architecture interne de chacun des microservices. Chaque composant est représenté comme une unité logicielle autonome et facilement évolutive.
Microservice de paiement
Les composants clés incluent :
- Composant de traitement des paiements : responsable de la communication avec la passerelle de paiement, de la validation et du traitement des paiements. Utilise Azure Key Vault pour stocker en toute sécurité les informations d'identification et les informations sensibles.
- Composant de notification : envoie des notifications au client et à l'administrateur concernant l'état du paiement.
Microservice d’expédition
Les composants clés incluent :
- Composant de calcul d'expédition : interagit avec des API externes pour calculer les frais d'expédition en fonction du poids, de la destination et d'autres variables. Il a été adapté pour utiliser Azure Logic Apps afin de s'intégrer à des services tiers.
- Composant de suivi : surveille l'état de livraison des commandes et met automatiquement à jour les clients via Azure Functions.
Microservice d'inventaire
Les composants clés incluent :
Composante de contrôle des stocks : responsable du suivi et de l'ajustement des niveaux de stock. S'intègre aux systèmes de vente pour garantir que les produits ne s'épuisent pas sans un réapprovisionnement programmé.
Composant Alertes : génère des alertes pour les responsables du réapprovisionnement des stocks lorsque les niveaux atteignent le minimum.
Code (diagramme de code)
Microservice de paiement :
Microservice d’expédition :
Microservice d'inventaire :
Conclusion : améliorations et résultats en matière de migration
La migration du système vers Azure a apporté plusieurs améliorations significatives :
- Évolutivité : l'utilisation d'Azure Kubernetes Service (AKS) et d'Azure App Service a permis à chaque microservice d'évoluer indépendamment en fonction de la charge de travail, garantissant ainsi que le système puisse gérer les pics de trafic sans problème.
- Résilience : l'utilisation d'Azure Service Bus pour la messagerie asynchrone et d'Azure Database pour PostgreSQL avec haute disponibilité a permis de garantir que le système était plus résilient aux pannes et aux pannes.
- Coûts optimisés : la migration vers le cloud a permis d'optimiser les coûts grâce au modèle de paiement à l'utilisation, en plus de réduire les coûts d'infrastructure et de maintenance des serveurs physiques.
- Sécurité : l'utilisation d'Azure Key Vault pour le stockage sécurisé des informations d'identification et la mise en œuvre de pratiques de sécurité telles que l'authentification multifacteur (MFA) et le contrôle d'accès strict ont augmenté la sécurité globale du système.
En utilisant les meilleures pratiques d'Azure Well-Architected Framework et en mettant en œuvre le modèle C4, la migration a non seulement modernisé l'architecture, mais a également assuré un système plus fiable, évolutif et sécurisé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

Le passage de C / C à JavaScript nécessite de s'adapter à la frappe dynamique, à la collecte des ordures et à la programmation asynchrone. 1) C / C est un langage dactylographié statiquement qui nécessite une gestion manuelle de la mémoire, tandis que JavaScript est dynamiquement typé et que la collecte des déchets est automatiquement traitée. 2) C / C doit être compilé en code machine, tandis que JavaScript est une langue interprétée. 3) JavaScript introduit des concepts tels que les fermetures, les chaînes de prototypes et la promesse, ce qui améliore la flexibilité et les capacités de programmation asynchrones.

Les principales utilisations de JavaScript dans le développement Web incluent l'interaction client, la vérification du formulaire et la communication asynchrone. 1) Mise à jour du contenu dynamique et interaction utilisateur via les opérations DOM; 2) La vérification du client est effectuée avant que l'utilisateur ne soumette les données pour améliorer l'expérience utilisateur; 3) La communication de rafraîchissement avec le serveur est réalisée via la technologie AJAX.

L'application de JavaScript dans le monde réel comprend un développement frontal et back-end. 1) Afficher les applications frontales en créant une application de liste TODO, impliquant les opérations DOM et le traitement des événements. 2) Construisez RestulAPI via Node.js et Express pour démontrer les applications back-end.

Comprendre le fonctionnement du moteur JavaScript en interne est important pour les développeurs car il aide à écrire du code plus efficace et à comprendre les goulots d'étranglement des performances et les stratégies d'optimisation. 1) Le flux de travail du moteur comprend trois étapes: analyse, compilation et exécution; 2) Pendant le processus d'exécution, le moteur effectuera une optimisation dynamique, comme le cache en ligne et les classes cachées; 3) Les meilleures pratiques comprennent l'évitement des variables globales, l'optimisation des boucles, l'utilisation de const et de locations et d'éviter une utilisation excessive des fermetures.

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.

C et C jouent un rôle essentiel dans le moteur JavaScript, principalement utilisé pour implémenter des interprètes et des compilateurs JIT. 1) C est utilisé pour analyser le code source JavaScript et générer une arborescence de syntaxe abstraite. 2) C est responsable de la génération et de l'exécution de bytecode. 3) C met en œuvre le compilateur JIT, optimise et compile le code de point chaud à l'exécution et améliore considérablement l'efficacité d'exécution de JavaScript.
