전통적으로 Nginx 웹서버 + MySQL을 쓰던 것이 요즘은 개발자는 프론트엔드에만 집중하고 백엔드는 아웃소싱하는 그런 시대입니다.
전통적인 DB와 최근의 DB 서비스는 뭐가 다른지 한번 알아보겠습니다.
전통적인 MySQL이나 Oracle 같은 데이터베이스를 직접 구축하여 사용하는 방식과 Firebase, Supabase 같은 현대적인 BaaS(Backend-as-a-Service) 데이터베이스 서비스는 아키텍처, 개발 속도, 관리 방식에서 근본적인 차이점을 가집니다.
1. 중간 백엔드 서버의 유무 (가장 큰 아키텍처 차이)
- 전통적인 방식: 사용자가 웹이나 모바일에 접속하면 데이터베이스에 바로 접근하지 못합니다. 데이터의 보안과 인증을 처리하기 위해 중간에 Spring, PHP, Express, Django 같은 백엔드 웹 서버가 존재하며, 이 서버가 DB 조회를 대행하여 결과를 가공한 뒤 클라이언트에 전달합니다.
- BaaS DB 서비스: 중간에 거쳐야 하는 복잡한 백엔드 서버 애플리케이션을 생략하거나 클라우드 서비스가 대신 관리해 줍니다. 프론트엔드 자바스크립트나 모바일 앱 코드에서 클라이언트 SDK를 통해 데이터베이스에 직접 쿼리를 전송하고 안전하게 접속할 수 있습니다.
2. 자동 생성되는 API와 개발 생산성
- 전통적인 방식: DB에 데이터를 넣고 빼려면 개발자가 직접 엔드포인트를 설계하고 데이터를 가공하는 REST API나 GraphQL 코드(Route Handler)를 일일이 수동으로 작성해야 합니다. 이 작업에만 보통 수주의 시간이 소요됩니다.
- BaaS DB 서비스: 데이터베이스 테이블을 만들기만 하면, 해당 데이터를 조회하고 입력할 수 있는 REST 및 GraphQL API 엔드포인트가 즉시 자동으로 생성됩니다. 개발자는 백엔드 코드 작성 없이 프론트엔드 개발에만 온전히 집중할 수 있어 개발 기간을 몇 주에서 며칠 단위로 크게 단축시킵니다.
3. 단일 플랫폼에 통합된 종합 백엔드 기능
- 전통적인 방식: MySQL 등은 오직 '데이터 저장' 역할만 수행하는 단일 엔진입니다. 앱을 출시하려면 로그인용 인증 서버, 이미지 저장을 위한 스토리지 서버, 푸시 서버 등을 각각 따로 설치하고 서로 연결하는 코드를 직접 개발해야 합니다.
- BaaS DB 서비스: 데이터베이스는 물론이고 사용자 인증(Auth), 파일 스토리지(Storage), 서버리스 함수(Functions), 실시간 동기화(Real-time) 기능 등이 단일 대시보드와 하나의 SDK 환경 아래 완벽하게 일체화되어 제공됩니다.
4. 데이터베이스 엔진 레벨의 강력한 보안
- 전통적인 방식: 해킹이나 데이터 유출을 막는 권한 제어 로직을 백엔드 비즈니스 코드(Application Layer)에 의존하여 처리합니다. 만약 비즈니스 코드에 보안 구멍이나 버그가 생기면 전체 데이터가 노출될 수 있습니다.
- BaaS DB 서비스: 클라이언트의 인증 정보(JWT 토큰 등)가 API 요청 헤더에 자동으로 첨부되며, 데이터베이스 엔진 레벨에서 작동하는 행 단위 보안(RLS, Row Level Security) 정책이나 보안 규칙을 통해 유저의 권한을 직접 검증합니다. 비즈니스 코드에 버그가 있더라도 데이터베이스 계층에서 비인가 접근을 원천 차단하는 다중 방어선 역할을 합니다.
5. 인프라 관리 및 호스팅(서버리스) 편의성
- 전통적인 방식: 서버 컴퓨터를 직접 사거나 빌린 뒤 데이터베이스 엔진(MySQL 등)을 수동으로 설치하고 설정해야 합니다. 백업, 보안 패치, 커넥션 풀링(Connection Pooling), 트래픽 증가에 따른 물리적 하드웨어 확장 등을 개발자나 데이터베이스 관리자(DBA)가 직접 운영해야 하므로 리소스가 매우 큽니다.
- BaaS DB 서비스: 인프라 전체가 100% 클라우드 관리형(서버리스)으로 호스팅됩니다. 커넥션 풀 조절, 자동 백업, 이중화, 물리적 하드웨어 확장 등을 공급업체(Google, Supabase 등)가 알아서 처리해 주므로 전기 콘센트를 꽂아 쓰듯 DB 서비스를 사용하기만 하면 됩니다.
뭔가 개발자가 굉장히 편리해진 느낌입니다.
그럼 대표적인 BaaS 서비스인 Firebase과 Supabase는 무슨 차이가 있을까요?

