Od vibe coding do produkcji - migracja aplikacji Lovable do AWS

Jerzy Kopaczewski 15 maja 2026 17 min czytania
Contents
Narzędzia do vibe coding jak Lovable czy Bolt zmieniły tempo przechodzenia od pomysłu do działającego prototypu. Opisujesz, czego chcesz, AI generuje pełną aplikację i w ciągu kilku godzin masz coś realnego. Problem nie leży w kodzie. Problem to wszystko dookoła: brak infrastructure as code, brak pipeline CI/CD, brak monitoringu, brak granic bezpieczeństwa i brak jasnej ścieżki do skalowania. Pomysł zweryfikowany. Teraz trzeba doprowadzić to do stanu produkcyjnego.

Ten post opisuje, jak wziąć aplikację zbudowaną narzędziami do vibe coding (Lovable, Bolt lub podobne AI buildery, które typowo dostarczają na Supabase i Netlify/Vercel) i zmigrować ją do AWS z procesami, zabezpieczeniami i architekturą, jakich wymaga Well-Architected Framework.

Jeśli wywodzisz się konkretnie z Heroku, nasz przewodnik po migracji z Heroku do AWS opisuje tę ścieżkę szczegółowo. Ten post adresuje inny punkt startowy: kod wygenerowany przez AI, który nigdy nie był projektowany z myślą o dojrzałości operacyjnej.

 

Co vibe coding faktycznie produkuje

Termin “vibe coding”, ukuty przez Andreja Karpathy’ego na początku 2025, definiuje workflow, w którym opisujesz, czego chcesz w języku naturalnym, a AI generuje aplikację. Narzędzia jak Lovable, Bolt i v0 zamieniły to w kategorię produktową. Opisujesz, AI tworzy szkielet frontendu w React lub Next.js, podłącza go do Supabase po auth, bazę danych i storage, i dostarcza na Netlify lub Vercel. W mniej niż dzień masz działającą aplikację z rejestrującymi się użytkownikami.

Rezultat jest naprawdę imponujący i wystarczający do walidacji pomysłu. Typowe środowisko wygląda tak:

Frontend: React lub Next.js, dostarczony na Vercel/Netlify przez git push. Tailwind CSS, komponenty shadcn/ui. Działa dobrze, wygląda profesjonalnie.
Backend/Baza danych: Supabase (zarządzany PostgreSQL + PostgREST + GoTrue auth). Polityki Row-level security wygenerowane przez AI. Edge Functions dla logiki server-side.
Auth: Supabase Auth (GoTrue). Social logins, magic links, tokeny JWT. Skonfigurowane przez dashboard Supabase, nie kod.
Infrastruktura: Żadna, którą kontrolujesz. Supabase Cloud obsługuje backend. Vercel/Netlify obsługuje frontend. DNS wskazuje na ich CDN. Nie ma IaC, nie ma VPC, nie ma separacji środowisk.

To doskonale uzasadniona architektura dla prototypu lub MVP z ograniczonym ruchem. Problem pojawia się, gdy produkt działa, użytkownicy przychodzą i musisz go utrzymywać na poważnie.

Gdzie aplikacje vibe coded nie wystarczają

Luka nie tkwi w kodzie aplikacji. Tkwi we wszystkim, czego AI nie wygenerował, bo o to nie poprosiłeś i platformy to abstrahują.

Brak separacji środowisk. Większość aplikacji vibe coded działa na jednym projekcie Supabase. Nie ma środowiska przedprodukcyjnego (staging), nie ma izolowanej bazy dev, nie ma sposobu na testowanie migracji bazy bez ryzykowania danych produkcyjnych. AI generuje polityki RLS, ale nie ma procesu ich weryfikacji ani testowania, zanim trafią do żywych użytkowników.

Brak infrastructure as code. Projekt Supabase został stworzony przez dashboard. Deployment Vercel podłączony przez UI. Nic nie jest reprodukowalne. Jeśli musisz odbudować środowisko (disaster recovery, audyt compliance, nowy region), klikasz przez dashboardy i masz nadzieję, że pamiętasz konfigurację.

