Durch das Verwerfen von REST verlieren Sie viel mehr als nur HATEOAS. Wenn Ihre Microservices öffentlich sind (und es eine gute Idee ist, dass sie öffentlich sind oder zumindest dazu tendieren, eines Tages öffentlich zu sein¹), ist die Verwendung von etwas anderem als REST und SOAP problematisch:
Einige Entwickler haben noch nie AMQP verwendet.
Einige haben AMQP verwendet, sind aber häufig mit REST und SOAP besser vertraut.
AMQP-Bibliotheken für einige Sprachen sind nicht besonders einfach.
Das manuelle Experimentieren mit dem Dienst ist sehr begrenzt: Ich kann CURL verwenden, um alle Anforderungen an Amazon S3 zu richten. Was muss ich auf meinem Computer installieren , wenn ich mit einer AMQP-Variante von S3 spielen möchte?
Das Debuggen von REST und SOAP ist einfach. Ich verfolge nur den HTTP-Austausch und analysiere ihn. Ich bin nicht sicher, mit welchen Tools ich AMQP-Austausche debuggen soll.
AMQP ist großartig, wird jedoch für einen ganz bestimmten Zweck des Austauschs auf der Grundlage von Ereignissen durchgeführt. Obwohl es technisch möglich ist, RPC mit AMQP zu erstellen, ist dies nicht der primäre Zweck.
Der asynchrone Aspekt ist ebenfalls wichtig. Manchmal ist es ein Vorteil: Ich möchte die Benutzeroberfläche einer App nicht blockieren, während Anfragen an Server gestellt werden. Manchmal macht es die Dinge nur schwieriger, als sie sein müssen: Wenn ich eine Dateisicherung von Amazon S3 wiederherstellen muss, weil die lokale beschädigt war, und dann die Sicherung wiederherstellen möchte, benötigt meine Batchdatei unbedingt CURL, um ihren Job zu beenden, bevor ich fortfahre. und ein synchroner Betrieb (mit einer bestimmten Zeitüberschreitung) ist vollkommen sinnvoll.
Behalten Sie REST für primäre Operationen bei:
und verwenden Sie AMQP für die Aufgaben, bei denen Messaging tatsächlich Sinn macht:
Verarbeitung aller Rechnungen ab September und Benachrichtigung der App, wenn der Bericht angezeigt werden kann (da der Vorgang normalerweise zwei bis zehn Minuten dauert),
Der Vorteil von AMQP ist hier der asynchrone Aspekt. Bei einer seit zehn Minuten anstehenden HTTP-Anforderung besteht eine gute Wahrscheinlichkeit, dass eine Zeitüberschreitung und andere Probleme auftreten.
Versenden der Informationen, dass die Sicherungen beschädigt wurden, an alle Interessenten, z. B. Supportmitarbeiter, Datenbankadministratoren, Überwachungsteams, Entwickler der Anwendung, die diese Datenbank verwendet, usw.
Der Vorteil von AMQP besteht unter anderem in der Möglichkeit, die Abonnenten hinzuzufügen, ohne die Anwendung zu ändern, die Sicherungen verfolgt und die Warnung auslöst, wenn eine beschädigte Anwendung gefunden wird.
¹ Ein öffentlicher Webdienst wird nicht unbedingt von Benutzern außerhalb eines Unternehmens verwendet. In großen oder mittelgroßen Unternehmen wird Ihr Service oft von anderen Abteilungen desselben Unternehmens genutzt und hat die gleichen Anforderungen wie derjenige, der von Dritten genutzt wird: Er sollte jedem Anruf misstrauen (der Tatsache, dass jemand Ihnen nie begegnet Wenn Sie erfahren, wer Ihren Service in der gleichen Firma anruft, die Sie auch haben, bedeutet dies nicht, dass er seine Sicherheitsprobleme nicht ausnutzt. Es sollte ordnungsgemäß dokumentiert werden (da derselbe Inder nicht unbedingt Ihre Telefonnummer kennt und auch nicht unbedingt Englisch sprechen usw.