• Formerly Platform.sh
  • Contact us
  • Documentation
  • Login
Watch a demoFree trial
Blog
Blog
BlogProduktFallstudienNachrichtenInsights
Blog

Entwickeln Sie einen Microservice, der Ihren Anforderungen entspricht

MicroservicesSymfonyDrupalAnwendungsmodernisierungSicherheitDatenschutzBenutzerverwaltung
15 Dezember 2025
Teilen Sie
Diese Seite wurde von unseren Experten auf Englisch verfasst und mithilfe einer KI übersetzt, um Ihnen einen schnellen Zugriff zu ermöglichen! Die Originalversion finden Sie hier.

Dieser Blog basiert auf dem Vortrag von Haylee Millar auf der Symfony 2024-Konferenz. Haley ist Produktingenieurin bei Upsun. Wir haben KI-Tools für die Transkription und zur Verbesserung der Struktur und Klarheit der Inhalte eingesetzt.

Wenn sie mit einem veralteten System konfrontiert sind, das neue Features benötigt, stehen viele Entwicklungsteams vor einer Entscheidung. Patching Sie das alte System und riskieren technische Schulden oder wagen Sie den Sprung in die Microservices-Architektur? Dies ist die Geschichte, wie ein Team diese Entscheidung getroffen hat und was es dabei gelernt hat.

Was ist ein Microservice?

Ein Microservice ist ein unabhängiger Dienst, der über APIs mit anderen Diensten kommuniziert. Jeder Dienst ist lose gekoppelt und kann eigenständig erstellt, bereitgestellt und skaliert werden. Er muss keine eigene Datenbank haben, aber viele haben eine. Der Schlüssel ist die Trennung, sodass ein Dienst geändert werden kann, ohne dass Änderungen in der gesamten Anwendung erforderlich sind.

Stellen Sie sich das wie eine Restaurantküche vor. Bei einem monolithischen Ansatz kümmert sich ein Koch um alles – Vorspeisen, Hauptgerichte, Desserts und Getränke. Bei Microservices gibt es spezialisierte Stationen: einen Salatkoch, einen Grillmeister, einen Konditor und einen Barkeeper, die jeweils Experten auf ihrem Gebiet sind, sich aber abstimmen, um komplette Mahlzeiten zu servieren.

Vorteile

  • Skalierbarkeit: Fügen Sie den Diensten nach Bedarf Ressourcen hinzu, anstatt die gesamte App zu skalieren.
  • Geschwindigkeit: Kleinere Codebasen ermöglichen eine schnellere Entwicklung und Bereitstellung.
  • Technologische Freiheit: Wählen Sie den Stack, der zu jedem Dienst passt. Sie müssen nicht überall dieselbe Sprache oder dasselbe Framework verwenden.
  • Fehlerisolierung: Ein Dienst kann fehlerfrei ausfallen, ohne die gesamte Anwendung lahmzulegen. Sie können die performance herabsetzen, anstatt offline zu gehen.

Nachteile

  • Komplexität: Mehr Dienste bedeuten mehr bewegliche Teile. Netzwerkaufrufe ersetzen prozessinterne Aufrufe. Daten können an mehr als einem Ort gespeichert sein, was die Konsistenz erschwert.
  • Debugging: Es kann schwierig sein, die Ursache eines Problems in einem verteilten System zu lokalisieren. Eine starke Protokollierung, Anfrage-IDs und verteiltes Tracing helfen dabei.
  • Sicherheitsfläche: Mehr Dienste und mehr Netzwerkpfade bedeuten mehr zu sichernde Elemente.

Wann sollten Sie sich für Microservices entscheiden?

Microservices können eine geeignete Lösung sein, wenn mehrere Teams Autonomie benötigen, wenn sich verschiedene Features mit unterschiedlicher Geschwindigkeit weiterentwickeln und wenn Sie eine unabhängige Entwicklung, Bereitstellung und Skalierung für bestimmte Teile der Anwendung benötigen. Sie sind nicht die einzige Antwort. In der Regel gibt es mehrere Möglichkeiten, ein Problem zu lösen. Wählen Sie den Ansatz, der Ihren Anforderungen und Einschränkungen am besten entspricht.

Das eigentliche Problem, das wir lösen mussten

Unser Team ist für die Kontoverwaltung zuständig. Wir betrieben eine interne Website, die auf einem Drupal-Monolithen basierte. Wir planten, diese aus dem Verkehr zu ziehen, mussten jedoch zunächst ein akutes Problem lösen: den Missbrauch des Produkts durch Benutzer.