Brak CI/CD poza deploy-on-push. Vercel i Netlify dostarczają przy każdym wypchnięciu do głównej gałęzi (branch main). I to tyle. Nie ma etapu testów, nie ma skanowania bezpieczeństwa, nie ma bramki akceptacji, nie ma canary deployment. Każdy commit trafia prosto na produkcję. Dla prototypu to szybkość. Dla produktu z płacącymi użytkownikami to ryzyko.

Brak monitoringu i alertów. Supabase oferuje podstawowe dashboardy. Vercel pokazuje wykonanie funkcji. Ale nie ma ustrukturyzowanego logowania, nie ma observability (distributed tracing), nie ma alertów na skoki błędów (error rate) czy degradację czasu odpowiedzi. Kiedy coś się psuje o 2 w nocy, dowiadujesz się ze skargi klienta na X lub LinkedIn.

Brak granic bezpieczeństwa. Klucz serwisowy Supabase (pełny dostęp do bazy) jest często wystawiony w zmiennych środowiskowych bez polityki rotacji. Nie ma WAF, nie ma izolacji sieciowej, nie ma zasady najmniejszego uprawnienia w komunikacji między serwisami. AI wygenerował polityki RLS, ale nikt nie zweryfikował, czy faktycznie zapobiegają wyciekowi danych między tenantami.

Brak strategii backupu i odtwarzania. Supabase Cloud robi dzienne backupy, ale point-in-time recovery jest dostępne tylko w planach Pro, a testowanie odtwarzania to proces manualny. Nie ma udokumentowanego RTO/RPO, nie ma przetestowanej procedury odzyskiwania, nie ma failover w wielu regionach.

Brak kontroli kosztów. Supabase i Vercel rozliczają na podstawie zużycia. Gdy ruch skacze (co jest celem), koszty rosną nieprzewidywalnie. Nie ma zarezerwowanej pojemności, nie ma alertów budżetowych, nie ma sposobu na right-sizing zasobów, bo nie kontrolujesz warstwy infrastruktury.

Ścieżka migracji: od platform zarządzanych do AWS

Celem nie jest przepisanie aplikacji. Kod wygenerowany przez Lovable działa. Celem jest owinięcie go w infrastrukturę, procesy i praktyki operacyjne, które zamieniają prototyp w system produkcyjny. Każdą migrację weryfikujemy względem AWS Well-Architected Framework, bo to nie akademicka checklista. To minimalna poprzeczka dla niezawodnego uruchamiania oprogramowania w skali.

Tak typowa infrastruktura vibe coded mapuje się na AWS:

Vercel/Netlify (hosting frontendu) → Amazon CloudFront + S3 dla zasobów statycznych, lub ECS Fargate jeśli uruchamiasz Next.js z SSR. Dostajesz pełną kontrolę nad cachingiem, domenami, regułami WAF i geo-restrykcjami.
Supabase Cloud (baza danych) → Amazon RDS for PostgreSQL lub Aurora PostgreSQL. Zarządzany, Multi-AZ, automatyczne backupy z point-in-time recovery, autentykacja IAM, szyfrowanie at rest i in transit.
Supabase Auth (GoTrue) → Amazon Cognito lub self-hosted Supabase Auth na ECS. Cognito daje zarządzane auth z federacją SAML/OIDC. Self-hosted GoTrue zachowuje istniejące flow autentykacji.
Supabase Edge Functions → AWS Lambda lub serwisy ECS Fargate. Lambda dla event-driven, krótkotrwałych zadań. ECS dla długo działających serwisów API potrzebujących trwałych połączeń.
Supabase Storage → Amazon S3 z CloudFront do dostarczania treści. Polityki lifecycle, wersjonowanie, replikacja cross-region jeśli potrzebna. Znacząco tańsze w skali.
Supabase Realtime → Self-hosted Supabase Realtime na ECS, lub AWS AppSync dla subskrypcji GraphQL, lub IoT Core dla połączeń WebSocket w skali.

Stosowanie Well-Architected Framework

Każdy filar adresuje konkretną lukę, którą aplikacje vibe coded dziedziczą po swoich zależnościach platformowych:

