¿Únete a la familia Talkhouse? | Construcción de aplicaciones web de pares, videollamadas y mensajería de pares con base en WebRTC con Mern Stack
Una aplicación de comercio electrónico arquitecturada por la comunicación asincrónica basada en eventos se creó utilizando Express, TypeScript, NATS Streaming y Next.js
Es una aplicación web basada en el comercio electrónico para comprar y vender boletos de diferentes eventos en vivo y divertidos que ocurren en la ciudad en función de la arquitectura de microservicios. La aplicación se divide en múltiples servicios individuales que hablan entre sí a través de eventos de publicación a través de un bus de eventos. Cada servicio es responsable de manejar e implementar una característica específica de la aplicación, como el servicio de autenticación, maneja la autenticación, los pedidos del servicio manejan los pedidos, el servicio de pagos implementa los pagos del usuario y todos estos servicios funcionan y se comunican de manera asincrónica a través de un bus de eventos (transmisión de nats) para ejecutar toda la aplicación
El uso de la arquitectura de microservicios y no depender del patrón monoloith hace que la aplicación sea más duradera, tolerante a fallas, altamente disponibles y aumenta el tiempo ascendente de la aplicación. Entonces, si uno de los servicios se bloquea, otras partes de la aplicación seguirán funcionales y están disponibles para los usuarios. Microservices y sistemas distribuidos es el corazón del software moderno y la ingeniería de backend.
Next.js para representación del lado del servidor y edificio frontendExpress.js se usa para el backend de los edificiosMongodb como base de datosMongoose como un OrmTypescript , el backend se escribe completamente en mecanografiado para evitar dolores de cabeza que obtiene cuando el número de eventos infinte fluye sin pistasStripe para manejar pagosJest and Supertest para las pruebasDocker para la contenedoresKubernetes para la orquestación de ConatinerSkaffold que facilita el desarrollo continuo para las aplicaciones nativas de Kubernetes. Hace que trabajar y administrar Kubernetes y diferentes servicios de Kubernetes e implementarmets sean mucho más fáciles.NATS Streaming se utiliza como una cola de bus de eventos o cola de mensajes para publicar y manejar los eventos emitidos por diferentes servicios.Bull.js es un sistema de cola rápido y robusto. Se utiliza para implementar el temporizador de vencimiento de pago.La aplicación se divide en 7 servicios que manejan e implementan una característica y funcionalidad específicas de la aplicación:
auth maneja toda la autenticación y autorización de la aplicación. Se utiliza JWT y la autenticación basada en cookies.expiration maneja el temporizador de vencimiento de pago para asegurarse de que el usuario pague dentro de un marco de tiempo especificado.orders para manejar pedidos de usuariopayments por manejo de pagos de rayastickets para manejar boletos (crear, actualizar, buscar). En lugar de vender productos, esta aplicación de comercio electrónico vende boletos de diferentes eventos en vivo en la ciudad.common , toda la funcionalidad común, como requerir requisito, manejo de errores y otras funciones y funciones medias compartidas por diferentes servicios, se agrupan. Este servicio se publica como un paquete NPM e instalado en otros servicios que se utilizarán.client maneja e implementa el frontend de la aplicación.infra administra todos los archivos de implementación y servicio de Kubernetes (.yaml) que se ejecutan ejecutando la aplicación Cada servicio, la base de datos MOGONGODB y el servidor de transmisión de NATS se pone a cuadro como un contenedor Docker. Los Conatiners de Docker son administrados y orquestados por sus respectivos archivos de implementación de Kubernetes. La comunicación entre las diferentes implementaciones de Kuberentes se rige por Service ObjectType. Finalmente, el servicio de ingreso, que utiliza Ingress-Nginx (un controlador de ingreso para Kubernetes que usa Nginx) como un proxy inverso y un equilibrador de carga para proxy o solicitudes entrantes directas a sus respectivos servicios bajo el nombre de host ticketing.dev . Skaffold se utiliza para obtener todas las implementaciones y servicios de Kubernetes en funcionamiento con un solo comando skaffold dev que utiliza el archivo skaffold.yaml.
Poner en funcionamiento este proyecto en su máquina local es una tarea notoriamente dficult. Requiere cierto conocimiento del ecosistema Docker y Kubernetes. Si todavía está listo para el desafío, o si no tiene una vida, intente que funcione. Asegúrese de tener instalados Docker, Kubernetes y Skaffold. Establezca las variables de entorno requeridas y ejecute el siguiente comando:
skaffold dev
Y la aplicación Boom estará en funcionamiento, no se requieren configuración adicional y dependencias.
Para eliminar los recursos desplegados por Skaffold y detener todas las implementaciones, servicios y contenedores ejecutados
skaffold delete
Intente ejecutarlo y probarlo localmente solo si no tiene vida. ¿De lo contrario no soy el que culpa para que te rasces la cabeza? ¿Mientras intenta comprender este desorden de microservicios de comunicación basada en eventos entre los servicios?