← Sve reference

Studija slučaja

GCH Cloudflare migracija

Seljenje portfolija aplikacija za Greater Change Health sa jednog deljenog VPS-a na Cloudflare edge mrežu, i sa Supabase-a na Neon Postgres - aplikaciju po aplikaciju.

Realizovano sa našim partneromHenge
GCH Cloudflare migracija - logo
GCH Cloudflare migracija - prikaz projekta

O projektu

Jedan VPS, jedan obrazac migracije, ponovljen kroz ceo portfolio.

Platforma za naplatu i Nora bile su dve od oko osam klijentskih aplikacija koje smo za Greater Change Health prvobitno pustili na jednom deljenom VPS-u. Kako je portfolio rastao, preselili smo ga, zajedno sa susednim aplikacijama, na Cloudflare edge mrežu, i sa Supabase-a na Neon Postgres - tretirajući svaku aplikaciju kao zaseban, pažljivo raspoređen migracioni projekat.

Izazov

Deljeni VPS je jedan incident udaljen od toga da obori sve klijente.

Oko osam klijentskih aplikacija, uključujući platformu za naplatu za Greater Change Health i platformu Nora, plus nekoliko drugih internih kontrolnih tabli, radilo je na jednom Ubuntu VPS-u. Besplatni Supabase paket ograničava nalog na dve aktivne baze, pa je rast portfolija značio žongliranje sa više Supabase naloga samo da bi svaka aplikacija ostala na besplatnom planu.

Šta smo uradili

Aplikaciju po aplikaciju, uz proveru svakog koraka.

Svaku aplikaciju smo tretirali kao zaseban migracioni projekat: svaku Next.js aplikaciju prebacili smo sa verzije 14 na 15 (React 18 na 19) kroz OpenNext kako bi mogla da radi kao Cloudflare Worker, a svaku Postgres bazu preselili na Neon, čiji besplatni paket dozvoljava do 100 projekata po nalogu umesto dva koliko daje Supabase. Podaci su preneti idempotentnim skriptama koje samo čitaju - povlače svaki red preko Supabase REST API-ja i proveravaju broj redova pre prelaska - a svaki domen je prvo prebačen u DNS-only režim i prošao smoke test prijave i podataka pre uključivanja Cloudflare proxy-ja, dok je originalni VPS sve vreme ostao aktivan kao rezervni put za povratak.

Šta je migracija zaista obuhvatala

Pravi problemi edge okruženja, a ne samo promena hostinga.

01Bez nativnih Node dodataka

Workeri ne mogu da pokreću nativni bcrypt, pa je heširanje lozinki prebačeno na bcryptjs ili Web Crypto, u zavisnosti od aplikacije.

02Stateless kao pravilo

Aplikacije koje su čuvale podatke u lokalnim JSON fajlovima ili se oslanjale na stalni Postgres pool zahtevale su prave izmene skladišta podataka: Cloudflare D1 za Noru, Neon serverless drajver za ostale.

03Suptilne razlike u obliku podataka

Neon drajver vraća nativne JS datume tamo gde je Supabase REST API vraćao stringove, a stari Supabase auth kolačići bili su toliko veliki da su obarali Nginx. Oba problema su morala da se pronađu i reše, a ne da se pretpostavi da ne postoje.

04Postepen prelazak DNS-a

Prvo su prebačeni mail zapisi, a zatim je svaka aplikacija prelazila iz DNS-only režima na proxy tek kada prođe sopstveni smoke test, dok je originalni VPS ostao aktivan kao rezerva.

Rezultati

Portfolio objedinjen na jednoj edge platformi.

Rezultat je čitav portfolio Postgres baza objedinjen na jednom Neon nalogu, umesto na nekoliko Supabase naloga razdvojenih samo da bi ostali u okviru besplatnih limita, i oko osam aplikacija preseljenih sa jednog deljenog VPS-a na Cloudflare edge mrežu - pri čemu je većini usput morao iznova da se izgradi sloj za identitet korisnika, jer Neon ne dolazi sa servisom za autentifikaciju kao Supabase. Svaka aplikacija je zadržala svoj put za povratak dok njen prelazak nije potvrđen.

Razgovarajmo o vašem projektu