Treten Sie der Talkhouse -Familie bei? | WEBRTC -basierter Peer -to -Peer -Voice, Videoanruf und Messaging -Web -App -Build mit Mern Stack
Eine ereignisgesteuerte asynchronen Kommunikationsbasis-basierte Microservices-Architektur-E-Commerce-App, die mit Express, TypeScript, Nats-Streaming und Next.js erstellt wurde
Es handelt sich um eine E-Commerce-basierte Web-App zum Kauf und Verkauf von Tickets verschiedener Live- und lustiger Veranstaltungen in der Stadt, die auf der Microservices-Architektur stattfinden. Die App ist in mehrere individuelle Dienste unterteilt, die über einen Veranstaltungsbus miteinander miteinander veröffentlichen. Jeder Dienst ist verantwortlich für die Behandlung und Implementierung einer bestimmten Funktion der App wie Auth Service, die Authentifizierung übernimmt, Bestellungen erledigt Bestellungen, Payments Service implementiert Benutzerzahlungen und alle diese Dienste funktionieren und kommunizieren asynchron über einen Eventbus (Nats-Streaming), um die gesamte App auszuführen
Die Verwendung von Microservices -Architektur und das Nicht -Stützpunkt auf das Monoloith -Muster macht die App haltbarer, fehlertoleranter, hoch verfügbar und erhöht die Up -Zeit der App. Wenn eines der Dienste abstürzt, sind andere Teile der App weiterhin funktional und für die Benutzer zur Verfügung. Microservices und verteilte Systeme sind das Herz der modernen Software- und Backend -Engineering.
Next.js für die Serverseite Rendering und das Erstellen von FrontendExpress.js wird zum Bau des Backends verwendetMongodb als DatenbankMongoose als ORMTypescript , Backend ist vollständig in Typenkript geschrieben, um Kopfschmerzen zu verhindern, wenn die infinierte Anzahl von Ereignissen ohne Hinweise herumfließenStripe für den Umgang mit ZahlungenJest and Supertest zum TestenDocker für ContainerisierungKubernetes für Conatiner OrchestrationSkaffold Befehlszeilen-Tool, das die kontinuierliche Entwicklung für Kubernetes-native Anwendungen erleichtert. Die Arbeit mit Kubernetes und verschiedenen Kubernetes -Diensten und die Bereitstellung von Kubernetes und die Bereitstellung von Kubernetes -Diensten.NATS Streaming wird als Eventbus oder Nachrichtenwarteschlange zum Veröffentlichen und zur Behandlung der von verschiedenen Diensten ausgestellten Ereignisse verwendet.Bull.js ist ein schnelles und robustes Warteschlangensystem. Es wird verwendet, um den Zahlungsablauf -Timer zu implementieren.Die App ist in 7 Dienste unterteilt, die eine bestimmte Funktion und Funktionalität der App verarbeiten und implementieren:
auth übernimmt die gesamte App -Authentifizierung und -autorisierung. JWT- und Cookie -basierte Authentifizierung wird verwendet.expiration behandelt den Zahlungsablauf -Timer, um sicherzustellen, dass der Benutzer innerhalb eines bestimmten Zeitrahmens zahlt.orders zum Umgang mit Benutzerbestellungenpayments für den Umgang mit Streifenzahlungentickets für den Umgang mit Tickets (Erstellen, Aktualisieren, Abrufen). Anstatt Produkte zu verkaufen, verkauft diese E-Commerce-App Tickets für verschiedene Live-Events in der Stadt.common sind alle gemeinsamen Funktionen wie Anforderungen, Fehlerbehandlung und andere Middlewares und Funktionen, die von verschiedenen Diensten gemeinsam genutzt werden. Dieser Dienst wird als NPM -Paket veröffentlicht und in anderen Diensten installiert, die verwendet werden sollen.client verarbeitet und implementiert die Frontend der App.infra verwaltet alle Kubernetes -Dateien für Bereitstellungs- und Dienstdateien (.YAML), mit denen die App ausgeführt wird Jeder Dienst, jeder MogongoDB-Datenbank und der Nats-Streaming-Server werden als Docker-Container angedockt. Die Docker -Conatiner werden von ihren jeweiligen Kubernetes -Bereitstellungen im Infra -Verzeichnis verwaltet und orchestriert. Die Kommunikation zwischen verschiedenen Kuberentes -Bereitstellungen unterliegt dem Service -Objekttyp. Schließlich Eingangsservice, der Ingress-Nginx (ein Einglieder-Controller für Kubernetes mit Nginx) als Reverse Proxy und einen Lastausgleich für Proxy- oder Direktanforderungen an ihre jeweiligen Dienste im Rahmen der ticketing.dev Hostname verwendet. Skafold wird verwendet, um alle Kubernetes -Bereitstellungen und -Dienste mit einem einzigen skaffold dev auszuführen, das Skafold.yaml -Datei verwendet.
Dieses Projekt auf Ihrer lokalen Maschine aufzunehmen, ist eine notorisch dffikulte Aufgabe. Es erfordert ein gewisses Wissen über Docker und Kubernetes -Ökosystem. Wenn Sie immer noch für die Herausforderung stehen oder kein Leben haben, versuchen Sie, es zum Laufen zu bringen. Stellen Sie sicher, dass Sie Docker, Kubernetes und Skafold installiert haben. Stellen Sie die erforderlichen Umweltvariablen ein und führen Sie den folgenden Befehl aus:
skaffold dev
Und die Boom -App wird in Betrieb sein, kein zusätzliches Setup und keine Abhängigkeiten erforderlich.
So löschen Sie alle von Skafold bereitgestellten Ressourcen und stoppen Sie alle Bereitstellungen, Dienste und Container aus
skaffold delete
Versuchen Sie, es nur lokal zu laufen und zu testen, wenn Sie kein Leben haben. Ansonsten bin ich nicht derjenige, der für Sie verantwortlich bin, wenn Sie sich am Kopf kratzen? Beim Versuch, dieses Microservices-Durcheinander einer ereignisgesteuerten Kommunikation zwischen den Diensten zu verstehen?