Endpoints
Постоение API сервисов на основе gRPC + Google cloud Endpoints
Мотивация
Если несколько основных проблемных точек, если у вас много API.
API сервисов и их документация могут быть очень разнородными. Поддержка документации в коде и отдельном документе так же может отнимать значительное количество времени. Выдача и проверка прав доступа может быть неявной или непонятной Именно поэтому предлагается использовать дизайн API, в котором учтены эти проблемы.
Protobuf
Протокол API и документация к свойствам, методам и сервисам описывается в proto файлах согласно design guide.
Это позволяет автоматически генерировать структурированныую документацию. Потенциально генерировать клиентские биьлиотеки для испоьлзования api сторонними разработчиками.
OAuth2
Используется OAuth2 авторизация c refresh_token и scopes.
Токены выдаются и учитываются отдельной службой, в коде конкретного api нужно лишь порставить аннотации со списоком скоупов к методам. ESP nginx автоматически декодирует access_token, валидирует его и не пропускает запрос в код api, что снижает излишнюю нагрузку на код апи.
Фактически само приложение независимо от языка особо ничего про авторизацию не знает.
Применение refresh_token + access_token с JWT позволяет убрать необходимость использования кешируеюего слоя с хранением access_token, что положительно сказывается на расходе RAM и CPU.