Sehen Sie, auch wenn mir Microservices genauso viel Freude bereiten wie jedem anderen, denke ich, dass die Handhabung und das Debuggen große Kopfschmerzen bereiten? Ja. Aber die Microservice-Architektur ist unter Entwicklern und Personalvermittlern ein so heißes Thema, dass es falsch wäre, mein eigenes riesiges skalierbares Projekt, das produktionsbereit ist und gleichzeitig die Kosten niedrig oder gar nicht anhält, nicht in einer Sandbox zu platzieren, denn hey, wir sind alle pleite.
Herzlichen Glückwunsch! Sie wurden bei IceToMeetYou Inc. als Berater eingestellt und möchten ihre aktuelle Versandmanagementsoftware auf eine individuellere Lösung aktualisieren. IceToMeetYou Inc. ist ein Startup, das gerade eine Finanzierung in Höhe von rund 3 Milliarden US-Dollar für sein Produkt erhalten hat, das importierte Eiswürfel an einen in der Wüste festsitzenden Mann verkauft. Ihre derzeitige Aufgabenverwaltungssoftware ist zu klein und in ihrer Funktionalität eingeschränkt, um alle eingehenden Sendungen zu bewältigen, die dieser eine Typ, nennen wir ihn Dennis, seinen Smoothie kalt halten muss. Sie möchten ein Aufgabenverwaltungssystem aufbauen, das mehrere eingehende Bestellungen von Dennis bis zur Fertigstellung verarbeiten, ihren Arbeitspinguinen, die das Eis liefern, Aufträge zuweisen, den Fortschritt dieser Pinguine verfolgen und Echtzeitbenachrichtigungen über Statusaktualisierungen erhalten kann. Der CEO möchte daher gerne alle Fragen stellen, die zum Aufbau dieses Projekts beitragen können. Genau das werden wir tun, wenn wir anfangen, über den Projektaufbau nachzudenken …
Für dieses Projekt verwenden wir den folgenden Tech-Stack:
Backend: Java Spring Boot, da es ein leistungsstarkes Framework zum Erstellen von REST-APIs und Microservices ist und eine breite Palette von Tools wie Service Discovery, Cloud-Bereitstellungen und Kafka für ereignisgesteuerte Systeme bietet.
Frontend: Angular aufgrund seines robusten Front-End-Frameworks mit NgRx für die globale Statusverwaltung
Datenbank: MySQL/PostgreSQL (für relationale Daten), MongoDB (für Aufgabendaten)
Echtzeit-Updates: Kafka (für Event-Streaming) und WebSockets
Bereitstellung: Docker und Kubernetes für die Orchestrierung
Testen: JUnit, Jest und K6 (für Last- und Leistungstests)
Der Hauptzweck hier besteht darin, alle beweglichen Teile zu demonstrieren, wenn man über eine Webanwendung nachdenkt. Auch wenn diese Liste keinen Anspruch auf Vollständigkeit erhebt, besteht das Ziel darin, viele Grundlagen in einfachem Englisch abzudecken, damit dieser Prozess wiederholbar und ein Kinderspiel ist, wenn man über Unternehmensanwendungen nachdenkt. In jedem Abschnitt werde ich jeden Schritt vom Entwurf bis zur Bereitstellung, um als MVP der Version 1 zu gelten, anhand ausführlicher Blogs, Code-Demonstrationen, Diagramme und Denkprozesse vorstellen und, was am wichtigsten ist, stets sicherstellen, dass wir das Problem lösen.
→ Designprinzipien: Microservices-Prinzipien wie Dienstunabhängigkeit, Skalierbarkeit und Fehlertoleranz verstehen und implementieren
→ Service-Isolation:Wie man sich in seine eigenen Problembereiche aufteilt,
→ Kommunikation zwischen Diensten: Auswahl von Kommunikationsstrategien (REST-APIs, Kafka, WebSockets) und Handhabung der Datenkonsistenz über Dienste hinweg.
→ Dienstentwicklung:Implementierung einzelner Dienste mit Spring Boot, Handhabung von RESTful-Endpunkten und Sicherstellung einer ordnungsgemäßen Isolierung von Bedenken.
→ Authentifizierung und Sicherheit: Verwendung von JWTs, OAuth und Spring Security für sichere Benutzerauthentifizierung und rollenbasierte Zugriffskontrolle.
→ Datenbankverwaltung: Einrichten relationaler (MySQL/PostgreSQL) und NoSQL-Datenbanken (MongoDB), Optimierung der Datenspeicherung für Microservices und Abwicklung von Datenmigrationen.
→ Benutzeroberflächendesign:Erstellung einer nahtlosen Benutzererfahrung mit Angular
→ Zustandsverwaltung:Verwaltung des Anwendungsstatus mit NgRx für konsistente, reaktive Benutzerinteraktionen.
→ API-Integration:Anbindung des Angular-Frontends an Spring Boot-Backend-Dienste über RESTful-APIs und sichere Verwaltung der Datenübertragung.
→ Websockets & Event-Streaming: Implementierung von WebSockets für sofortige Updates und Kafka für zuverlässiges Event-Streaming zwischen Diensten.
→ Push-Benachrichtigungen: Bereitstellung von Aktualisierungen in Echtzeit für Benutzer und Gewährleistung einer effizienten Nachrichtenverteilung ohne Überlastung der Dienste.
→ Lasttests: Verwendung von K6 zur Bewertung des Systems unter Last, zur Identifizierung von Engpässen und zur Leistungsoptimierung von Microservices.
→ Protokollierung und Überwachung:Implementierung der Protokollierung mit ELK oder alternativen Tools, Verfolgung des Anwendungszustands und Einrichtung von Warnungen für kritische Fehler.
→ Containerisierung mit Docker: Erstellen von Docker-Images für jeden Dienst, Erstellen einer konsistenten Laufzeitumgebung für einfachere Skalierung.
→ Orchestrierung mit Kubernetes:Verwendung von Kubernetes zur Verwaltung von Bereitstellungen, automatischer Skalierung, Lastausgleich und Ausfallsicherheit.
→ Cloud Hosting: Hosting-Dienste auf Cloud-Plattformen (AWS, Azure, GCP), die Aspekte wie Kosteneffizienz, Sicherheit und Zuverlässigkeit abdecken.
Für den Anfang handelt es sich um eine Sandbox, sodass dieses Projekt zum Lernen und zur Demonstration gedacht ist. Wichtiger Hinweis hier: Dies ist eine zu 100 % überentwickelte Lösung, die von einem Mann im Keller von Grund auf neu gebaut wurde. Es ist nicht so ernst.
Ich werde dieses Projekt jeden Tag aktualisieren und daran arbeiten, also rechnen Sie mit häufigen Updates!
Dies ist auch eine Übung dazu, wie die Entwicklung innerhalb einer Teamumgebung aussehen würde. Wir werden also in „Sprints“ arbeiten, um unsere Ziele mit Rückblicken zu erreichen (ich schätze, mit mir selbst?), um zu sehen, was richtig gelaufen ist, was ist schief gelaufen, auf welche Blocker sind wir gestoßen und wie können wir sie lösen? Ich werde alle 5 Beiträge oder so ein kurzes Retro-Update durchführen.
NOCH EINES ... Ich bin IMMER hungrig nach Feedback. Wenn etwas keinen Sinn ergibt oder nicht klar genug ist, lassen Sie es mich in den Kommentaren wissen.
Also, es wird spät, Sprint 1 beginnt morgen, haltet eure Hüte fest, es wird ein langer Tag…
Das obige ist der detaillierte Inhalt vonErstellen einer skalierbaren Microservices-Anwendung mit Java Spring Boot und Angular. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!