gRPC, GraphQL или REST? Какая технология API лучше всего подходит для Golang?
Автор: Mario Carrion
Загружено: 2022-02-03
Просмотров: 28349
gRPC? GraphQL? REST? Какая технология API лучше всего подходит для Go/Golang? Какие инструменты доступны для их реализации?
В этом видео я расскажу о ключевых различиях между этими тремя популярными технологиями API, познакомлю вас с ними, поделюсь плюсами и минусами и выскажу своё мнение о том, какую технологию API лучше всего использовать в зависимости от сценария использования, а также приведу примеры инструментов для работы в Go/Golang.
== Что такое REST?
REST — это аббревиатура от REpresentational State Transfer, придуманная Роем Филдингом и представленная в его докторской диссертации. Это архитектурный стиль, определяющий принципы создания веб-сервисов. REST не является стандартом, но использует такие стандарты, как HTTP (и его глаголы для представления действий) и форматы полезной нагрузки/сообщений (например, JSON или XML), и это лишь некоторые из них.
==== Плюсы
■ Простота реализации и использования
■ Зрелость, практически все языки программирования позволяют реализовывать и разрабатывать REST API
==== Минусы
■ Избыточная выборка данных означает, что ответы содержат данные, которые не нужны клиенту
■ Недостаточная выборка данных означает необходимость вызова нескольких ресурсов для получения всех необходимых данных
==== Инструменты
■ https://github.com/goadesign/goa
■ https://github.com/go-swagger/go-swagger
■ https://github.com/deepmap/oapi-codegen
== Что такое GraphQL?
GraphQL — это язык запросов и обработки данных с открытым исходным кодом для API, а также среда выполнения запросов к существующим данным.
==== Плюсы
■ Отсутствие избыточной выборки данных, каждое поле указано явно.
■ Строго типизированный
==== Минусы
■ Сложность бэкенд-запросов, поскольку вся логика запросов переносится на бэкенд
■ Кэширование усложняется
== Что такое gRPC?
gRPC — это эффективный метод удалённого вызова процедур (RPC) с открытым исходным кодом, который генерирует кроссплатформенные клиентские и серверные привязки, определённые в Protocol Buffers.
==== Плюсы
■ Включает инструменты для генерации кода
■ Высокая производительность
==== Минусы
■ Сложнее реализовать
■ Нет (по умолчанию) поддержки браузеров
== Когда использовать REST, GraphQL или gRPC?
Мои рекомендации:
■ Используйте REST при создании API с чёткими сроками выполнения, где домен легко сопоставляется с ресурсами.
■ Используйте GraphQL при создании API, требующего больших объёмов запросов к ресурсам или требующего высокой производительности.
■ Используйте gRPC при создании внутренних API с высокой пропускной способностью и конкретными требованиями.
== Полезные ссылки
■ Архитектура программного обеспечения и проектирование систем на Go/Golang: • Software Architecture and System Design in...
== Все плейлисты Go/Golang
■ Создание микросервисов на Go/Golang: • Building Microservices in Golang/Go
■ Инструменты и пакеты Go/Golang: • Golang/Go Tools and Packages
■ Изучение паттернов многопоточности в Go/Golang: • Learning Go/Golang Concurrency Patterns
■ Изучение Go/Golang: • Learning Go/Golang
■ Изучение реляционных баз данных в Go/Golang: • Learning Go/Golang: Relational Databases
■ Тестирование в Go/Golang: • Testing in Golang/Go
== Социальные сети
■ / mariocarrion
■ / mario.carrion
■ / mariocarrion
00:00 — Начало
00:12 — Что такое обмен данными?
00:35 — REST: обмен данными, плюсы и минусы
04:32 — GraphSQL: обмен данными, плюсы и минусы
07:12 — gRPC: обмен данными, плюсы и минусы
10:25 — Какая технология API лучшая?
=== Кто я?
Привет👋🏼! Меня зовут Марио, я архитектор-практик и ведущий бэкенд-инженер с более чем 16-летним профессиональным опытом разработки всех видов программного обеспечения, включая локальные системы промышленной автоматизации, компоненты Linux Accessibility Desktop и браузера, а также распределенные рекламные микросервисы.
Каждую неделю я буду делиться с вами различными темами, которые я изучил, работая в небольших стартапах и крупных компаниях, включая процессы, которым я следовал годами для успешной реализации сложных корпоративных систем от начала до конца.
Подпишитесь, если вам нравятся разработка программного обеспечения, архитектура программного обеспечения и проектирование систем!
Так держать. Не сдавайтесь!
#golang #архитектурапрограммногообеспечения #проектированиесистем
=== Наш видеоблог
/ rubycarrion
=== Партнёрские ссылки
■ Магазин Amazon 🛒 https://www.amazon.com/shop/rubycarrion
■ Технические/нетехнические книги — рекомендует Марио Каррион 📚 https://www.amazon.com/shop/rubycarri...
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Некоторые из ссылок, приведённых выше, являются партнёрскими....
Доступные форматы для скачивания:
Скачать видео mp4
-
Информация по загрузке: