>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
TypeScript

Jak przestać pisać CRUD i zacząć żyć z Hasura

Brzmi znajomo? Rozpoczynasz nowy projekt, a pierwsze dwa tygodnie spędzasz na żmudnej rutynie. Musisz opisać schematy w bazie danych, utworzyć modele w kodzie, napisać endpointy do tworzenia, odczytu, aktualizacji i usuwania rekordów. A potem jeszcze dodać paginację, filtrowanie, sortowanie i oczywiście jakoś ogarnąć uprawnienia dostępu. Kiedy wreszcie docierasz do prawdziwej logiki biznesowej, Twój entuzjazm już trochę się ulotnił.

Często łapałem się na myśli, że 80% backendu w typowej aplikacji webowej to tylko proxy danych z bazy danych do JSON i z powrotem. Właśnie ten problem rozwiązuje Hasura.

Co to dokładnie jest

Krótko mówiąc, Hasura to gotowy silnik, który łączy się z Twoimi bazami danych i natychmiast dostarcza gotowe do produkcji GraphQL API. Nie musisz pisać kodu serwera w Node.js, Go ani Python. Po prostu opisujesz tabele w Postgres, MS SQL Server, a nawet MongoDB, a Hasura sama generuje schemat wraz ze wszystkimi relacjami.

Logo Hasura

Projekt na GitHubie zgromadził już ponad 32 tysiące gwiazdek i to nie jest „kolejne opakowanie”. To pełnoprawny kompilator, który transformuje zapytania GraphQL w efektywne SQL.

Jak Hasura faktycznie pomaga w pracy

Kiedy pierwszy raz wypróbowałem Hasurę, to co mnie przekonało, to fakt, że nie próbuje zamknąć developera w „złotej klatce”. Oto kilka rzeczy, które czynią ją użyteczną.

Natychmiastowe API ze wszystkimi dodatkami

Gdy tylko połączysz bazę danych, natychmiast otrzymujesz możliwość wykonywania złożonych zapytań. Chcesz pobrać użytkownika, jego ostatnie pięć zamówień i tylko te pozycje z tych zamówień, które kosztują więcej niż 1000 rubli? Przy zwykłym REST musiałbyś albo wykonać trzy żądania, albo napisać niestandardowy endpoint z masą joinów. W Hasurze to jedno zapytanie GraphQL, które zostanie wykonane jako pojedyncze, efektywne zapytanie SQL do bazy danych.

Zabezpieczenia na poziomie wierszy

To prawdopodobnie najsilniejsza funkcja silnika. Hasura ma wbudowany system kontroli dostępu (RBAC). Możesz powiedzieć: „Użytkownik z rolą editor może widzieć tylko artykuły, w których jest wymieniony jako autor”. Konfiguruje się to bezpośrednio w konsoli lub przez pliki YAML. Nie musisz sprawdzać if (user.id === article.author_id) w każdej metodzie kontrolera.

Wbudowana reaktywność

Jeśli potrzebujesz aktualizacji w czasie rzeczywistym (na przykład do czatu lub kanału powiadomień), Hasura obsługuje GraphQL Subscriptions. Automatycznie monitoruje zmiany w bazie danych i przesyła dane do klienta przez WebSockety. Ręczne skonfigurowanie tego od zera jest dość trudnym zadaniem, zwłaszcza jeśli musisz uwzględnić uprawnienia dostępu.

Architektura sterowana zdarzeniami

Hasura może wywoływać webhooki, gdy baza danych się zmienia. Dodano nowego użytkownika? Hasura wyśle żądanie POST do Twojego mikroserwisu, który wyśle maila powitalnego. Pozwala to odciążyć ciężką logikę do zewnętrznych funkcji (Serverless lub zwykłych mikroserwisów), utrzymując API czyste.

Co nowego w wersji trzeciej

Hasura V3 jest teraz aktywnie rozwijana. Zespół przemyślał architekturę i skupił się na konektorach. Silnik jest teraz napisany w Rust (wcześniej Haskell), co powinno pozytywnie wpłynąć na zużycie pamięci i szybkość.

V3 wprowadza koncepcję „supergraph

Powiązane projekty