2015-01-09 7 views
5

Ich lese the article on Microservices auf Martin Fowlers Seite und finde es ziemlich interessant. Jetzt plane ich die Strukturierung einer E-Commerce Web Application als Proof-of-Concept und frage mich, ob mein Konzept als Microservice Architektur betrachtet wird.Folgt mein Konzept einer Microservice-Architektur?

Die Architektur besteht aus drei Komponenten:

  • eine JavaScript-basierte einzelne Seite Anwendung, die mit einer REST-API
  • ein Server AJAX-Anfragen sendet, die durch den Aufruf von anderen Diensten empfangen JSON-Daten-Feeds (ich glaube, rufen Sie dieses Verhalten API-Gateway)
  • 3 Dienstleistungen: CatalogProvider, CustomersProvider, CheckoutProvider

Vorerst die Dienste alle API Endpun sind ts eines Magento (PHP) Shopsystems. In Zukunft plane ich dann, die Anbieter gegen andere Systeme auszutauschen.

Also meine Fragen sind:

  • MS werden als 'unabhängig einsetzbare' sein. Ich verstehe, dass wir in der Welt von JAVA über eine JAR- oder WAR-Datei sprechen, aber wie ist ein PHP-Dienst "unabhängig einsetzbar"?

  • Folgt mein Konzept NICHT den Prinzipien einer MS-Architektur, weil die Anbieter alle Teil eines großen (Magento) Systems sind?

Vielen Dank für das Lesen. Ich bin glücklich für irgendwelche Vorschläge.

Antwort

9

Es gibt nichts, das sagt, dass Architektur keine MS-Architektur ist, nur weil Sie Magento und PHP verwenden. Aber Sie müssen ein paar Dinge in Betracht ziehen:

  • Denken Sie in Bezug auf immer in der Lage, jeden der Dienste in jeder Sprache neu zu schreiben und irgendwo das Gesamtsystem sollte einfach weiter funktionieren.
  • Wenn Ihre Dienste nur Transformation/Schnittstelle sehr eng mit Magento verbunden sind und Sie können sie nicht einfach in Java/C#/Ruby neu schreiben, dann denke ich, Sie haben keine MS-Architektur.

    Für PHP-implementierbare Artefakte haben Sie in der Regel eine Paket- oder Versionierungsstrategie für Ihren Dienst. Auch wenn "deploy" in PHP normalerweise nur einen Ordner mit .php Dateien ersetzt. Und Sie sollten Code/Config nicht wirklich zwischen verschiedenen Diensten teilen. Sie können sogar deployment tools for PHP betrachten, wenn Sie einen zusätzlichen Schritt machen möchten.

    +0

    'Wenn Ihre Dienste nur Transformation/Schnittstelle sind sehr eng mit Magento verbunden und Sie können nicht einfach umschreiben sie in Java/C#/Ruby leicht, dann denke ich, Sie haben keine MS-Architektur.' -> Ich habe eine implementiert Magento-Modul, das die REST-API erweitert und den Client mit genau der erwarteten Datenstruktur versorgt. Der Dienst ist also sicher eng mit Magento verbunden, da er zum Beispiel seine Modelle verwendet. Aber ich denke, Sie können es immer noch als MSA betrachten, nicht wahr? – Rouzbeh

    +0

    @Rouzbeh, eine sehr späte Antwort auf diesen Thread, aber wie auch immer, hier ist es, da alle Dienste, die bei diesem Ansatz aktiviert werden, aus dem gleichen Magento-Repository/Datenbank arbeiten und daher nicht "unabhängig einsetzbar" sind, tut dies nicht scheinen in die MS-Architektur zu passen. Zum Beispiel muss ein Bestellservice Kundenreferenzen halten, um zu sagen, wer die Bestellung aufgegeben hat. Ich würde denken, dass die minimalen Kundeninformationen unabhängig von diesem Bestellservice in einem Format sein werden, wie es ihm gefällt. Dies würde ein gutes Stück der Denomination bedeuten, was wir bei einer MS-Architektur erleben werden. – user132797

    1

    Für die Microservice-Architektur gibt es SRP-Prinzip.Single Responsiblity-Prinzip.Jeder Dienst hat seine eigene Verantwortung.DB-Schema sollte auch zerlegt werden.Exportierende Dienste als Rest in einer monolithischen App nicht konvertieren eine monolithische App zu Mikro-Service-Anwendung.