Rejoignez la famille Talkhouse? | Basé sur la voix, les appels vidéo et la messagerie Web avec Mern Stack.
Une application de commerce électronique architecturée basée sur la communication asynchrones axée
Il s'agit d'une application Web basée sur le commerce électronique pour acheter et vendre des billets de différents événements en direct et amusants qui se produisent dans la ville en fonction de l'architecture des microservices. L'application est décomposée en plusieurs services individuels qui se parlent par le biais d'événements de publication via un bus d'événements. Chaque service est responsable de la gestion et de la mise en œuvre d'une fonctionnalité spécifique de l'application comme le service AUTH gère l'authentification, des commandes de gestion des commandes, le service de paiement implémente les paiements des utilisateurs et tous ces services et communiquent de manière asynchrone via un bus d'événements (streaming NATS) pour exécuter l'ensemble de l'application
L'utilisation de l'architecture des microservices et de ne pas compter sur le motif monoloithée rend l'application plus durable, tolérante aux pannes, hautement disponible et augmente le temps de place de l'application. Donc, si l'un des services se bloque, d'autres parties de l'application seront toujours fonctionnelles et disponibles pour les utilisateurs. Les microservices et les systèmes distribués sont le cœur des logiciels modernes et de l'ingénierie backend.
Next.js pour le rendu côté serveur et la construction du frontendExpress.js est utilisé pour le backend de constructionMongodb comme base de donnéesMongoose comme un ormTypescript , le backend est entièrement écrit en dactylographie pour empêcher les maux de tête que vous obtenez lorsque le nombre d'informations d'événements circule sans indiceStripe pour gérer les paiementsJest and Supertest pour les testsDocker pour la conteneurisationKubernetes pour l'orchestration ConatinerSkaffold qui facilite le développement continu pour les applications natives de Kubernetes. Fait travailler et gérer Kubernetes et différents services Kubernetes et déploiets beaucoup plus facilement.NATS Streaming est utilisé comme une file d'attente de bus ou de messages pour la publication et la gestion des événements émis par différents services.Bull.js est un système de file d'attente rapide et robuste. Il est utilisé pour mettre en œuvre le temporisateur d'expiration de paiement.L'application est divisée en 7 services qui gèrent et implémentent une fonctionnalité et une fonctionnalité spécifiques de l'application:
auth gère l'intégralité de l'authentification et de l'autorisation de l'application. L'authentification basée sur JWT et les cookies est utilisée.expiration gère le temporisateur d'expiration de paiement pour s'assurer que l'utilisateur paie dans un délai spécifié.orders de gestion des commandes des utilisateurspayments pour gérer les paiements de rayurestickets pour gérer les billets (création, mise à jour, récupérer). Au lieu de vendre des produits, cette application de commerce électronique vend des billets de différents événements en direct qui se produisent dans la ville.common comme les obligations, la manipulation des erreurs et les autres wares et fonctions partagées par différents services sont regroupés. Ce service est publié sous forme de package NPM et installé dans d'autres services à utiliser.client gère et met en œuvre le frontend de l'application.infra gère tous les fichiers Kubernetes Deployment and Service (.YAML) qui exécutent l'exécution de l'application Chaque service, Mogongodb Database et Nats-Streaming Server est docking en tant que conteneur Docker. Les conatineurs Docker sont gérés et orchestrés par leurs fichiers Kubernetes Deployment.yaml respectifs dans le répertoire infra. La communication entre différents déploiements de Kuberentes est régie par Service ObjectType. Enfin, Ingress-Service, qui utilise Ingress-Nginx (un contrôleur Ingress pour Kubernetes à l'aide de Nginx) comme proxy inverse et un équilibreur de charge pour proxy ou diriger les demandes entrantes à leurs services respectifs sous le nom d'hôte ticketing.dev . Skaffold est utilisé pour obtenir tous les déploiements et services de Kubernetes opérationnels avec une seule commande skaffold dev qui utilise le fichier skaffold.yaml.
Faire fonctionner ce projet sur votre machine locale est une tâche notoirement dfficult. Il nécessite un peu de connaissance de l'écosystème Docker et Kubernetes. Si vous êtes toujours prêt à relever le défi, ou si vous n'avez pas de vie, essayez de le faire fonctionner. Assurez-vous que Docker, Kubernetes et Skaffold sont installés. Définissez les variables environnementales requises et exécutez la commande suivante:
skaffold dev
Et l'application Boom sera opérationnelle, aucune configuration supplémentaire et dépendances requises.
Pour supprimer toutes les ressources déployées par Skaffold et arrêter tous les déploiements, services et conteneurs
skaffold delete
Essayez de courir et de le tester localement uniquement si vous n'avez pas de vie. Sinon, je ne suis pas celui à blâmer pour que vous vous grattiez la tête? Tout en essayant de comprendre ce gâchis de microservices de communication axée sur les événements entre les services?