Вопрос по поводу API
Асторологи объявили день обсуждения API - у меня тоже вопрос про API. В одной из наших групп разработки сейчас делают платформу для новых сервисов, и поступило предложение задизайнить весь API под CQRS и асинхронную модель.
Предлагается на любой "чих" вместо синхронной операции и ответа общение разбить на 2 этапа: (1) постановка задания в очередь и ответ с идентификатором задания, и (2) через отдельный API идет получение результатов выполнения этого задания. После того, как мы поштормили, я склонен согласиться, что это достаточно мощный инструмент и у него есть ряд плюсов (асинхронность из коробки, значит более отзывчивый интерфейс + более удобное разделение компонент процессинга команд + маштабирование не через аппликейшен-слой а через слой обработчиков событий это может добавить удобства и сделать аппликейшен-слой менее "убиваемым").
Что меня лично смутило: что этот метод предлагается использовать по умолчанию. В моей практике задач, которые бы обязательно требовали асинхронного исполнения был примерно 1%. В минусах - чуть больше телодвижений со стороны девелоперов при разработке, и пока не очень понятно, насколько это всё будет удобно в отладке/тестировании.
Важное пояснение: предполагается сделать синхронную сервис-обертку вокруг этого API такую что если какому-то внешнему клиенту потребуется синхронный API, то он будет достаточно легко предоставлен путем "разрешения" в конфиге.
Вопрос: кто-нибудь проектировал апи по такой модели by default? Можете поделиться lessons learned?
Comments