Doskonałość operacyjna To największa zmiana. Na Lovable/Vercel/Supabase utrzymanie jest niewidoczne. Platformy się tym zajmują. Na AWS jesteś właścicielem utrzymania, ale też definiujesz je świadomie. Jak to wygląda na AWS: - Infrastructure as Code (Terragrunt dla multi-account, Terraform dla single-account), żeby każdy zasób był wersjonowany, weryfikowalny i reprodukowalny - Strategia promocji środowisk: dev → przedprodukcyjne (staging) → produkcja z identyczną konfiguracją infrastruktury - Runbooki dla typowych zadań operacyjnych (skalowanie, failover, incident response) - Automatyzacja deployment z możliwością rollback, nie tylko "wypchnij do main i trzymaj kciuki" - Zmiana organizacyjna: kto jest właścicielem czego, jak weryfikowane są zmiany, jak eskalowane są incydenty
Bezpieczeństwo Aplikacje vibe coded polegają całkowicie na posturze bezpieczeństwa platformy. Polityki RLS Supabase to jedyna warstwa zabezpieczeń i zostały wygenerowane przez AI bez zewnętrznej weryfikacji. Jak to wygląda na AWS: - Izolacja sieciowa: prywatne subnety dla baz danych i serwisów backendowych, publiczne subnety tylko dla load balancerów - Role IAM z politykami least-privilege dla każdego serwisu - Zarządzanie sekretami przez AWS Secrets Manager z automatyczną rotacją - WAF na CloudFront i ALB do blokowania typowych wzorców ataku - Skanowanie bezpieczeństwa w pipeline CI/CD: SAST, sprawdzanie podatności zależności, skanowanie obrazów kontenerów - Logowanie audytowe przez CloudTrail z tamper-proof storage na osobnym koncie
Niezawodność Pojedynczy projekt Supabase to SPOF (single point of failure) w jednym regionie. Lovable nie oferuje SLA, które możesz przekazać swoim klientom. Jak to wygląda na AWS: - Bazy danych Multi-AZ (RDS lub Aurora) z automatycznym failover - Serwisy ECS działające w wielu availability zones - Weryfikacja stanu (health check) i auto-recovery dla wadliwych kontenerów - Zdefiniowane targety RTO/RPO z przetestowanymi procedurami backupu i odtwarzania - Circuit breaker i wzorce graceful degradation w warstwie aplikacji
Efektywność wydajności Serverless functions Vercela i współdzielona infrastruktura Supabase działają dobrze przy niskim ruchu. W skali, konkurujesz o zasoby z innymi użytkownikami na tej samej platformie. Jak to wygląda na AWS: - Right-sized compute: wybór między Lambda (burst, event-driven) i Fargate (steady-state, przewidywalny) na podstawie faktycznych wzorców ruchu - Database connection pooling (RDS Proxy) do obsługi limitów połączeń, które plagują Supabase w skali - Strategia cachingu CloudFront dopasowana do wzorców Twoich treści - Polityki auto-scalingu oparte o metryki istotne dla Twojego środowiska, nie generyczne progi platformy
Optymalizacja kosztów Supabase Pro to $25/miesiąc za projekt, dopóki nie potrzebujesz więcej compute, storage czy bandwidth. Vercel Pro to $20/osobę/miesiąc plus usage. Koszty rosną nieprzewidywalnie wraz z sukcesem. Jak to wygląda na AWS: - Zarezerwowana pojemność dla przewidywalnych bazowych obciążeń (Savings Plans, Reserved Instances) - Spot capacity dla niekrytycznego przetwarzania wsadowego - Polityki lifecycle S3 do przenoszenia rzadko dostępnych danych na tańsze warstwy storage - AWS Budgets z alertami, zanim trafisz na nieoczekiwane progi - Przeglądy right-sizingu: dopasowanie alokacji zasobów do faktycznego wykorzystania, nie szacunków na najgorszy scenariusz

Budowanie warstwy DevOps, którą vibe coding pominął

Nasza zweryfikowana przez AWS ekspertyza w zakresie nowoczesnych praktyk DevOps mówi nam, jak powinien wyglądać dojrzały pipeline dostarczania. Aplikacje vibe coded nie mają nic z tego. Nie dlatego, że narzędzia są złe, ale dlatego, że platformy celowo ukrywają tę warstwę, żeby zmniejszyć tarcie. Gdy przenosisz się na AWS, budujesz to właściwie od początku.

