Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

Малоизвестные инструменты разработки: gRPC и SQL Syntax Intellisense

Отредактировано

Описываем три инструмента разработки, которые малоизвестны, но очень полезны: gRPC, Protobuf и SQL Syntax Intellisense.

2К открытий3К показов

Добрый день! Меня зовут Михаил Альфа и я рад поделиться информацией о крайне полезных инструментах, которыми пользуюсь сам, но которые «не на слуху».

gRPC + Protobuf

Первый «из» — отличное средство для проектирования и реализации высокопроизводительного API. gRPC — это RPC-фреймворк, разработанный Google и закрывающий потребности Backend и Frontend разработки. Его использование выглядит следующим образом:

  1. Описываем схему взаимодействия (контракт): для этого используется специальный формат описания спецификаций, называемый `protobuf`
  2. Из `protobuf`-спецификации генерируем интерфейсы для любого из языков, перечисленных ниже, которые будем имплементировать на Backend-стороне
  3. Из спецификации генерируем клиентский код — полностью готовую к использованию библиотеку для любого из языков, перечисленных ниже
  4. Вы прекрасны — осталось написать Backend-код, который будет соответствовать сгенерированным интерфейсам и ваше API готово к использованию

Синтаксис `protobuf` выглядит, например, вот так:

Малоизвестные инструменты разработки: gRPC и SQL Syntax Intellisense 1

Использовать gRPC или нет — решать вам, все зависит от требований и потребностей, но чтобы склонить чашу весов за «за» — вот несколько аргументов:

  • gRPC очень производительный, объем передаваемых данных благодаря бинарному формату имеет меньший размер, чем JSON с тем же набором полей до 50% (то есть в два раза!)
  • Есть возможность стриминга из коробки (привет приложениям реального времени и пока отдельному инструментарию в виде WebSocket)
  • Гибкость API — вы просто пишите функции на бэкенде, которые будут вызываться фронтендом, можно абстрагироваться и представить, что ваш бэкенд — является продолжением фронтенда
  • Ориентированность на межсервисные коммуникации — gRPC создавался для удобства общения между различными сервисами и это его родная стихия

Минусы, правда, тоже есть, я опишу главный из них — урезанная поддержка браузеров — в них gRPC будет работать в режиме совместимости поверх обычного HTTP.

С точки зрения разработки это ничего не меняет, но вы теряете некоторые преимущества, которые gRPC несет с собой. Есть надежда, что в скором времени в браузерах появится API, способное устранить этот недостаток, но даже и с ним жить можно.

Кроме того, к счастью, Frontend не ограничивается одними лишь браузерами — есть нативные приложения для множества платформ, где можно разгуляться вполную.

Список языков с официальной поддержкой от Google:

Список других языков, с поддержкой от сообщества (что не означает худшую поддержку):

Полный список всех поддерживаемых языков и библиотек можно начать искать тут и найти тут.

Как можно заметить — найти что-то, что было бы тяжело использовать совместно с gRPC — надо постараться.

SQL Syntax Intellisense

Еще один, крайне-полезный инструмент, про который я бы очень хотел рассказать: плагин Database Tools and SQL для IntelliJ IDE. Он может быть в стандартной поставке некоторых IDE — IDEA Ultimate, PyCharm Professional, PhpStorm, RubyMine, CLion, AppCode, GoLand и Rider. Либо может быть использован как отдельная IDE — DataGrip. По сути, данный плагин и представляет собой такую мини-IDE DataGrip.

Какие он дает нам возможности и почему он вообще тут? Собственно, формальный перечень дан здесь. А я расскажу о том, чем пользуюсь, непосредственно, сам:

  1. Подсветка SQL-синтаксиса (любого вида SQL, и не только SQL)
  2. Автодополнение, основанное на синхронизации с вашей базой данных
  3. Изредка — быстрый просмотр таблиц

Я прикреплю скриншоты напрямую из IDEA, чтобы показать, как это выглядит:

Малоизвестные инструменты разработки: gRPC и SQL Syntax Intellisense 2
Малоизвестные инструменты разработки: gRPC и SQL Syntax Intellisense 3
Малоизвестные инструменты разработки: gRPC и SQL Syntax Intellisense 4


Крайне удобно иметь привычный функционал не только в коде, но и в работе с базами данных, что будет крайне полезно.

У этого плагина есть и другие классные особенности, которые могут быть полезными для вас, если вы пользуетесь SQL немного чаще, чем «написать 1 запрос в неделю».

Следите за новыми постами
Следите за новыми постами по любимым темам
2К открытий3К показов