Малоизвестные инструменты разработки: gRPC и SQL Syntax Intellisense
Описываем три инструмента разработки, которые малоизвестны, но очень полезны: gRPC, Protobuf и SQL Syntax Intellisense.
2К открытий3К показов
Добрый день! Меня зовут Михаил Альфа и я рад поделиться информацией о крайне полезных инструментах, которыми пользуюсь сам, но которые «не на слуху».
Михаил Альфа
Holland&Barrett, Senior Flutter Developer
gRPC + Protobuf
Первый «из» — отличное средство для проектирования и реализации высокопроизводительного API. gRPC — это RPC-фреймворк, разработанный Google и закрывающий потребности Backend и Frontend разработки. Его использование выглядит следующим образом:
- Описываем схему взаимодействия (контракт): для этого используется специальный формат описания спецификаций, называемый `protobuf`
- Из `protobuf`-спецификации генерируем интерфейсы для любого из языков, перечисленных ниже, которые будем имплементировать на Backend-стороне
- Из спецификации генерируем клиентский код — полностью готовую к использованию библиотеку для любого из языков, перечисленных ниже
- Вы прекрасны — осталось написать Backend-код, который будет соответствовать сгенерированным интерфейсам и ваше API готово к использованию
Синтаксис `protobuf` выглядит, например, вот так:
Использовать gRPC или нет — решать вам, все зависит от требований и потребностей, но чтобы склонить чашу весов за «за» — вот несколько аргументов:
- gRPC очень производительный, объем передаваемых данных благодаря бинарному формату имеет меньший размер, чем JSON с тем же набором полей до 50% (то есть в два раза!)
- Есть возможность стриминга из коробки (привет приложениям реального времени и пока отдельному инструментарию в виде WebSocket)
- Гибкость API — вы просто пишите функции на бэкенде, которые будут вызываться фронтендом, можно абстрагироваться и представить, что ваш бэкенд — является продолжением фронтенда
- Ориентированность на межсервисные коммуникации — gRPC создавался для удобства общения между различными сервисами и это его родная стихия
Минусы, правда, тоже есть, я опишу главный из них — урезанная поддержка браузеров — в них gRPC будет работать в режиме совместимости поверх обычного HTTP.
С точки зрения разработки это ничего не меняет, но вы теряете некоторые преимущества, которые gRPC несет с собой. Есть надежда, что в скором времени в браузерах появится API, способное устранить этот недостаток, но даже и с ним жить можно.
Кроме того, к счастью, Frontend не ограничивается одними лишь браузерами — есть нативные приложения для множества платформ, где можно разгуляться вполную.
Список языков с официальной поддержкой от Google:
Список других языков, с поддержкой от сообщества (что не означает худшую поддержку):
- ActionScript
- Ada
- C / C++
- Clojure
- CommonLisp
- D
- Delphi
- Elixir
- Elm
- Erlang
- Hacklang / HHVM
- GDScript Godot v3 engine plugin
- GopherJS
- Haskell
- Haxe
- Javascript
- Julia
- Lua
- Matlab
- Mercury
- Objective-C
- OCaml
- Perl
- Perl / XS
- PHP
- Prolog
- Purescript
- R
- Ruby
- Rust
- Scala
- Solidity
- Swift
- Typescript
- Vala
- Visual Basic
Полный список всех поддерживаемых языков и библиотек можно начать искать тут и найти тут.
Как можно заметить — найти что-то, что было бы тяжело использовать совместно с 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.
Какие он дает нам возможности и почему он вообще тут? Собственно, формальный перечень дан здесь. А я расскажу о том, чем пользуюсь, непосредственно, сам:
- Подсветка SQL-синтаксиса (любого вида SQL, и не только SQL)
- Автодополнение, основанное на синхронизации с вашей базой данных
- Изредка — быстрый просмотр таблиц
Я прикреплю скриншоты напрямую из IDEA, чтобы показать, как это выглядит:
Крайне удобно иметь привычный функционал не только в коде, но и в работе с базами данных, что будет крайне полезно.
У этого плагина есть и другие классные особенности, которые могут быть полезными для вас, если вы пользуетесь SQL немного чаще, чем «написать 1 запрос в неделю».
2К открытий3К показов