Projektowanie pipeline CI/CD

Na Lovable/Vercel model deployment to: wypchnięcie do głównej gałęzi (branch main) → deployment na produkcję. Bez bramek, bez testów, bez akceptacji. Odpowiednik na AWS to nie tylko pipeline. To bramka jakości i bezpieczeństwa.

Pipeline produkcyjny dla zmigrowanej aplikacji vibe coded typowo wygląda tak:

1. Source stage: PR otwarty na GitHub uruchamia pipeline.
2. Build stage: Aplikacja jest konteneryzowana (Docker build), zależności są zablokowane, artefakty buildów wersjonowane.
3. Test stage: Testy jednostkowe, testy integracyjne na tymczasowej bazie testowej, testy kontraktowe dla granic API.
4. Security stage: Skanowanie SAST (Semgrep lub SonarQube), sprawdzanie podatności zależności (Trivy, Snyk), skan obrazu kontenera przed wypchnięciem do ECR.
5. Deployment na staging: Automatyczne dostarczenie na środowisko przedprodukcyjne (staging), które odzwierciedla produkcję. Testy dymne (smoke tests) uruchomione na tym środowisku.
6. Bramka akceptacji: Manualna lub automatyczna akceptacja przed deployment na produkcję. Dla zespołów, które tego potrzebują, tu QA zatwierdza.
7. Deployment na produkcję: Rolling update przez ECS z walidacją health check. Automatyczny rollback, jeśli nowa wersja nie przechodzi weryfikacji stanu.
8. Walidacja po dostarczeniu: Synthetic monitoring potwierdza, że krytyczne ścieżki użytkownika nadal działają. Alerty strzelają, jeśli ilość błędów (error rate) skacze w pierwszych 15 minutach.

My budujemy to w GitHub Actions z federacją OIDC do AWS. Bez długożyjących kluczy dostępowych, bez współdzielonych sekretów. Każde środowisko (dev, przedprodukcyjne, produkcja) żyje na własnym koncie AWS dla izolacji zasięgu awarii.

Preview environments (zamiennik Vercel preview deploys)

Jedna rzecz, którą zespoły cenią w Vercel: każdy PR dostaje live preview URL. To jest koniecznością dla większości zespołów migrujących. Na AWS budujesz to sam, ale rezultat jest mocniejszy.

Wzorzec: workflow GitHub Actions uruchamia się na otwarciu/aktualizacji PR. Stawia krótkotrwały serwis ECS (lub dedykowaną dystrybucję CloudFront wskazującą na S3 bucket dla aplikacji statycznych) z unikalną subdomeną. Preview environment łączy się z dedykowanym schematem bazy danych lub branch-specific projektem Supabase, jeśli zachowujesz Supabase dla prędkości developmentu. Gdy PR jest zmergowany lub zamknięty, inny workflow usuwa środowisko preview.

To wymaga wysiłku na początku, ale gdy jest wdrożone, developer experience dorównuje lub przekracza to, co oferował Vercel, z dodatkiem uruchamiania na prawdziwej infrastrukturze AWS zamiast abstrakcji platformy.

Infrastructure as Code

Każdy zasób, od którego zależy aplikacja (VPC, subnety, security groups, instancja RDS, klaster ECS, load balancery, dystrybucje CloudFront, role IAM, sekrety), jest zdefiniowany w Terraform lub Terragrunt. Nic nie jest tworzone przez konsolę AWS.

To daje Ci:

  • Reprodukowalność: postawienie kompletnej kopii środowiska w kilka minut, do disaster recovery lub ekspansji regionalnej
  • Audytowalność: każda zmiana infrastruktury przechodzi przez pull request z peer review
  • Wykrywanie driftu: automatyczne weryfikacje wychwytują, gdy ktoś modyfikuje zasoby poza kodem
  • Dowody compliance: audytorzy mogą weryfikować Twoją konfigurację infrastruktury jako kod zamiast klikać przez konsole

Dla zespołów przychodzących ze świata vibe coding to największy upgrade operacyjny. Twoja infrastruktura przestaje być tajemnicą i staje się wersjonowanym, udokumentowanym, weryfikowalnym artefaktem.

