Odrzucając REST, tracisz znacznie więcej niż tylko HATEOAS. Jeśli twoje mikrousługi są publiczne (i dobrym pomysłem jest, aby były publiczne, a przynajmniej pewnego dnia stają się publiczne¹), używanie czegoś innego niż REST i SOAP byłoby problematyczne:
Niektórzy programiści nigdy nie używali AMQP,
Niektórzy korzystali z AMQP, ale często lepiej znają REST i SOAP,
Biblioteki AMQP dla niektórych języków nie są szczególnie proste,
Ręczne eksperymentowanie z usługą jest bardzo ograniczone: mogę użyć CURL do wykonania dowolnego żądania do Amazon S3; co powinienem zainstalować na swoim komputerze, jeśli chcę grać z wariantem S3 AMQP?
Debugowanie REST i SOAP jest łatwe. Po prostu śledzę wymiany HTTP i analizuję je. Nie jestem pewien, jakich narzędzi powinienem użyć do debugowania wymiany AMQP.
AMQP jest świetny, ale odbywa się w bardzo konkretnym celu wymiany opartej na zdarzeniach. Chociaż technicznie możliwe jest wykonywanie RPC z AMQP, nie jest to jego główny cel.
Ważny jest także aspekt asynchroniczny. Czasami jest to korzyść: nie chcę blokować interfejsu użytkownika aplikacji podczas wysyłania żądań do serwerów. Czasami po prostu utrudnia to zadanie: jeśli muszę odzyskać kopię zapasową pliku z Amazon S3, ponieważ lokalna została uszkodzona, a następnie przywrócić kopię zapasową, mój plik wsadowy musi koniecznie CURL, aby zakończyć zadanie przed kontynuowaniem, a synchroniczne działanie (z określonym limitem czasu) ma sens.
Zachowaj REST dla podstawowych operacji:
Uzyskanie produktu,
Przechowywanie faktury,
i używaj AMQP do zadań, w których przesyłanie wiadomości ma sens:
Przetwarzanie wszystkich faktur od września i powiadamianie aplikacji, gdy raport jest gotowy do wyświetlenia (biorąc pod uwagę, że operacja trwa zwykle od dwóch do dziesięciu minut),
Zaletą AMQP jest tutaj aspekt asynchroniczny. Żądanie HTTP oczekujące na dziesięć minut ma duże szanse na przekroczenie limitu czasu i inne problemy.
Wysłanie informacji, że kopie zapasowe zostały uszkodzone dla każdego, kto może być zainteresowany, takich jak osoby obsługujące, administratorzy baz danych, zespół monitorujący, twórcy aplikacji korzystającej z tej bazy danych itp.
Zaletą AMQP jest między innymi możliwość dodawania subskrybentów bez zmiany aplikacji, która śledzi kopie zapasowe i uruchamia alert, gdy znajdzie uszkodzony.
¹ Publiczna usługa internetowa niekoniecznie jest używana przez użytkowników spoza firmy. W dużych i średnich firmach z twoich usług często korzystają inne oddziały tej samej firmy i mają takie same wymagania, jak te, które byłyby stosowane przez osoby trzecie: nie powinny ufać żadnym połączeniom (fakt, że jakiś facet nigdy nie Słyszałem o tym, kto dzwoni do Twojej usługi, działa w tej samej firmie, co Ty nie oznacza, że nie wykorzysta jej problemów związanych z bezpieczeństwem), powinien być odpowiednio udokumentowany (ponieważ ten sam Indianin niekoniecznie zna Twój numer telefonu i niekoniecznie znać angielski) itp.