Создание сайтов в Артемовске, ЛНР. Как создать серверную часть с помощью Hasura и PostgreSQL

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

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

PostgreSQL — это популярная и мощная объектно-ориентированная реляционная база данных с открытым исходным кодом, которая предлагает функции корпоративного класса на том же уровне, что и Oracle Database и Microsoft SQL Server. По данным StackShare, PostgreSQL используют крупные международные компании, такие как Netflix, Instagram, Uber и Spotify.

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

Обратите внимание, что Hasura поддерживает и другие базы данных, такие как Microsoft SQL Server, Amazon Aurora и Google BigQuery. Мы сосредоточимся на PostgreSQL, так как он бесплатный и доступен для большинства предприятий и организаций. Поддержка MySQL появится в ближайшее время, если вы заинтересованы.

Если вы новичок в GraphQL, ознакомьтесь с нашим руководством, чтобы узнать больше. Давайте начнем с того, почему PostgreSQL может быть идеальным выбором для вашего проекта.

Почему PostgreSQL

Реляционные базы данных имеют много явных преимуществ по сравнению с другими типами баз данных, поскольку вы можете моделировать свои данные, используя строгие схемы и связи между таблицами. Возможность выполнения JOIN и ACID-транзакций является основным требованием для многих приложений в большинстве отраслей. Эти функции необходимы для обеспечения целостности и согласованности бизнес-данных в любой момент времени.

PostgreSQL также имеет дополнительные преимущества перед другими реляционными базами данных, такими как MySQL, в том, что:

вы можете моделировать данные, используя наследование таблиц

он имеет лучший контроль параллелизма для многопользовательских сред (вы можете более эффективно записывать большие объемы данных)

он отказоустойчив и менее подвержен повреждению данных

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

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

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

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

Extensions — надстройки, расширяющие возможности PostgreSQL (например, PostGIS).

Процедурные языки, языки программирования для написания пользовательских функций, хранимых процедур, триггеров и расширения стандартного SQL (например, PL/pgSQL)

Когда вы реализуете логику в PostgreSQL, Hasura может предоставить ее внешним приложениям через запросы и мутации GraphQL. Вот общий вид сервера PostgreSQL через интерфейс pgAdmin:

Интерфейс pgAdmin

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

ПРИМЕР 1

Вы можете получить список онлайн-пользователей, которые в данный момент активны, используя представление:

CREATE OR REPLACE VIEW «public».«online_users» AS

SELECT users.id,

users.last_seen

FROM users

WHERE (users.last_seen ≥ (now () — '00:00:30': interval));

ПРИМЕР 2

Используя функцию PostGIS, вы можете составить список всех магазинов, расположенных в радиусе 1000 метров. См. этот учебник по геолокации для подробного объяснения:

SELECT id, name, address, geom

FROM Seattle_Starbucks

WHERE ST_DWithin (geom, ST_MakePoint (-122.325959,47.625138): geography, 1000) ;

В следующем разделе мы сосредоточимся на функциях Hasura.

Что такое Хасура?

Hasura — это механизм GraphQL в режиме реального времени с открытым исходным кодом, который создает конечные точки GraphQL и REST API для вашей базы данных. Он поставляется с веб-консолью, которая позволяет:

смоделируйте схему вашей базы данных

просматривать, вставлять, обновлять и удалять данные

внедрить политики управления доступом на основе ролей

запускать запросы и мутации GraphQL

создавать конечные точки REST

запустить код SQL

определить действия и триггеры

Панель управления API Hasura

Hasura не поддерживает аутентификацию пользователей, поэтому вам потребуется интегрировать Hasura и ваше внешнее приложение с таким поставщиком, как:

Клерк

Auth0

AuthGuardian

Firebase

Магия

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

В следующем разделе мы рассмотрим, как запустить Hasura локально и в облаке.

Запуск Хасуры

Есть несколько способов быстро запустить экземпляр Hasura:

1. Докер

Использование Docker для запуска Hasura на локальном компьютере — рекомендуемый способ настройки среды разработки. С этой настройкой нет ограничения скорости для запросов API, и нет подключения к Интернету, ограничивающего вашу работу при взаимодействии с веб-консолью Hasura. Любую работу, которую вы выполняете локально, можно легко перенести в промежуточную и производственную среды. Мы обсудим, как это делается, позже в разделе «Миграции и среды».

Предполагая, что на вашем компьютере уже установлены Docker и Docker Compose, вы можете следовать инструкциям, приведенным в этом руководстве, для запуска Hasura на вашем компьютере:

# create new directory

mkdir my-hasura

cd my-hasura

# download docker-compose.yml

curl https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml -o docker-compose.yml

# start hasura and postgresql container instances

docker-compose up -d

Вы можете убедиться, что ваши экземпляры контейнеров Hasura и PostgreSQL запущены, выполнив команду docker ps. Вы должны иметь доступ к локальному экземпляру Hasura через браузер по адресу http: //localhost:8080/console. Чтобы завершить настройку, вам необходимо подключиться к базе данных PostgreSQL, которая работает как контейнер вместе с базой данных Hasura.

Подключив базу данных, вы сможете использовать веб-консоль для создания таблиц, определения отношений и выполнения операций CRUD с вашими данными. Обратите внимание, что ваши данные являются общедоступными при использовании настройки Docker по умолчанию. Вы можете защитить его, просто раскомментировав строку, начинающуюся с HASURA_GRAPHQL_ADMIN_SECRETв вашем docker-compose.ymlфайле, и перезапустив контейнер Hasura.

2. Облако

Гораздо проще начать работу через Hasura Cloud. Это переработанная версия Hasura с открытым исходным кодом, предназначенная для масштабируемости, доступности, безопасности

и глобального распространения.

Панель инструментов Hasura Cloud

Hasura Cloud поставляется с несколькими новыми функциями, недоступными в версии с открытым исходным кодом, в том числе:

Панель мониторинга ошибок, подключений, подписок, медленных запросов и других операций

Кэширование GraphQL для повышения производительности выборки данных с сервера и клиента.

Ограничение скорости для предотвращения компрометации вашего API злонамеренными пользователями и DDoS-атаками.

Регрессионное тестирование для запуска наборов тестов, таких как проверка изменений в вашем экземпляре разработки по сравнению с вашим производственным экземпляром.

Чтобы начать работу с Hasura Cloud, вам необходимо зарегистрировать бесплатную учетную запись. Обратите внимание, что бесплатная учетная запись имеет ограничение скорости 60 запросов в минуту. После создания учетной записи вам необходимо:

Создайте проект (экземпляр Hasura)

Подключиться к базе данных PostgreSQL

Для удобства Hasura Cloud обеспечивает установку одним щелчком мыши и подключение к бесплатному экземпляру базы данных Heroku Cloud. Вы также можете подключиться к любой другой базе данных PostgreSQL, доступной через Интернет. Есть много поставщиков PostgreSQL, которые вы можете использовать. К ним относятся облачные сервисы, такие как:

АМС

Лазурный

Цифровой океан

Облако TimescaleDB

ЮгабайтДБ

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

Особенности Хасуры

В этом разделе я дам вам общий обзор функций, которые Hasura предлагает для создания пользовательского бэкэнда без написания кода.

Менеджер данных

Hasura поставляется с визуальным конструктором для моделирования слоя данных. Это позволяет:

создавать таблицы

определить отношения (один-к-одному, один-ко-многим, многие-ко-многим)

выполнять CRUD-операции

создавать виды

запустить любую инструкцию SQL

внедрить проверку данных с использованием ограничений PostgreSQL DDL

определить триггеры

Хасура создать таблицу

Что касается столбцов, Hasura поддерживает широкий набор типов данных, включая:

целые числа, числа и числа с плавающей запятой

серийные номера и UUID

символы и текст

Дата и время

логический

геометрические — такие как линия, прямоугольник, путь, многоугольник и круг

JSON

Вы также можете добавить пользовательские типы с помощью команды CREATE TYPESQL. Далее мы рассмотрим, как данные авторизуются в Hasura.

Авторизация

Контроль доступа в Hasura основан на ролях. По умолчанию есть роль admin, которая имеет полный доступ CRUD к вашим данным. Чтобы ограничить доступ другим пользователям, вам потребуется создать дополнительные роли, такие как user, publicили accountant.