Monitoring i observability

Aplikacje vibe coded typowo mają zero observability. Dowiadujesz się, że coś jest zepsute, gdy użytkownik Ci powie. Na AWS budujesz observability od dnia pierwszego:

  • Ustrukturyzowane logowanie: logi aplikacji wysyłane do CloudWatch Logs lub platformy zewnętrznej (Datadog, Grafana Cloud) ze spójnymi formatami i correlation ID
  • Metryki: CloudWatch lub Prometheus dla czasu odpowiedzi, ilości błędów (error rate), wykorzystania puli połączeń do bazy, głębokości kolejek
  • Alerty: integracja z PagerDuty lub Opsgenie z wielopoziomową severity. Krytyczne alerty budzą kogoś. Warningi tworzą tickety.
  • Dashboardy: dashboardy na poziomie serwisu pokazujące cztery golden signals (latency, traffic, errors, saturation) na pierwszy rzut oka
  • Observability (distributed tracing): X-Ray lub OpenTelemetry do śledzenia żądań między serwisami, niezbędne gdy monolit zaczyna dzielić się na mikroserwisy

Proces migracji w praktyce

Faktyczna migracja przebiega fazowo. Nie rekomendujemy big-bang cutover dla aplikacji vibe coded, bo zazwyczaj jest nieudokumentowane zachowanie, które ujawnia się dopiero pod prawdziwym ruchem.

Faza 1: Audyt i architektura (1 tydzień) Mapujemy bieżącą aplikację: każdą tabelę Supabase, politykę RLS, Edge Function, bucket storage i zmienną środowiskową. Dokumentujemy przepływy danych i identyfikujemy, co jest stateless vs stateful. Projektujemy docelową architekturę AWS zgodnie z Well-Architected Framework. Tworzymy porównanie TCO pokazujące prognozowane koszty AWS vs obecne wydatki na Supabase + Vercel.
Faza 2: Budowa infrastruktury (1-2 tygodnie) Budujemy całe środowisko AWS w Terraform/Terragrunt. VPC, subnety, RDS, klaster ECS, ALB, CloudFront, role IAM, sekrety, monitoring. Wszystkie środowiska (dev, przedprodukcyjne, produkcja) są tworzone jednocześnie z tej samej bazy kodu ze zmiennymi specyficznymi dla środowiska.
Faza 3: Konteneryzacja aplikacji (1 tydzień) Piszemy Dockerfile dla aplikacji. Obsługujemy konfigurację build-time vs runtime. Zapewniamy, że health check, graceful shutdown i obsługa sygnałów działają poprawnie. Jeśli aplikacja to Next.js static export, może to być po prostu deployment S3 + CloudFront bez potrzeby kontenerów.
Faza 4: Budowa pipeline CI/CD (1 tydzień) Budujemy pełny pipeline GitHub Actions: build, test, scan, deploy. Implementujemy preview environments. Konfigurujemy federację OIDC. Ustawiamy notyfikacje o dostarczeniach i procedury rollback.
Faza 5: Migracja danych (1 tydzień) Migracja bazy PostgreSQL z Supabase do RDS. Dla aplikacji, które mogą tolerować okno serwisowe (większość aplikacji vibe coded na tym etapie może), pg_dump/restore z zaplanowanym downtime to najprostsza ścieżka. Migracja obiektów storage z Supabase Storage do S3. Migracja użytkowników auth, jeśli odchodzimy od GoTrue.
Faza 6: Przełączenie DNS i walidacja (2-3 dni) Przełączamy DNS na infrastrukturę AWS. Utrzymujemy oryginalny setup Supabase/Vercel w trybie read-only przez 1-2 tygodnie jako opcję rollback. Weryfikujemy, że wszystko działa pod prawdziwym ruchem. Wyłączamy starą platformę, gdy jest stabilna.

Całkowity harmonogram dla typowej aplikacji vibe coded: 5-8 tygodni. Bardziej złożone środowiska z wieloma serwisami lub wymaganiami compliance rozciągają to do 8-12 tygodni.

Kiedy zostać na Lovable/Supabase Cloud

