Доставка быстрая

С таким количеством новых инструментов сейчас гораздо больше способов создавать вещи, чем когда-либо, но инструменты, которые вы выбираете, могут иметь значение между месяцами, чтобы отправить продукт, или всего днями.

Долгое время разработчики просто писали бэкенды вручную, но это было утомительно и отнимало много времени. Теперь у нас есть такие сервисы, как Firebase, Hasura, Nhost и Supabase, которые ускоряют разработку, заботясь о внутренних функциях, таких как базы данных, конечные точки API, аутентификация пользователей и хранилище.

Firebase был одним из первых решений, но это было проприетарное программное обеспечение, что сильно отталкивало многих разработчиков. Затем в 2017 году появился Hasura, решение с открытым исходным кодом, которое позволило интерфейсу GraphQL с низким кодом получить доступ к вашей базе данных PostgreSQL вместе с другими стандартными функциями Postgres. Вскоре после этого появился Nhost, предоставив Hasura как услугу вместе с другими внутренними функциями, такими как аутентификация и хранение.

А затем в 2020 году появилась Supabase, позиционируемая как альтернатива Firebase с открытым исходным кодом. Трудно не слышать о том, насколько великолепен Supabase, но последние несколько лет я избегал его, потому что был так счастлив с Hasura и Nhost.

Что делает Хасуру такой хорошей?

Автоматический GraphQL для всех ваших данных

GraphQL обещал более простой опыт разработчика, когда вы могли получить точные данные, которые вам нужны, но если вы когда-либо писали свои собственные преобразователи GraphQL, вы знаете, что это только полуправда. Конечно, это, возможно, проще для разработки внешнего интерфейса, но теперь каждый столбец каждой таблицы, по сути, является конечной точкой API, для которой вы должны написать преобразователь. Много раз было проще просто создавать обычные REST API.

Хасура все это исправил.

Он предоставил мгновенные преобразователи на основе CRUD для запросов и мутаций, с фильтрами и операторами для каждой таблицы и столбца, а также доступ к авторизации на основе ролей.

Пользовательский интерфейс «укажи и щелкни»

Так приятно иметь возможность использовать хорошо продуманные абстракции, которые автоматизируют скучные задачи, но при этом предоставляют возможность перейти к коду для гибкости и настраиваемости, и это то, что предоставляет Hasura.

Все, от создания таблиц до добавления политик аутентификации и настраиваемого SQL, до создания запросов — всего в один клик.

Это открывает гораздо больше доступа к данным, потому что барьер входа намного ниже, вам больше не нужно думать в коде, вы просто нажимаете то, что хотите, как если бы вы делали покупки в Интернете в своей базе данных.

Отдельная услуга

Одна из моих самых больших проблем с GraphQL заключалась в том, сколько херни нужно было добавить, чтобы просто использовать его. Большие библиотеки для выполнения запросов graphQL в графическом виде для ваших данных.

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

Зачем менять?

Во-первых, за последние пару лет Hasura уделяла большое внимание поддержке большего количества баз данных, но эти обновления практически не принесли пользы среднему разработчику. Наряду с их недавними изменениями цен, кажется, что они гораздо больше сосредотачиваются на своих корпоративных клиентах, и это беспокоит меня за будущее версии Hasura для сообщества с открытым исходным кодом.

И, во-вторых, Nhost, возможно, лучший поставщик Hasura как услуги, с включенной аутентификацией и хранилищем, недавно изменил цены на бесплатный уровень с разрешения неограниченного количества активных бесплатных проектов на один активный бесплатный проект. Мне нравятся мои бесплатные вещи, и Supabase предлагает 2 бесплатных активных проекта, это в 2 раза больше, чем 1!

Но также и потому, что, несмотря на то, что Нхост является отдельной сущностью, он неотъемлемо связан с Хасурой, и мне не нравится направление, в котором движется Хасура.

Миграция на супабазы

С момента своего запуска Supabase сокрушает его новыми функциями, документацией, маркетингом и поддержкой, даже запустив поддержку новых новинок, таких как pg_vector и встраивания текста, которые позволяют использовать новые рабочие процессы, связанные с ИИ.

По большей части поток разработки аналогичен.

Такие вещи, как создание таблиц и обновление столбцов, можно выполнять с помощью пользовательского интерфейса «укажи и щелкни». Основные отличия, которые я обнаружил, заключались в следующем:

Написание SQL

Такие вещи, как доступ к данным в вашей БД и настройка политик аутентификации, требуют фактического кода, будь то с помощью SQL или через их клиентскую библиотеку. Гораздо проще создавать запросы с помощью нажатия кнопок в Hasura, чем писать код с помощью Supabase.

Миграции выполняются вручную

В Hasura файлы миграции автоматически записываются после каждого обновления базы данных. Если вы используете Nhost для Hasura, миграции автоматически развертываются при отправке указанной вами рабочей ветки. Это огромная экономия времени.

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

Поддержка GraphQL

Хотя Supabase выпустила поддержку GraphQL, она все еще относительно новая и не имеет такого же уровня поддержки многих функций GraphQL, как Hasura, некоторые из которых включают:

  • Поддержка вложенных мутаций
  • Запрос по первичному ключу
  • Некоторые фильтры
  • Улучшенный редактор GraphQL с построителем запросов и недавней историей на боковой панели.

Вердикт

С точки зрения производительности мне пришлось бы использовать Hasura, особенно Nhost. Пользовательский интерфейс с низким кодом, предоставляемый Hasura, в сочетании с поддерживающими функциями и инфраструктурой Nhost просто слишком хорош. Мне не нужно думать о коде при взаимодействии с моей БД. Создание таблиц, политик аутентификации, запросов и мутаций осуществляется одним щелчком мыши, при этом сохраняется возможность перехода к коду, если это необходимо.

Supabase по-прежнему отличный выбор, и я попробую его для своих следующих нескольких проектов.

Помимо лучшей документации, более активного сообщества и более щедрого бесплатного уровня, я думаю, что Supabase в долгосрочной перспективе лучше подходит для среднего разработчика из-за того, что Hasura сосредоточена на корпоративных клиентах, а Nhost зависит от Hasura. Кроме того, если Supabase будет продолжать в том же темпе, вскоре они сократят разрыв между ними, Хасурой и Нхостом.

Отсутствие доступа к пользовательскому интерфейсу Hasura — это большая потеря, но SQL — мощный язык, который никуда не денется, и это хороший повод для того, чтобы стать более опытным в нем. Кроме того, с недавно добавленным помощником по документам искусственного интеллекта в Supabase написание SQL станет еще проще.

Помимо этого, Supabase предлагает те же функции, которые мне небезразличны, и я думаю, что было бы неплохо изучить новые варианты, чтобы избежать зависимости от поставщика.