Wir hätten der Drupal-App neue Features zum Schutz vor Missbrauch hinzufügen können. Wir haben uns dagegen entschieden. Gründe:

  • Wir wollten ein System, das wir auslaufen lassen wollten, nicht zusätzlich belasten.
  • Wir wollten schnell vorankommen, ohne durch Drupal-spezifische Anforderungen eingeschränkt zu sein.
  • Wir hatten bereits Dienste außerhalb von Drupal, die mit Drupal integriert waren, wie Authentifizierung und Organisationen.

Wir schlugen einen neuen Microservice für die Implementierung einer Anti-Missbrauchs-Logik vor. Dieser Vorschlag fand in unseren Diskussionen großen Anklang.

Der von uns entwickelte Dienst: KYC

Wir haben einen Symfony-Microservice namens Know Your Customer (KYC) entwickelt. KYC überprüft die Identität und das Risiko von Kunden. Wir haben bewusst klein angefangen, damit wir schnell liefern und lernen konnten.

Klein und smart anfangen

Wir haben uns auf fünf Bausteine konzentriert:

  • Die Synchronisierung der Benutzerdaten stellte sicher, dass der Dienst über die erforderlichen Fakten verfügte.
  • Ein Endpunkt für die Benutzerbewertung für das Support-Team.
  • Endpunkt für die Überprüfung durch Mitarbeiter und die Möglichkeit, einen Benutzer zu sperren, wenn ein Missbrauch festgestellt wird.
  • Grant-Listen, damit interne Mitarbeiter bei Bedarf Tests durchführen und Umgehungen vornehmen können.

Wir haben die Zuständigkeiten klar geregelt. KYC berechnete eine Bewertung, entschied jedoch nicht über die Begrenzung von Ressourcen. Unser Kontoservice rief die KYC-Bewertung ab und entschied, ob eine Benutzeraktion fortgesetzt oder gestoppt werden sollte.

Die Auswahl der Stack- und Tools

  • PHP mit Symfony-Framework, damit wir uns auf die Logik konzentrieren konnten, anstatt alles von Grund auf neu zu schreiben.
  • PHPUnit für Tests.
  • GitLab CI/CD für kontinuierliche Integration, Bereitstellung und automatische Implementierung.
  • Ein Scheduler für Synchronisierungsaufgaben und Grant-Listen.
    Gängige Bundles und Bibliotheken: JOSE-Framework, LexikJWTAuthenticationBundle für JWT, CORS, Doctrine und Doctrine Migrations.

Ab Version 1.7 haben wir Symfony Messenger hinzugefügt, um IP-Scores von einem externen Dienst zu synchronisieren.

Hosting und Workflow

Da wir ein Platform-as-a-Service-Unternehmen sind, haben wir den Dienst auf unserer Plattform gehostet. Für Teams, die sich für die Bereitstellung von Symfony interessieren, haben wir gezeigt, wie man eine Demo-App mit der Symfony-Befehlszeile einrichtet und wie man ein bestehendes Projekt initialisiert, die erforderlichen Dateien hinzufügt und bereitstellt.

Wie es sich entwickelt hat

Wir haben das KYC-Design im Juni 2022 fertiggestellt. Nach der Einigung der Stakeholder dauerte die Umsetzung etwa sechs Monate. Seitdem haben wir ein konstantes Release-Tempo beibehalten. Zum Zeitpunkt des Vortrags waren wir bei Version 2.23 angelangt.

Was sich zwischen 1.0 und 2.23 geändert hat:

  • Weitere Bewertungstypen: Gesamtrisiko, bekannter Kunde, kostenlose Testversionen und Tests.
  • Zahlungsprofile, die bei der Entscheidung helfen, welche Zahlungsmethoden zugelassen werden sollen.
  • Externe Risikoprüfungen für IP und Zahlungsmethode.
  • Erste Schritte in Richtung maschinelles Lernen.
  • Laufende Arbeiten zur Verbesserung der Logik der Nutzerbewertung.

Was gut funktioniert hat

  • Schnelle Iteration: KYC ist ein kleiner Dienst und nicht Teil des Monolithen, sodass wir schnell Releases veröffentlichen können. Wir können mehrere Releases pro Tag veröffentlichen, ohne die gesamte Anwendung zu gefährden.
  • Mehr Features in kürzerer Zeit: Dank dieser Geschwindigkeit können wir nützliche Features für das Support-Team hinzufügen und die Bewertungslogik kontinuierlich verbessern.
  • Aktueller Stack: Symfony und PHP bleiben auf dem neuesten Stand, ohne an ein älteres System gebunden zu sein, das wir auslaufen lassen wollen.
  • Ressourceneinsparungen: Schnellere Entwicklung und gezielte Skalierung führen zu Zeit- und Kosteneinsparungen.

