To porównanie koncentruje się na backendach natywnych dla Rust: sh0.dev, TrailBase i Aurabase. W przypadku bardziej ogólnego backendu hostowanego samodzielnie, nie napisanego w Rust, nasze porównania Aurabase vs PocketBase i Aurabase vs Appwrite sprawdzają inne opcje. Aby uzyskać pełną analizę tego, co „suwerenność UE” oznacza pod względem prawnym, hostingu i narodowości wydawcy, nasz artykuł self-hosting a suwerenny UE BaaS idzie dalej; Ten post ogranicza się do umieszczenia Aurabase wśród jego odpowiedników w Rust.
Najważniejsze
- Trzy realne opcje na dzień dzisiejszy dla backendu natywnego dla języka Rust: sh0.dev (pojedynczy plik binarny, ~25 MB), TrailBase (Rust + wbudowany interfejs SQLite + SolidJS), Aurabase (pełna platforma, dedykowany Postgres 16).
- Aurabase zakłada odwrotny kompromis w stosunku do systemu mono-binarnego: kilka zorganizowanych usług (lokalnie k3d lub Kubernetes/Helm w środowisku produkcyjnym) w zamian za RLS dla wielu dzierżawców, CDC w czasie rzeczywistym i natywną sztuczną inteligencję (NL2SQL, RAG).
- Self-hosting i suwerenność UE to dwie odrębne osie: samodzielne hosting niczego nie gwarantuje, dopóki serwer fizyczny i wydawca nie znajdują się w UE.
- Informacje o sh0.dev i TrailBase oparte na ich publicznych stronach w momencie pisania tego tekstu, nie zostały dokładnie sprawdzone: przed podjęciem jakichkolwiek decyzji sprawdź ich aktualną dokumentację.
Dlaczego „rdzenny język” ma znaczenie w przypadku samodzielnego hostingu
Backend hostowany samodzielnie usuwa infrastrukturę z obszaru dostawcy chmury, ale nie odpowiada za jej niezawodne działanie. W tym miejscu wybór języka przestaje być szczegółem: bezpieczeństwo pamięci Rusta i brak modułu zbierającego elementy bezużyteczne redukują całą klasę błędów produkcyjnych, tych, które najbardziej uderzają w mały zespół obsługujący własny serwer.
To nie jest czysty argument dotyczący wydajności. Usługę, która nie powoduje segfaultów i nie ma nieprzewidywalnych przerw w gromadzeniu pamięci, łatwiej jest monitorować zespołowi bez dedykowanego SRE. Rzeczywista architektura rdzenia Aurabase, skompilowana razem przestrzeń robocza Cargo z 18 skrzyniami, jest szczegółowo udokumentowana w naszym pliku architektury Rust.
Samo „otwarte oprogramowanie” nie wystarczy, aby zagwarantować przenośność lub brak blokady: rzeczywista architektura, pojedynczy lub wielu dzierżawców, zastrzeżony lub standardowy silnik pamięci masowej, ma większe znaczenie. sh0.dev, TrailBase i Aurabase zapewniają dostęp do kodu źródłowego, ale z bardzo różnymi zakresami i modelami danych.
sh0.dev: unikalny plik binarny Rusta, zaprojektowany z myślą o minimalizmie
sh0.dev według swoich publicznych stron w chwili pisania tego tekstu przedstawia się jako backend dystrybuowany w postaci pojedynczego pliku binarnego Rusta o rozmiarze około 25 MB. Głównym argumentem jest prostota wdrożenia: plik do skopiowania na serwer, bez zewnętrznych zależności i osobnej instalacji.
Na potrzeby tego artykułu nie sprawdziliśmy szczegółowo dokładnego zakresu funkcjonalnego ani modelu licencjonowania sh0.dev: publicznie dostępne informacje na ten temat są nadal ograniczone, a projekt tego typu szybko ewoluuje. Jeśli to kryterium ma wpływ na Twoją decyzję, przed podjęciem decyzji sprawdź jej aktualną oficjalną dokumentację.
TrailBase: rdzeń Rust, wbudowany SQLite, interfejs SolidJS
TrailBase łączy, według swoich publicznych stron, rdzeń backendu napisany w Rust, wbudowaną bazę danych SQLite i interfejs administracyjny zbudowany w SolidJS, a wszystko to dostarczane jako projekt self-hosting. Architektura przypomina PocketBase (Go, SQLite, zintegrowany interfejs), ze środowiskiem wykonawczym napisanym w Rust, a nie Go.
Podobnie jak w przypadku sh0.dev, ten artykuł nie twierdzi, że dokładnie sprawdził kod TrailBase lub plan działania. To, co możemy z pewnością powiedzieć, to ogólne położenie architektury: plik binarny, który osadza własny silnik pamięci masowej, a nie backend wspierany przez zewnętrzny Postgres.
Aurabase: dedykowana Postgres 16, kompletna platforma, również hostowana samodzielnie
Aurabase zakłada inny kompromis niż mono-binarny. Repozytorium udostępnia lokalny klaster Kubernetes (k3d) uruchamiany jednym poleceniem za pośrednictwem ./start.sh, a także pełny wykres Helma (deploy/helm/aurabase/) z oddzielnymi profilami wartości dla Hetznera, lokalnego stanowiska Kubernetes (k3d) i Scaleway. Główny obszar roboczy Cargo jest udostępniany na licencji MIT.
Wybór ten obejmuje kilka usług do zaaranżowania, bramę, uwierzytelnianie, bazę danych, czas rzeczywisty, pamięć masową, funkcje, sztuczną inteligencję, a nie pojedynczy proces. W zamian każdy projekt otrzymuje dedykowany PostgreSQL 16 (nie współdzielony plik SQLite) z pgvector 0.8.6 i pg_graphql osadzonymi w obrazie dzierżawy oraz izolację zabezpieczeń na poziomie wiersza na poziomie silnika, a nie na poziomie aplikacji.
Jedyny zauważalny niuans w rdzeniu Rust: domyślny tryb dla funkcji brzegowych opiera się na dedykowanej usłudze TypeScript (izolacje V8), co jest kompromisem inżynieryjnym szczegółowo udokumentowanym w cytowanym powyżej pliku architektury, a nie pominięciem, o którym wolimy milczeć.
Trzy architektury podsumowane obok siebie
Kolumny sh0.dev i TrailBase oznaczone „do sprawdzenia” odzwierciedlają niewyczerpujące wyszukiwanie z naszej strony tych dwóch narzędzi, a nie potwierdzony brak ich funkcjonalności.
| Kryterium | Aurabaza | sh0.dev | Baza szlaków |
|---|---|---|---|
| Główny język | Rust (pełna przestrzeń robocza, 18 skrzyń) | Rdza (pojedynczy plik binarny) | Rust (rdzeń) + SolidJS (interfejs) |
| Ślad wdrożenia | k3d lokalnie lub Helm/Kubernetes w produkcji, kilka usług | Pojedynczy plik binarny, ~25 MB | Pojedynczy binarny, osadzony SQLite |
| Baza danych | PostgreSQL 16 dedykowany na projekt + pgvector + pg_graphql | Do weryfikacji (oficjalny dokument) | Wbudowany SQLite |
| Interfejs administracyjny | Oddzielne studio Next.js | Aby sprawdzić | Interfejs SolidJS zintegrowany w formacie binarnym |
| Natywna sztuczna inteligencja (NL2SQL / RAG) | Tak, kod sprawdzony (aura-ai) | Aby sprawdzić | Aby sprawdzić |
| Oficjalny głos w sprawie tego porównania | To porównanie opublikowane przez Aurabase | Żadne, niechciane | Żadne, niechciane |
Suwerenność UE: która nie zależy od wyboru systemu binarnego
Samodzielne hostowanie backendu napisanego w Rust, cokolwiek by to nie było, samo w sobie nie gwarantuje niczego w odniesieniu do suwerenności UE. Muszą zostać spełnione dwa różne warunki: serwer fizyczny musi działać w Unii Europejskiej, a Ty musisz sprawować nad nim faktyczną kontrolę operacyjną. Ani sh0.dev, ani TrailBase, ani Aurabase nie mogą zagwarantować drugiego warunku: wybierasz, gdzie wdrożyć plik binarny lub kontenery.
Jurysdykcja wydawcy oprogramowania również ma znaczenie, ale na innej osi: dotyczy wersji zarządzanej przez dostawcę, a nie własnego hostingu. To jest kąt działania CLOUD opisany szczegółowo w naszym artykule na temat wybierania BaaS. Sama infrastruktura zarządzana przez Aurabase: działa, sprawdzona w produkcji, w centrach danych Hetzner w Norymberdze i Falkenstein (Niemcy) oraz w Helsinkach (Finlandia). Jest to suwerenność UE w jej obecnym kształcie, odrębna od paryskiej siedziby Aurabase SAS.
Szczegóły kryteriów zgodności, które należy sprawdzić przed wyborem zakwaterowania, suwerennego lub nie: nasza strona zgodność.
Kiedy co wybrać
Jeśli rozmiar wdrożenia jest kryterium numer jeden, minimalny VPS, urządzenie brzegowe, projekt, w którym liczy się każdy megabajt, warto wypróbować sh0.dev lub TrailBase. Są to wybory, które można obronić w tym konkretnym przypadku użycia, nawet jeśli sami nie testowaliśmy ich zachowania w środowisku produkcyjnym.
Jeśli Twój projekt wymaga prawdziwej wielodostępności z zaawansowanymi zabezpieczeniami na poziomie wiersza, pełnym Postgresem zamiast SQLite lub natywną sztuczną inteligencją (NL2SQL, RAG) bez montażu przez strony trzecie, Aurabase pokrywa ten obszar. Jest to również najbardziej bezpośrednia ścieżka, jeśli zaczynasz od istniejącego projektu Supabase: Aurabase jest wówczas pozycjonowany jako alternatywa dla Supabase napisanego w Rust, z polityką SDK i RLS, które mają na celu niemal bezpośrednią kompatybilność, udokumentowaną w naszym przewodniku migracji.