Отбрасывая REST, вы теряете гораздо больше, чем просто HATEOAS. Если ваши микросервисы общедоступны (и для них будет хорошей идеей быть публичными или, по крайней мере, стремиться к общедоступности в один прекрасный день), использование чего-либо, кроме REST и SOAP, будет проблематичным:
Некоторые разработчики никогда не использовали AMQP,
Некоторые использовали AMQP, но часто гораздо лучше знакомы с REST и SOAP,
Библиотеки AMQP для некоторых языков не особенно просты,
Ручные эксперименты с сервисом очень ограничены: я могу использовать CURL для выполнения любого запроса к Amazon S3; что я должен установить на свой компьютер, если я хочу играть с вариантом AMQP S3?
Отладка REST и SOAP проста. Я просто отслеживаю обмены HTTP и анализирую их. Не уверен, какие инструменты я должен использовать для отладки AMQP-обменов.
AMQP великолепен, но он сделан для очень конкретной цели обмена, основанного на событиях. Хотя технически возможно сделать RPC с AMQP, это не является его основной целью.
Асинхронный аспект тоже важен. Иногда это полезно: я не хочу блокировать пользовательский интерфейс приложения при выполнении запросов к серверам. Иногда это только усложняет ситуацию: если мне нужно восстановить резервную копию файла из Amazon S3, потому что локальная была повреждена, а затем восстановить резервную копию, мой пакетный файл обязательно нуждается в CURL, чтобы завершить свою работу, прежде чем продолжить, и синхронная операция (с определенным таймаутом) имеет смысл.
Сохранить REST для основных операций:
Получение продукта,
Хранение счета,
и используйте AMQP для задач, где обмен сообщениями имеет смысл:
Обработка всех счетов за сентябрь и уведомление приложения о готовности отчета к показу (учитывая, что операция обычно занимает от двух до десяти минут),
Преимущество AMQP здесь заключается в его асинхронном аспекте. HTTP-запрос, ожидающий в течение десяти минут, может вызвать тайм-аут и другие проблемы.
Отправка информации о том, что резервные копии были повреждены всем, кого это может заинтересовать, например, сотрудникам службы поддержки, администраторам базы данных, команде мониторинга, разработчикам приложения, использующего эту базу данных, и т. Д.
Преимуществом AMQP здесь является, среди прочего, возможность добавлять подписчиков без изменения приложения, которое отслеживает резервные копии и выдает предупреждение, когда находит поврежденное.
Public Общедоступный веб-сервис не обязательно используется пользователями за пределами компании. В крупных или средних компаниях ваш сервис часто используется другими подразделениями той же компании и имеет те же требования, что и тот, который будет использоваться любой третьей стороной: он должен не доверять любому звонку (тот факт, что какой-то парень вы никогда слышать о том, кто звонит на ваш сервис, работает в той же компании, что и вы, не значит, что он не будет использовать ее проблемы безопасности), это должно быть должным образом задокументировано (потому что тот же самый индийский парень не обязательно знает ваш номер телефона и не обязательно знаю английский) и т. д.