Firebase는 구글이 지원하는 강력하고 성숙한 Backend-as-a-Service(BaaS) 플랫폼이며, Supabase는 이를 대체하기 위해 등장한 오픈소스 기반의 BaaS 플랫폼입니다. 두 플랫폼 모두 인증, 데이터베이스, 스토리지, 서버리스 함수 등을 제공하지만, 그 기반 기술과 철학에서 큰 차이를 보입니다.
핵심적인 비교 포인트는 다음과 같습니다.
1. 데이터베이스 구조: NoSQL vs 관계형 SQL (가장 큰 차이점)
- Firebase (Firestore/Realtime DB): NoSQL 기반의 문서형(Document) 데이터베이스를 사용합니다. 데이터 구조가 단순하고 계층적일 때 유리하며 초기 개발 속도가 빠릅니다. 하지만 복잡한 관계형 데이터 모델링이나 JOIN 연산이 불가능에 가까워, 데이터가 복잡해질수록 데이터를 중복 저장(비정규화)해야 하는 단점이 있습니다.
- Supabase: 세계에서 가장 진보된 오픈소스 관계형 데이터베이스인 PostgreSQL을 기반으로 합니다. SQL의 강력한 JOIN, 집계 기능, 외래 키(Foreign Key) 제약 조건 등을 모두 사용할 수 있어 구조화된 데이터 관리에 매우 탁월합니다. 또한 pgvector 확장을 통해 AI 및 벡터 검색 기능도 기본적으로 지원합니다.
2. 과금 모델 (비용 예측 가능성)
- Firebase: **사용한 만큼 지불(Pay-as-you-go)**하는 모델입니다. 데이터베이스의 읽기, 쓰기, 삭제 연산 횟수에 따라 과금됩니다. 트래픽이 적을 때는 무료 티어(Spark)로 충분하지만, 앱이 확장되거나 비효율적인 쿼리(한 번에 수천 개의 문서를 읽는 등)가 발생하면 **'요금 폭탄'**을 맞을 위험이 있습니다.
- Supabase: 컴퓨팅 및 스토리지 리소스 기반의 월 정액제($25/월 Pro 플랜 등)를 채택하고 있습니다. 읽기/쓰기 횟수에 따른 추가 과금이 없기 때문에 대규모 트래픽에서도 비용 예측이 가능하고 훨씬 저렴합니다. (단, 무료 티어의 경우 1주일간 사용이 없으면 프로젝트가 일시 중지(Pause)되는 제약이 있습니다.)
3. 실시간 동기화 및 오프라인 지원
- Firebase: 처음부터 실시간 동기화를 위해 만들어졌기 때문에 채팅이나 라이브 대시보드 구축에 있어 업계 표준이라 할 수 있습니다. 특히 **강력한 내장 오프라인 지원(Offline persistence)**을 통해 인터넷이 끊겨도 로컬 캐시를 이용해 앱이 동작하고, 연결 시 자동으로 동기화됩니다.
- Supabase: Postgres의 WAL(Write-Ahead Log)을 이용해 WebSocket으로 실시간 변경 사항을 구독할 수 있습니다. 하지만 기본적인 오프라인 동기화 기능이 없어서 오프라인 우선(Offline-first) 앱을 만들려면 Drift나 PowerSync 같은 서드파티 도구와 연동하여 직접 구축해야 합니다.
4. 인증(Auth) 및 보안(Security)
- Firebase: 별도의 자체 보안 규칙(Security Rules DSL) 언어를 사용하여 클라이언트 SDK의 접근을 제어합니다. 모바일 환경에서 매우 성숙하며 빠르게 설정할 수 있습니다.
- Supabase: Postgres의 **행 단위 보안(Row Level Security, RLS)**을 사용합니다. 인증된 사용자의 JWT 토큰과 연동되어 데이터베이스 계층 자체에서 SQL로 권한을 강력하게 제어합니다. API 코드에 버그가 있어도 DB단에서 막아주어 안전하지만, 초보자가 RLS 설정을 누락하면 데이터가 모두에게 노출되는 실수를 범하기 쉽습니다.
5. 생태계 및 벤더 종속성(Vendor Lock-in)
- Firebase: 구글 클라우드에 강하게 종속되어 있는 독점(Proprietary) 서비스입니다. 하지만 푸시 알림(FCM), 충돌 분석(Crashlytics), 애널리틱스 등 모바일 앱 개발에 필수적인 도구들이 완벽하게 내장되어 있습니다.
- Supabase: 100% 오픈소스이며, 원한다면 자체 서버에 직접 호스팅(Self-Hosting)할 수 있어 벤더 종속성 위험이 없습니다. 다만, 푸시 알림이나 크래시 리포팅 같은 모바일 전용 기능은 내장되어 있지 않아 OneSignal 등 다른 외부 서비스를 붙여야 합니다.
💡 요약: 어떤 플랫폼을 선택해야 할까요?
- Firebase를 선택해야 하는 경우: 오프라인 지원과 푸시 알림이 필수적인 모바일 앱(iOS/Android/Flutter)을 만들 때, 데이터 구조가 단순하고 실시간 채팅/협업 기능이 앱의 핵심일 때 추천합니다.
- Supabase를 선택해야 하는 경우: B2B SaaS, 이커머스 등 복잡한 관계형 데이터(SQL, JOIN)를 다루어야 할 때, 트래픽 증가에 따른 비용을 고정하고 예측하고 싶을 때, 특정 클라우드에 종속되지 않고 오픈소스를 선호할 때, 또는 벡터 데이터베이스(AI)가 필요할 때 추천합니다.
https://youtu.be/AL8o3a-c5Ys?si=n82oo5-Rpa2YZ4cj

'바이브코딩' 카테고리의 다른 글
| #2 PHP를 통한 REST API 구현 예제 (0) | 2026.07.06 |
|---|---|
| #1 REST API란? (0) | 2026.07.06 |
| SQL vs NoSQL 데이터베이스 선택 (0) | 2026.07.06 |
| 배포와 CI/CD 완벽가이드 (0) | 2026.07.06 |
| 도커의 모든 것: 완벽한 밀키트 (0) | 2026.07.05 |