Запись архитектурного решения: API на JSON или gRPC
Состояние
Принято
Контекст
Мы проектируем API для нового сервиса, которым будут пользоваться несколько клиентов. Мы рассматривали два варианта реализации API: JSON поверх HTTP или gRPC.
JSON поверх HTTP — широко распространённый подход к созданию API, поддерживаемый многими языками программирования и фреймворками. Этот подход прост, лёгок и понятен, что делает его хорошим выбором для многих проектов. Однако он может быть менее эффективен, чем другие варианты, особенно при обработке больших объёмов данных.
gRPC, напротив, — более новая технология, предлагающая более эффективный способ создания API. Для передачи данных он использует двоичную сериализацию, которая может быть быстрее и компактнее JSON. gRPC также поддерживает двунаправленную потоковую передачу, что делает его хорошим выбором для приложений реального времени.
Решение
Взвесив плюсы и минусы обоих вариантов, мы решили использовать для нашего API gRPC. Хотя JSON поверх HTTP — более простой вариант, мы считаем, что gRPC обеспечит более эффективное и масштабируемое решение для нашего сервиса. Мы также ожидаем, что наш API будет обрабатывать большое количество данных, и двоичная сериализация gRPC будет эффективнее в этом случае.
Кроме того, мы считаем, что поддержка двунаправленной потоковой передачи в gRPC будет полезна для приложений реального времени, которые мы можем разработать в будущем.
Последствия
Выбрав gRPC, нам придётся использовать другой набор инструментов и библиотек для создания нашего API по сравнению с JSON поверх HTTP. Это может потребовать дополнительного времени и усилий на изучение и внедрение этих технологий. Кроме того, клиентам, которые хотят использовать наш API, придётся использовать совместимые с gRPC библиотеки, которые могут быть не так широко поддержаны, как библиотеки JSON поверх HTTP.
Однако мы считаем, что преимущества использования gRPC перевешивают эти потенциальные недостатки, и уверены, что это решение приведёт к созданию более эффективного и масштабируемого API.