Nie każda aplikacja vibe coded musi być migrowana. Platformy są dobrym wyborem, gdy:

  • Nadal walidujecie product-market fit i szybkość dostarczania jest ważniejsza niż dojrzałość operacyjna
  • Ruch jest niski i przewidywalny (setki, nie tysiące, równoczesnych użytkowników)
  • Nie macie wymagań compliance (SOC 2, ISO 27001, Cyber Essentials Plus, HIPAA)
  • Zespół jest mały i nie ma możliwości zarządzania infrastrukturą
  • Aplikacja jest wewnętrzna lub niekrytyczna

Migracja ma sens, gdy którekolwiek z tych staje się prawdziwe:

  • Macie płacących klientów, którzy oczekują gwarancji dostępności, jakich nie możecie zagwarantować na współdzielonej platformie
  • Potrzebujecie izolacji sieciowej, prywatnych subnetów lub łączności VPN z systemami partnerów
  • Wymagania compliance lub regulacyjne wymagają kontroli infrastrukturalnych, których platformy nie zapewniają
  • Koszty rosną nieprzewidywalnie i potrzebujecie planowania pojemności i cen zarezerwowanych
  • Potrzebujecie właściwego pipeline CI/CD ze skanowaniem bezpieczeństwa, bramkami testowymi i kontrolowanymi dostarczeniami
  • Chcecie posiadać swoją infrastrukturę jako zasób biznesowy, zdefiniowany i wersjonowany w kodzie

Vibe coding nie jest problemem

Żeby było jasne: nie jesteśmy przeciwko vibe coding. Narzędzia jak Lovable czy Bolt robią naprawdę imponującą robotę, pozwalając przejść od pomysłu do działającego oprogramowania w godziny zamiast tygodni. Kod wygenerowany przez AI jest często czysty, dobrze ustrukturyzowany i funkcjonalny. Problem nie leży w jakości kodu.

Problem polega na tym, że przejście od “działa” do “jest production-ready” wymaga warstwy inżynierii, której żaden AI builder dziś nie zapewnia: własność infrastruktury, automatyzacja dostarczania, zabezpieczenia, observability, disaster recovery i zarządzanie kosztami. Ta warstwa zamienia side project w biznes.

Prototyp vibe coded to Twój punkt startowy, nie Twój dług techniczny. Traktuj wygenerowany kod jako zwalidowaną specyfikację tego, co produkt powinien robić, a potem zbuduj fundament operacyjny, którego potrzebuje, żeby działać niezawodnie w skali.

Jerzy Kopaczewski

Zbudowałeś coś w Lovable lub Bolt, co jest gotowe do skalowania?

Umów bezpłatną 30-minutową rozmowę. Omówimy Twój setup i przygotujemy roadmapę migracji.

Jak możemy pomóc

Migrowaliśmy aplikacje z Heroku, DigitalOcean, Vercel i Supabase Cloud do AWS. Każda migracja jest dostarczana z infrastructure as code, zautomatyzowanym CI/CD, monitoringiem i udokumentowanymi runbookami. Docelowa architektura jest projektowana zgodnie z AWS Well-Architected Framework. Nowe środowisko spełnia najlepsze praktyki bezpieczeństwa, niezawodności, wydajności i kosztów od pierwszego dnia.

Jako AWS Advanced Tier Partner mamy dostęp do programów finansowania, które mogą pokryć znaczną część kosztów migracji. W zależności od skali i sytuacji programy takie jak Proof of Concept (PoC) czy Migration Acceleration Program (MAP) mogą pokryć 50-80% kosztu zaangażowania. Kwalifikowalność oceniamy w ramach wstępnej rozmowy.

Zobacz nasze case study migracji z Heroku do AWS po szczegółowy przykład, jak podchodzimy do migracji platformowych. Chcesz ocenić, czy migracja ma sens dla Twojej aplikacji vibe coded? Nasze usługi migracji do chmury zaczynają się od niezobowiązującej oceny Twojego obecnego środowiska.

AWS migracja do chmury vibe coding Lovable Well-Architected Framework DevOps Supabase
jerzy.webp
Jerzy Kopaczewski
Współzałożyciel i CTO

Spis treści
Przeczytaj również

Przeczytaj również:

Poprzedni post Następny post