Для каждой создаваемой роли необходимо определить политику доступа для следующих действий:

вставлять

Выбрать

Обновить

удалять

Вы можете определить три типа политик:

Полный доступ, без ограничений

Частичный доступ с условными ограничениями

Нет доступа

В следующем примере демонстрируется selectполитика авторизации для userроли. Правила, определенные ниже, установлены для того, чтобы гарантировать, что пользователь userможет запрашивать только свои собственные записи или записи, помеченные как общедоступные:

Пример авторизации Hasura

Запросы

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

Типы запросов, которые вы можете выполнять, включают:

Простые запросы: запросы SELECT, которые возвращают один или несколько объектов.

Вложенные запросы: запросы JOIN, которые возвращают объекты во вложенном формате на основе отношений внешнего ключа.

Запросы агрегации: запросы SELECT, в которых над результатами была выполнена арифметическая операция, такая как сумма или среднее. Его также можно применять к вложенным объектам.

Запросы фильтра/поиска: запросы WHERE, которые фильтруют данные с помощью операторов сравнения в одном или нескольких полях. Их также можно использовать для выполнения поиска с использованием шаблонного или нечеткого сопоставления.

Запрос Hasura GraphQL

Результаты запросов GraphQL можно сортировать, группировать и разбивать на страницы. Также поддерживается нумерация страниц на основе курсора. По сути, любой оператор SQL, который может быть запущен в PostgreSQL, может быть представлен через запрос GraphQL. В следующем разделе мы рассмотрим мутации.

Мутации

Мутации GraphQL — это операторы, которые используются для изменения данных. Ниже приведены типы мутаций, которые вы можете выполнять:

Вставить: создать одну или несколько строк данных:

mutation insert_single_article {

insert_article_one (

object: {

title: «Article 1»

content: «Sample article content»

author_id: 3

}

) {

id

title

}

}

Upsert: создать, обновить при конфликте. В приведенном ниже примере столбец valueимеет уникальное ограничение:

mutation upsert_single_tag {

insert_tags (

objects: { value: «Java» }

on_conflict: { constraint: tags_value_key, update_columns: value }

) {

returning {

id

value

}

}

}

Обновить: обновить одну или несколько строк данных. Существуют также специальные операторы для работы с типами данных intи. jsonbВ приведенном ниже примере обновляются все статьи с рейтингом, который меньше или равен 2. Мутация вернет количество затронутых строк, а также перечислит эти строки в виде массива объектов:

mutation update_article {

update_article (

where: { rating: { _lte: 2 } }

_set: { rating: 1, is_published: false }

) {

affected_rows

returning {

id

title

content

rating

is_published

}

}

}

Удалить: удалить одну или несколько строк данных. В следующем примере статья удаляется по первичному ключу:

mutation delete_an_object {

delete_article_by_pk (id: 1) {

id

title

user_id

}

}

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

mutation reset_author {

delete_article (where: { author_id: { _eq: 6 } }) {

affected_rows

}

update_author (where: { id: { _eq: 6 } }, _set: { name: «Cory» }) {

returning {

id

name

articles {

id

title

}

}

}

}

Подписки

Подписки Hasura — это живые запросы, которые выполняются по протоколу WebSocket. Это протокол, используемый для получения данных в реальном времени из базы данных. Любой запрос GraphQL можно превратить в подписку, просто заменив ключевое слово queryна subscription. По умолчанию такие запросы запускают оператор SQL каждую секунду. Это настраиваемый параметр, который можно настроить для обеспечения подходящего баланса между нагрузкой на базу данных и задержкой. Если есть изменения в базовых данных, новое значение передается клиенту.

В следующем примере демонстрируется подписка GraphQL, которая отслеживает местоположение автомобиля:

# $vehicleId = 3

subscription getLocation ($vehicleId: Int!) {

vehicle (where: { id: { _eq: $vehicleId } }) {

id

vehicle_number

locations (order_by: { timestamp: desc }, limit: 1) {

location

timestamp

}

}

}

