Hasura — ülikiire ja bugivaba back-end API arendus

Kaspar L. Palgi
CrewNew.ee
Published in
3 min readNov 16, 2021

Hasura on põhimõtteliselt Backend as a Service (BaaS), mis tähendab, et Sa saad GraphQL (REST on levinuim hetkel veel ja GraphQL on uus põlvkond ja mitmeti parem) backend API ridagi koodi kirjutamata. See tähendab aga olulist ajalist võitu, mis tähendab omakorda soodsamat hinda nii esmases arenduses, kui ka edasiarendustes. Samuti tähendab vähem ridu koodi vähem bugisid, peavalu ja probleeme.

Hasura pannakse olemasoleva PostgreSQL (või MS SQL, Citus / Hyperscale, BigQuery või MySQL) andmebaasile otsa ja ongi kiire cache’tud API valmis koos autoriseerimise ja access control’ga. Mitte ühte rida koodi. Ülikiire. Bugivaba. Oleme kasutanud Hasurat al. 2019 ja selle aja jooksul näinud ühte bugi mitu versiooni tagasi. 2022 said nad $100m lisainvesteeringu ning on nüüd unicorn (ehk üle miljardi USD väärtusega startup) seega neil on ressurssi, et arendada kvaliteetset toodet ning samuti näitab see seda, et nende toode oli juba enne seda väärt päris palju.

Tavaliselt on BaaS lahendused pilveteenusena ning muutuvad üpriski kulukaks, kui Sinu lahenduse kasutus kasvab. Hasura GraphQL engine on aga vabavaraline (open-source) ning selle saab üles seada Sinu enda serverisse/pilve.

Hasura sidumine muude enda kirjutatud teenustega on ülimalt lihtne kasutades:

1. Events

Kui mõnda andmebaasi tabelisse midagi lisatakse, muudetakse või kustutatakse Sinu äppis (või admin paneelil) siis saab webhook kaudu luua misiganes custom business logic misiganes keeles soovid. Lihtsaim näide oleks, et kui users tabelisse tuleb API kaudu uus kirje, siis kasutades näiteks Twilio või SendGrid library’t (meelepärases programmeerimiskeeles) saadame emaili ja/või SMS.

2. Remote Schemas

HAsura annab Sulle CRUD (create, read, update, delete) + reaalajas GrapQL API koos autentimise ja juurdepääsu õigustega aga tihti on vaja kirjutada APIsid, mis sisaldavad custom äriloogikat. Näiteks makselahendused, päringud infole, mis pole Sinu andmebaasis jne. Selleks ongi siis remote schemas Hasuras.

3. Actions

Actions on custom HTTP päringud või mutatsioonid, millega saab teha näiteks keerukaid andmete valideerimisi, info rikastamisi väliste teenuste kaudu või misiganes custom äriloogika enne oma andmebaasiga töötamist.

Action on nagu event aga kahel suunal. Ei saadeta mitte lihtsalt info välja, kui miskit andmebaasis muutub, vaid jäädakse ka vastust ootama. Ehk siis lihtne ükskõik millist custom äriloogikat kirjutada.

Ülalmainitud kolm erinevat Hasura funktsionaalsust annavad võimaluse kasutada Hasurat igas situatsioonis ning kombineerituna misiganes custom äriloogikaga kirjutatud misiganes keeles.

Oleme nüüdseks paigaldanud Hasura ligi 30-le kliendile ning koolitanud mitmete klientide arendustiimid Hasurat kasutama selle täie potensiaali juures.

Vaata veel:

--

--

Kaspar L. Palgi
CrewNew.ee

Backend programmer and veteran tech enthusiast. Mentoring and writing tech books. Team lead at CrewNew.com / lead developer at Klarity.app