Die Herausforderungen

  • Datensynchronisation: Die Synchronisation der Daten mit der Quelle der Wahrheit erfordert sorgfältige Arbeit.
  • Komplexität für den Support: Ein neuer Service führt zu neuen Wegen für das Ticketmanagement. Der Support bearbeitet nun Fälle, in denen Benutzer blockiert sind, was zu Änderungen im Workflow führt.
  • Overhead für verteilte Systeme: Die Verwaltung mehrerer Dienste führte zu einem operativen Overhead, der bei dem monolithischen System nicht vorhanden war.

Q&A-Highlights

Welche Tools waren für Microservices am hilfreichsten?
Die größte Errungenschaft war die Wahl von Symfony. Es ist leichtgewichtig und modular, und wir sind bereits mit PHP vertraut. Die Bundles lieferten uns die benötigten Bausteine, ohne dass wir aufwendige benutzerdefinierte Tools benötigten.

Versionen Sie Ihre API-Endpunkte, z. B. /v1 und /v2? Das haben
wir bisher noch nicht getan, aber es ist eine gute Idee, darüber nachzudenken.

Wie sind Sie mit dem Datenschutz umgegangen?
Wir vermeiden es, personenbezogene Daten in KYC zu speichern, wenn dies nicht erforderlich ist. Stattdessen verwenden wir eindeutige IDs, um bei Bedarf personenbezogene Daten im Kontoservice abzurufen. Während der Synchronisierung stellen wir sicher, dass wir nur das Notwendige übertragen.

Teilen Sie das Programmieren zwischen Symfony-Projekten? Derzeit
nicht. Wir haben einfach mit den Standard-Bundles begonnen. Gemeinsame Pakete könnten später sinnvoll sein, wenn der Bedarf wächst.

Was ist mit dem Drupal-Monolithen?
Der existiert noch. Wir gehen schrittweise vor. Man kann nicht alles auf einmal umschreiben. Wir nehmen Teile heraus und implementieren sie auf modularere Weise neu. Wo immer möglich, suchen wir nach bestehenden Produkten, anstatt alles von Grund auf neu zu entwickeln.

Wie haben Sie die Synchronisierung externer Dienste und die Verfügbarkeit gehandhabt? Die größte Herausforderung
bestand darin, die Benutzerdaten auf dem neuesten Stand zu halten. Wir haben eine Aktualisierungslogik hinzugefügt und sichergestellt, dass die Punktzahlen berechnet werden, sobald Konten erstellt werden. Wir verwenden einen Synchronisierungs-Worker und einen asynchronen Pfad dahinter, sodass wir auch dann zurechtkommen, wenn eine Punktzahl nicht sofort verfügbar ist.

Nützliche Erkenntnisse

  • Fangen Sie klein an. Ein kleiner Ausschnitt mit klaren Zuständigkeiten kann schnell einen Mehrwert liefern.
  • Halten Sie den Entscheidungspunkt nah an der Domäne. Lassen Sie die Bewertung in einem Dienst und die Durchsetzung in einem anderen erfolgen, wenn dies zu Ihrer Architektur passt.
  • Investieren Sie frühzeitig in Protokolle, Anforderungs-IDs und Nachverfolgung. Sie zahlen sich aus, sobald zum ersten Mal ein dienstübergreifender Fehler auftritt.
  • Planen Sie die Synchronisierung. Kennen Sie Ihre Quelle der Wahrheit und entwerfen Sie vom ersten Tag an Aktualisierungspfade.
  • Rechnen Sie mit einigen Änderungen beim Support. Neue Dienste verändern oft den Ablauf von Tickets.

Mikroservices sind keine Zauberei. Sie sind eine Möglichkeit, schneller voranzukommen, wenn Teams Autonomie benötigen und Teile Ihres Systems sich mit unterschiedlicher Geschwindigkeit ändern. Für uns bedeutete die Ausgliederung von KYC als Mikroservice, dass wir schnell Features zur Missbrauchsbekämpfung bereitstellen, unseren Stack auf dem neuesten Stand halten und vermeiden konnten, einen Monolithen, den wir ausmustern wollen, zusätzlich zu belasten.

Bleiben Sie auf dem Laufenden

Abonnieren Sie unseren monatlichen Newsletter.

Ihr größtes Werk
steht vor der Tür

Kostenloser Test
UpsunFormerly Platform.sh

Join our monthly newsletter

Compliant and validated

ISO/IEC 27001SOC 2 Type 2PCI L1HIPAATX-RAMP
© 2026 Upsun. All rights reserved.