Другие варианты использования подписок включают:

отслеживание доставки еды

обмен сообщениями в чате

онлайн-опросы

Удаленные схемы

Часто при создании современного приложения вам необходимо интегрироваться со сторонними API, которые:

предоставлять данные, которых нет в вашей базе данных, например, спортивные результаты в реальном времени или курс акций

предоставить бизнес-логику, например, обработку платежей или бронирование авиабилетов.

Доступ к этим сторонним API обычно осуществляется непосредственно из клиентских приложений. С помощью Hasura вы можете объединить эти API со своей базой данных, чтобы создать единый API GraphQL. Это создает новые возможности, когда вы можете реализовать авторизацию и определить удаленные отношения между вашими таблицами/представлениями и удаленным API. Вы также можете создавать действия, которые выполняют определенную задачу на основе этого типа отношений.

Наличие унифицированного API GraphQL упрощает создание приложения разработчиками внешнего интерфейса. В следующем разделе мы рассмотрим, что такое Hasura Actions.

Действия

Пользовательская бизнес-логика в Hasura обрабатывается извне в микросервисах или бессерверных функциях через веб-перехватчики. Это означает, что вы можете написать собственную логику, используя любой предпочитаемый вами язык, например Node.js, Python, Go или Ruby on Rails. Действие в Hasura — это просто пользовательский запрос или мутация GraphQL, которая сопоставляется с веб-перехватчиком, в котором определены интерфейсы ввода и вывода.

Определение действия состоит из:

тип: запрос или мутация

название действия

пользовательские типы для входов и выходов

заголовки

URL-адрес обработчика

Давайте посмотрим на простое «Hello, World!» пример. Во-первых, мы определяем запрос действия следующим образом:

type Query {

hello (name: String!): HelloResponse

}

Приведенное выше действие определяет вызываемую функцию hello, которая принимает строковую переменную, вызываемую nameв качестве входных данных. Функция возвращает HelloResponseобъект пользовательского типа, который определяется следующим образом:

type HelloResponse {

message: String!

}

Когда интерфейс определен, все, что осталось, — это реализовать службу веб-перехватчиков и URL-адрес, доступный для вашего экземпляра Hasura. Вот реализация, написанная для Express.js, созданная с помощью помощника CodeGen от Hasura:

// Request Handler

app.post («/hello», async (req, res) => {

// get request input

const { name } = req.body.input;

// success

return res.json ({

message: `Hello, ${name}! `,

}) ;

}) ;

Триггеры событий

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

С программированием событий вы можете легко справиться со многими вариантами использования, такими как:

отправка электронного письма

отправка push-уведомлений

отправка новых данных в ваш поисковый индекс Algolia

В PostgreSQL вы можете создавать триггеры, которые выполняют операторы SQL или хранимые процедуры при возникновении таких событий, как INSERT, UPDATEили DELETE. Триггер связан с таблицей или представлением и может срабатывать до или после события.

В Hasura триггеры событий определены аналогичным образом и используются для вызова веб-перехватчиков при запуске события. Веб-хук в этом контексте очень похож на те, которые мы только что обсуждали в разделе «Действия». Триггеры событий также можно вызывать вручную через консоль или API.

Ниже приведен пример определения триггера события в формате YAML:

— table:

schema: public

name: author

event_triggers:

— name: author_trigger

definition:

enable_manual: false

insert:

columns: «*»

update:

columns: «*»

webhook: https://httpbin.org/post

Триггер события может быть определен с помощью заголовков (в целях проверки подлинности) и обычно содержит полезные данные, которые отправляются в службу веб-перехватчиков для обработки данных. Единственным ожидаемым ответом является 200статус. Фактические результаты, если это необходимо, отправляются обратно по другому маршруту — например, путем публикации мутации GraphQL или отправки уведомления по электронной почте и т. д.

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

Запланированные триггеры

Запланированные триггеры — это события, зависящие от времени, которые выполняют пользовательскую бизнес-логику через веб-перехватчики. Есть два типа, которые вы можете определить:

Триггеры CRON: используются для периодических событий через регулярные промежутки времени.

Одноразовые запланированные события: используются для одноразовых исполнений.

