Écoutez, même si j'apprécie les microservices autant que n'importe qui, est-ce que je pense qu'ils constituent un énorme casse-tête à gérer et à déboguer ? Oui. Mais l'architecture des microservices est un sujet tellement brûlant parmi les développeurs et les recruteurs que j'aurais tort de ne pas mettre en sandbox mon propre projet évolutif massif qui est prêt pour la production tout en maintenant les coûts faibles ou inexistants, car nous sommes tous fauchés.
Félicitations ! Vous avez été embauché chez IceToMeetYou Inc. en tant que consultant et ils cherchent à mettre à niveau leur logiciel de gestion des expéditions actuel vers une solution plus personnalisée. IceToMeetYou Inc. est une startup qui vient de recevoir un financement d'environ 3 milliards de dollars pour son produit qui vend des glaçons importés à un homme coincé dans le désert. Leur logiciel de gestion des tâches actuel est trop petit et limité dans ses fonctionnalités pour gérer toutes les expéditions entrantes dont ce type, appelons-le Dennis, a besoin pour garder son smoothie au frais. Ils souhaitent créer un système de gestion des tâches capable de gérer plusieurs commandes entrantes de Dennis jusqu'à leur achèvement, d'attribuer des commandes à leurs pingouins ouvriers livrant la glace, de suivre la progression desdits pingouins et de recevoir des notifications en temps réel des mises à jour de statut. Sur ce, le PDG dit de n'hésitez pas à poser toutes les questions qui peuvent aider à construire ce projet. C’est exactement ce que nous allons faire alors que nous commençons à réfléchir à la construction du projet…
Pour ce projet, nous utiliserons la pile technologique suivante :
Backend : Java Spring Boot, car il s'agit d'un cadre puissant pour la création d'API REST et de microservices, offrant un large éventail d'outils tels que la découverte de services, les déploiements cloud et Kafka pour les systèmes pilotés par événements.
Frontend : Angulaire en raison de son framework frontal robuste avec NgRx pour la gestion globale de l'état
Base de données : MySQL/PostgreSQL (pour les données relationnelles), MongoDB (pour les données de tâches)
Mises à jour en temps réel : Kafka (pour le streaming d'événements) et WebSockets
Déploiement : Docker et Kubernetes pour l'orchestration
Test : JUnit, Jest et K6 (pour les tests de charge et de performances)
L'objectif principal ici est de démontrer toutes les parties mobiles lorsque l'on pense à une application Web. Bien que cette liste ne soit en aucun cas exhaustive, l'objectif est de couvrir de nombreuses bases dans un anglais simple afin que ce processus soit reproductible et évident lorsque l'on pense aux applications d'entreprise. Pour chaque section, je présenterai chaque étape de la conception au déploiement pour passer un MVP V1 via des blogs approfondis, des démonstrations de code, des diagrammes, des processus de réflexion et, plus important encore, en m'assurant toujours que nous résolvons le problème.
→ Principes de conception : Comprendre et mettre en œuvre les principes des microservices tels que l'indépendance des services, l'évolutivité et la tolérance aux pannes
→ Isolement des services :Comment se séparer selon ses propres domaines de préoccupation,
→ Communication inter-services : Choisir les stratégies de communication (API REST, Kafka, WebSockets) et gérer la cohérence des données entre les services.
→ Développement de services : Implémentation de services individuels à l'aide de Spring Boot, gestion des points de terminaison RESTful et garantie d'une isolation appropriée des problèmes.
→ Authentification et sécurité : Utilisation de JWT, OAuth et Spring Security pour une authentification sécurisée des utilisateurs et un contrôle d'accès basé sur les rôles.
→ Gestion de bases de données : Mise en place de bases de données relationnelles (MySQL/PostgreSQL) et NoSQL (MongoDB), optimisation du stockage des données pour les microservices et gestion des migrations de données.
→ Conception de l'interface utilisateur : Créer une expérience utilisateur transparente à l'aide d'Angular
→ Gestion de l'état : Gestion de l'état de l'application avec NgRx pour des interactions utilisateur cohérentes et réactives.
→ Intégration API : Connecter le front-end Angular aux services backend Spring Boot via les API RESTful et gérer le transfert de données en toute sécurité.
→ Websockets et streaming d'événements : Implémentation de WebSockets pour des mises à jour instantanées et de Kafka pour un streaming d'événements fiable entre les services.
→ Notifications push : Fournir des mises à jour en temps réel aux utilisateurs, garantissant une distribution efficace des messages sans surcharger les services.
→ Tests de charge : Utilisation de K6 pour évaluer le système sous charge, identifier les goulots d'étranglement et optimiser les performances des microservices.
→ Journalisation et surveillance : Mise en œuvre de la journalisation avec ELK ou des outils alternatifs, suivi de l'état des applications et configuration d'alertes en cas de pannes critiques.
→ Conteneurisation avec Docker : Création d'images Docker pour chaque service, établissant ainsi un environnement d'exécution cohérent pour une mise à l'échelle plus facile.
→ Orchestration avec Kubernetes : Utiliser Kubernetes pour gérer les déploiements, la mise à l'échelle automatique, l'équilibrage de charge et la résilience.
→ Hébergement Cloud : Services d'hébergement sur des plateformes cloud (AWS, Azure, GCP), couvrant des aspects tels que la rentabilité, la sécurité et la fiabilité.
Pour commencer, c'est un bac à sable, donc ce projet est conçu pour l'apprentissage et la démonstration. Grosse remarque ici : il s'agit d'une solution 100 % technique, construite à partir de zéro par un seul homme assis dans un sous-sol. Ce n'est pas si grave.
Je mettrai à jour et travaillerai sur ce projet tous les jours, alors attendez-vous à des mises à jour fréquentes !
C'est aussi un exercice sur ce que serait le développement au sein d'une équipe, nous travaillerons donc par « sprints » pour atteindre nos objectifs avec des rétrospectives (avec, je suppose, moi-même ?) pour voir ce qui s'est bien passé, quoi s'est mal passé, quels bloqueurs avons-nous rencontrés et comment pouvons-nous les résoudre. Je mettrai à jour en faisant une rétro rapide tous les 5 messages environ.
ENCORE CHOSE… J'ai toujours TOUJOURS faim de commentaires. Si quelque chose n’a pas de sens ou n’est pas assez clair, faites-le-moi savoir dans les commentaires.
Alors, il se fait tard, le Sprint 1 commence demain, accrochez-vous à vos chapeaux, la journée va être longue…
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!