Supabase 탈출하기?
수파베이스는 참 편하고 좋은데 비싸다. 그뿐이다.. 그래서 대안을 좀 적어봄
최근들어 사이드프로젝트 용도로 가장 자주 사용했던 DB 서비스는 당연 수파베이스(Supabase). 이놈은 듣기엔 클라우드 DB 솔루션이지만 실제론 Auth, Storage, Realtime 등 별 기능을 다 제공한다. 그래서 이제 수파베이스는 BaaS(Backend as a service)가 되었고, 누군가 AI로 코딩해볼까 하면 이제 AI 챗봇조차 수파베이스를 추천할 지경이다.
말 그대로 정말 사용하기 편하다. 클릭 몇 번이면 프로젝트가 만들어지고, 심지어 무료 계정도 두 개까지는 무료 프로젝트를 만들어볼 수 있으며 사용량도 꽤나 관대한 편이라고 생각한다. 스토리지 서비스를 따로 쓸 필요도 없고, Supabase Auth로 SSO 연동도 아주 간편하며, Realtime 서버도 직접 구축할 필요 없이 원래 있던 걸 그대로 사용하면 되니까
그래서 지금도 내 메인 서비스는 수파베이스로 운영하고 있다.
하지만, 요즘 새로 만드는 것들에는 더 이상 사용하지 않는다.
무료 사용량은 몇 개가 발목을 잡는다.
수파베이스는 아무리 각 프로젝트가 작은 리소스를 사용하고 있다 해도 최대 2개의 무료 프로젝트만 운영할 수 있고, 더 사용하려면 새로운 부계정을 사용하든가 Pro 이상의 요금제를 사용해야 한다. 물론 실제로 돈을 버는 프로덕션 제품에는 충분히 적용할 만하지만, MVP만 간단히 만들어 보는 정도에서 프로젝트마다 돈을 추가로 계속 내기는 부담스러운 부분이 있다.
특히 스토리지 용량 때문에 유료로 업그레이드 하거나 다른 외부 솔루션을 연동하는 경우가 많다. 프로젝트당 무료로 500MB까지 사용할 수 있는데, 프로젝트가 어떤 것이냐에 따라 500MB는 충분할 수도, 아니면 극도로 부족할 수도 있음.
무료 플랜에서는 브랜칭이 안 된다
이건 사실 Supabase CLI로 어느 정도 해결은 가능해서 큰 문제는 아니지만, 이 또한 작은 프로젝트에만 해당되는 말일 뿐 원격 환경에서의 미리보기 테스트도 필요한 프로덕션 수준에서는 여전히 문제가 된다.
다만 원격 환경 브랜칭까지 할 정도라면, 어느 정도 투자를 할 만한 규모의 프로젝트일지도.
PITR은 무료로 이용할 수 없다
그 말은 곧 특정 시점으로 복구할 수 없고, 1일 단위로만 복구해야 한다는 뜻이다. 심지어 이 PITR은 프로 플랜에서조차 제공해주질 않는다! 정말 어이가 없는 부분.. 참고로 무료 플랜에선 아예 복구 안됨.
많은 것이 통합된 BaaS를 이용할 수록, 발이 묶인다.
Supabase PostgreSQL, Auth, Realtime, Storage 등 서비스를 전부 사용한다면 이걸 나중에 다른 곳으로 마이그레이션하는 것도 정말 큰 대공사다.
이미 내 코드베이스는 이 서비스들을 다 사용하는 것을 전제로 쓰여 있고, 다른 서비스로 바꾸는 순간 모두 작동하지 않는 코드가 될 테니까. 아무리 AI가 이런 걸 잘 해준다 해도, 이미 운영하고 있고 유저가 있는 서비스라면 고민이 많이 될 수 밖에 없다.
그럼 어떻게 해결해야 할까? 내가 생각했을 때 쉬운 방식은 아래에 있는 정도인듯.
Supabase + CloudFlare R2
Supabase 스토리지 500MB가 가장 먼저 다 차는 경우가 많아서, 실제로 많이 쓰는 조합이다. CloudFlare R2는 10GB까지가 무료이고, 읽기/쓰기 횟수도 아주 관대해서 사실상 완전 무료로 쓸 수 있음
CORS 설정 같은걸 좀 건드려줘야 되긴 하지만 솔직히 별 일도 아님
이미 수파베이스를 쓰고 있어서 다른 서비스로 마이그레이션하기는 좀 그렇다면 이렇게 쓰기 좋을 듯
Neon + CloudFlare R2 -> 이 블로그도 이 스택으로 만들었음
Supabase의 무료 프로젝트 2개 제한이나 PITR 불가한 건 근본적으로 해결할 수 없으니, 더 무료 사용자 친화적인 Neon으로 넘어가는 방법도 있다.
사실 Neon도 Auth나 Storage를 제공하긴 하는데, 이 스토리지 기능이 아주 신비롭다. 아직 베타라 그렇긴 한데, 아시아와 가까운 리전에서는 스토리지를 쓸 수가 없음(..) 그래서 꼭 네온의 것을 쓰려면 오하이오 리전을 써야 하는데 그만큼 레이턴시를 감수해야 한다는 뜻이다.
대신 얘는 오브젝트 스토리지를 5GB나 준다. 웬만하면 무료로 가능한 수준이고 무려 수파베이스의 10배!
만약 파일이나 이미지, 영상 등을 많이 쓰거나 리전이 지원 불가 리전이라면 CF R2를 붙여 보강할 수 있다.
참고로 수파베이스와 달리 네온은 서울 리전이 없음. 그래도 (오브젝트 스토리지는 없지만) 싱가포르 쪽으로 해두면 딜레이는 크게 문제되지 않는 수준이다. 게다가 무료 플랜도 브랜칭이 자유롭고 프로젝트 갯수 제한도 없으며 PITR이 된다!
처음부터 AWS/GCP/CF/Azure로 직접 구축
애초에 Supabase나 Neon이나 둘 다 이 서비스들을 감싸는 Wrapper에 불과함. 그래서 그냥 근본적으로 클라우드 컴퓨팅 솔루션을 제공하는 곳에서 직접 구현하는 것도 충분히 고려할 만한 방식이다.
다만 그게 정말 쉬웠다면 수파베이스나 네온같은 서비스는 이미 사라졌겠지. 확실히 편하기 때문에 존재하는 것이고 반대로 말하면 직접 구현한다면 다소 번거로울 수 있다는 점이다. 그러나 더 근본적인 제어를 직접 할 수 있다는 것도 장점이고 비용 절감만 잘 구현해두면 당연히 Wrapper를 거치는 것보다 저렴하게 사용할 수 있다. AI가 잘 되어 있으니 충분히 도움을 받아 세팅할 만 하다.
최근에 수파베이스에 무료 프로젝트를 더 추가하려다가 막혀서, 몇 번 추천받았던 Neon과 리전 문제로 인해 CloudFlare R2도 같이 써 보면서 간단히 요약해봤음.
보통 CF는 '사람인지 확인하고 있습니다' 화면에서나 자주 봤지 실제로 써본 적은 없었는데, UI도 그렇고 상당히 잘 갖춰져 있다고 느껴진다. 한 화면에 정보 100만개씩 주던 레거시 솔루션들의 느낌이 별로 없고 최신 솔루션들처럼 단순하게 잘 구성해뒀음 (참고로 지금껏 개발자용 콘솔이나 대시보드가 가장 쓰레기라고 느낀 곳은 메타였음. 여기는 유저한테 사용법을 알려주는게 아니라 빨리 꺼지라고 총 쏘는 수준임)