Запланированные триггеры можно создавать либо через веб-консоль, либо через API метаданных. На снимке экрана ниже показан пример веб-консоли.

Cron-триггервеб-консоли

API метаданных позволяет создавать запланированные события с помощью кода приложения. В приведенном ниже примере показано, как можно структурировать создание одноразового события с помощью API:

{

«type»: «create_scheduled_event»,

«args»: {

«webhook»: «https: //my-awesome-serverless-fn.com/send-email»,

«schedule_at»: «2022-07-20T12:45:00Z»,

«payload»: {

«email»: «bob@ross.com»

}

}

}

Hasura предоставляет ряд отказоустойчивых механизмов, обеспечивающих успешное выполнение запланированных триггеров. Например, предположим, что событие, запланированное на 14:00, не было обработано, потому что Хасура отключился в 13:59. Когда Hasura вернется в оперативный режим, она восстанавливает события и повторно запускает пропущенные запланированные триггеры на основе настраиваемой конфигурации допуска. Значение по умолчанию — шесть часов.

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

Примеры использования запланированных триггеров включают:

отправка напоминаний

формирование отчетов на конец дня

удаление неактивных пользователей, которые не подтвердили свой адрес электронной почты в течение последних 90 дней

Миграции и среды

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

Для переноса состояния среды разработки в промежуточную и производственную среды требуются файлы миграции. С Хасурой вам понадобятся:

файлы миграции базы данных/SQL

Метаданные Хасуры

Метаданные Hasura состоят из снимков файлов конфигурации, которые отслеживают:

отношения

разрешения

триггеры

действия

Схема GraphQL

удаленная схема

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

Создание и применение файлов миграции SQL выполняется с помощью hasura migrateкоманды, а файлы миграции метаданных обрабатываются с помощью hasura metadataкоманды. Команда CLI также позволяет:

откат примененных миграций

создать миграцию начальных данных

сбросить файлы миграции

файлы миграции squash — то есть замените небольшие добавочные обновления одним крупным обновлением

У Hasura есть специальный образ для миграции Docker, который автоматически применяет миграции при запуске сервера. Этот образ также содержит инструмент Hasura CLI, который можно использовать для запуска сценариев CI/CD в рабочем процессе.

Развертывание

Самый простой способ развернуть Hasura для производства — использовать Hasura Cloud. Это рекомендуемый вариант, поскольку вы получаете корпоративные функции, недоступные в версии с открытым исходным кодом. К счастью, Hasura не привязывает вас к своей платформе, в отличие от большинства поставщиков бэкэнд-как-услуги (BaaS). Существуют поставщики услуг One-click Deploy, которыми вы можете воспользоваться на таких платформах, как:

Героку

Цифровой океан

Оказывать

Лазурный

Вы также можете развернуть Hasura на любой платформе Kubernetes, такой как Google Cloud. AWS также поддерживается, но вам нужно выполнить ряд шагов, чтобы заставить его работать. Внешний хостинг дает вам свободу и больше вариантов ценообразования. Однако все вышеперечисленные варианты требуют настройки дополнительных служб для:

аутентификация

место хранения

пользовательская бизнес-логика

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

Развертывание с помощью NHost

NHost — это провайдер BaaS с открытым исходным кодом, который стремится конкурировать с такими платформами, как Firebase. Их внутренний стек состоит из:

База данных PostgreSQL

Движок Hasura GraphQL

служба аутентификации

MinIO, служба хранения объектов, совместимая с S3.

Бессерверные функции (в настоящее время в бета-версии)

Платформа поставляется с клиентской библиотекой nhost-js-sdk, которая используется для внешней аутентификации и управления файлами. Служба хранения поддерживает оптимизацию изображений, что избавляет нас от необходимости интегрировать другую службу для изображений.

На момент написания статьи NHost в настоящее время предоставляет 14-дневную пробную версию своего сервиса. Вскоре будет запущен бесплатный уровень. Существует версия Docker под названием Hasura Backend Plus, которую вы можете развернуть локально на своем компьютере.

Резюме

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

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

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

Делитесь нашими материалами с друзьями!

 

 

Заказать разработку сайта