
Supabase czy Firebase? Darmowy start może ukryć koszt migracji

Jeśli aplikacja opiera się na wielu powiązanych danych, wybrałbym Supabase. Jeśli jej podstawowym wymaganiem jest praca mobilna bez połączenia, mocniejszym punktem wyjścia jest Firebase z Cloud Firestore. Obie platformy pozwalają zacząć bez opłaty, lecz darmowy limit nie obejmuje pracy potrzebnej do późniejszej zmiany modelu danych, zapytań i kodu aplikacji. Cennik Supabase przewiduje plan Free oraz Pro od 25 USD miesięcznie.
W Firebase miesięczna kwota zależy od usług i faktycznego zużycia, więc niski koszt bazy nie musi oznaczać równie niskiego kosztu całego backendu. Cennik Firebase rozróżnia bezpłatny plan Spark i rozliczany według zużycia Blaze; dla Cloud Firestore Standard podaje między innymi 50 tys. bezpłatnych odczytów oraz 20 tys. zapisów dokumentów dziennie. Porównywanie samych cen startowych pomija sposób naliczania tych operacji i koszt ewentualnej migracji.
Model danych decyduje o zakresie późniejszych zmian
Supabase daje aplikacji bazę PostgreSQL. Gdy zamówienie ma pozycje, płatność i uprawnienia kilku użytkowników, relacje można wyrazić w tabelach i egzekwować w bazie. To praktyczna przewaga przy danych, które trzeba łączyć w różnych przekrojach. Wymaga jednak zaprojektowania schematu, indeksów i zapytań; sam wybór SQL nie gwarantuje wydajności.
Cloud Firestore organizuje dane w dokumentach i kolekcjach. Taki układ może uprościć pobieranie danych przygotowanych pod konkretny widok aplikacji, ale powiązania między dokumentami trzeba uwzględnić w projekcie od początku. Zmiana sposobu wyświetlania informacji może oznaczać przebudowę zapytań lub dokumentów. Ma to znaczenie również dla rachunku: koszt zależy od naliczonych odczytów dokumentów, a przy części zapytań także wpisów indeksu, nie tylko od liczby wywołań widocznych w kodzie klienta.
Firebase ma też opcję relacyjną, więc prosty podział na „SQL w Supabase” i „NoSQL w Firebase” byłby mylący. Cennik Firebase SQL Connect opisuje dwa składniki opłaty: operacje usługi oraz instancję Cloud SQL for PostgreSQL. W planie Spark próbna instancja działa przez 90 dni; po tym czasie bez przejścia na Blaze zostaje zarchiwizowana. Cena instancji po okresie próbnym zaczyna się od 9,37 USD miesięcznie i zależy od regionu oraz konfiguracji. Firestore i SQL Connect trzeba zatem oceniać jako odrębne wybory architektoniczne.
Gdzie kończy się darmowy limit
W Supabase Free aplikacja może dojść do granicy rozmiaru bazy albo transferu, zanim wyczerpie limit aktywnych użytkowników. Bezpłatny projekt może też zostać wstrzymany po tygodniu braku aktywności. Pro zwiększa dostępne zasoby i obejmuje kredyt na instancję obliczeniową Micro, ale większa instancja, dodatkowy projekt lub płatne dodatki zmieniają rachunek. Sama liczba użytkowników nie wystarcza więc do oszacowania kosztu produkcyjnego.
W Firestore bezpłatne limity odczytów i zapisów odnawiają się codziennie, a limit transferu dotyczy miesiąca. Aplikacja z małą bazą może przekroczyć dzienny limit, gdy wielu klientów regularnie pobiera te same dokumenty. Z kolei duża liczba zarejestrowanych kont nie tworzy sama w sobie opłaty za odczyty: znaczenie ma zachowanie aplikacji. Do pełnego budżetu trzeba doliczyć używane osobno uwierzytelnianie, przechowywanie plików, funkcje i transfer.
Trzy profile ruchu i rachunek za bazę
Przyjmijmy warunkowo aplikację wydarzeń używaną w Polsce i miesiąc liczący 30 dni. Poniżej liczę bazę oraz jej transfer, bez podatków, funkcji, plików i innych usług. Dla Firestore Standard przyjmuję region Iowa jako jawny punkt odniesienia cenowego, a transfer kierowany do użytkowników w Europie; nie jest to wycena bazy uruchomionej w Warszawie. Cennik Cloud Firestore podaje dla wybranego wariantu 0,03 USD za 100 tys. odczytów, 0,09 USD za 100 tys. zapisów, bezpłatny 1 GiB danych i 10 GiB miesięcznego transferu oraz 0,12 USD za kolejny GiB transferu w rozpatrywanym przedziale.
- Mały projekt. Załóżmy 200 aktywnych użytkowników, 10 tys. odczytów i 2 tys. zapisów dziennie, bazę 0,2 GB oraz 2 GB transferu miesięcznie. Przy tych założeniach porównywane usługi bazodanowe mieszczą się w bezpłatnych limitach obu platform. Wynik 0 USD nie jest prognozą kosztu całej aplikacji.
- Rosnąca aplikacja. Załóżmy 4 tys. aktywnych użytkowników, 80 tys. odczytów i 25 tys. zapisów dziennie, bazę 0,8 GiB oraz 5 GiB transferu miesięcznie. Baza przekracza darmowy limit Supabase, więc punktem wyjścia jest Pro za 25 USD miesięcznie, o ile wystarczy instancja Micro. W Firestore miesięczna nadwyżka wynosi 900 tys. odczytów i 150 tys. zapisów: około 0,41 USD za te operacje. Przyjęte dane i transfer pozostają w jego bezpłatnych limitach.
- Duży ruch. Załóżmy 40 tys. aktywnych użytkowników, 3 mln odczytów i 300 tys. zapisów dziennie, bazę 4 GiB oraz 50 GiB transferu miesięcznie. Szacunkowy rachunek Firestore to 26,55 USD za odczyty, 7,56 USD za zapisy, około 0,44 USD za dane i 4,80 USD za transfer, razem około 39,35 USD. Ilości danych i transferu mieszczą się w limitach Supabase Pro, ale sama cena planu nie dowodzi, że instancja Micro obsłuży taki ruch.
Różnica między drugim a trzecim profilem pokazuje, dlaczego liczba użytkowników jest słabym zamiennikiem pomiaru operacji. W Firestore nasłuch zmian lub zapytania obciążające indeksy mogą zwiększyć liczbę naliczonych odczytów. W Supabase koszt zasobów obliczeniowych zależy między innymi od złożoności zapytań i równoczesnego obciążenia. Dla wdrożenia w Polsce trzeba ponownie przeliczyć stawki dla wybranego regionu bazy oraz rzeczywisty rozkład ruchu.
Offline może być ważniejsze niż miesięczna opłata
Cloud Firestore ma wbudowaną pamięć lokalną i synchronizuje zmiany po odzyskaniu połączenia. Dokumentacja pracy offline wskazuje, że trwały zapis lokalny jest domyślnie włączony na Androidzie i platformach Apple, natomiast w aplikacji internetowej trzeba go włączyć. Jeśli ten sam dokument zmieni się kilka razy, obowiązuje zasada ostatniego zapisu. Dla produktu, w którym użytkownik regularnie traci zasięg, gotowa synchronizacja może oszczędzić więcej pracy niż wynosi różnica w rachunku za bazę.
W aplikacji opartej na Supabase podobny tryb wymaga własnego magazynu lokalnego, kolejki zmian i zasad rozstrzygania konfliktów albo dodatkowego rozwiązania do synchronizacji. To osobna pozycja w budżecie projektu. Również w Firestore gotowa obsługa offline nie rozwiązuje każdego konfliktu biznesowego: jeśli dwa urządzenia zmienią stan rezerwacji, trzeba ocenić, czy zasada ostatniego zapisu daje poprawny wynik.
Koszt migracji powstaje głównie w kodzie aplikacji
Przeniesienie rekordów między platformami nie przenosi automatycznie sposobu ich używania. Przy przejściu z Firestore do PostgreSQL kolekcje i identyfikatory trzeba odwzorować na tabele oraz relacje, a następnie zmienić zapytania i uprawnienia. W przeciwnym kierunku trzeba zaprojektować dokumenty odpowiadające widokom aplikacji. Jeśli produkt korzysta z uwierzytelniania lub synchronizacji dostawcy, dochodzą zmiany w klientach, testy kont użytkowników i kontrola danych podczas przełączenia.
Warunkowy budżet pozwala zobaczyć skalę tej pracy: 60 godzin przy założonym wewnętrznym koszcie 150 zł za godzinę daje 9000 zł. Nie jest to stawka rynkowa ani wycena konkretnego wdrożenia. W takim przykładzie można przypisać 18 godzin do nowego modelu danych, 12 do przeniesienia rekordów, 20 do kodu klientów i uprawnień oraz 10 do testów przełączenia. Im silniej aplikacja polega na funkcjach specyficznych dla dostawcy, tym mniej o wysiłku migracji mówi sama możliwość eksportu danych.
Dla nowej aplikacji z licznymi relacjami rozsądny jest start od Supabase; dla produktu mobilnego wymagającego pracy bez sieci — od Firebase z Firestore. Jeśli potrzebna jest baza relacyjna w ekosystemie Firebase, SQL Connect wymaga osobnego rachunku za Cloud SQL. Darmowy próg pomaga uruchomić projekt, ale trwały koszt wyboru wyznaczają model danych, sposób pracy klienta i zakres zmian potrzebnych przy wyjściu z platformy.
Przeczytaj także:
Powiązane artykuły


LangSmith czy Arize Phoenix? Darmowy self-hosting ma własny koszt

Cloudflare R2 czy AWS S3? Brak opłat za transfer ma koszt wydajności

Sentry czy Datadog? Jeden błąd może uruchomić dwa różne rachunki

Pinecone czy pgvector? Filtry potrafią zmienić zwycięzcę

GitHub Actions czy CircleCI? Minuta kosztuje podobnie, kolejka już nie
Zapisz się do naszego newslettera
Otrzymuj najnowsze wiadomości o Web3, AI i kryptowalutach prosto na swoją skrzynkę.