서버리스(Serverless)는 최소한의 유지보수 비용과 운영 비용으로 애플리케이션을 처음부터 끝까지 구축하려는 개발자에게 매력적인 선택입니다. 서버리스 함수를 활용하면 백엔드 인프라를 직접 관리하지 않고도 자신의 코드를 실행할 수 있습니다. 하지만 서버리스 함수는 설계상 무상태(stateless)이기 때문에 반드시 외부 데이터 저장소가 필요합니다. 그렇다면 어떤 데이터베이스가 서버리스에 가장 적합할까요?
다행히도 많은 데이터베이스 벤더들이 서버리스 트렌드를 주목하고 있으며, 서버리스 전용 상품을 출시하거나 기존 제품을 서버리스 환경에 맞게 진화시키는 중입니다. 이 글에서는 먼저 서버리스에 적합한 데이터베이스의 조건을 정리하고, 이어서 실제 사용 경험을 바탕으로 유력한 후보들을 비교해 보겠습니다.
서버리스에 적합한 데이터베이스의 조건
- 사용 편의성: 새로운 세대의 개발자들은 기술을 익히는 데 며칠, 몇 주를 쓰고 싶어 하지 않습니다. 방대한 문서 대신 유튜브 영상으로 배우기를 선호합니다. 따라서 서버리스용 데이터베이스는 단순하고 직관적이어야 합니다.
- 서버리스 요금제: 사용량이 0일 때 비용도 0이 되어야(scale to zero) 합니다. 사용하지 않는 것에 대해 왜 돈을 내야 할까요? 대역폭당 또는 요청당 과금 모델은 실제 사용량과 연동되기 때문에 서버리스 친화적입니다. 개인적으로는 대역폭보다 요청당 과금이 더 예측하기 쉬워 선호하는 편입니다.
- 개발자 친화적 요금제: 요금 구조는 함정 없이 단순해야 합니다. 일부 벤더의 요금 페이지는 너무 복잡해서 별도의 설명 아티클과 블로그 포스트가 존재할 정도이며, 복잡한 요금 계산기를 제공하는 곳도 있습니다. 안타깝게도 대부분의 벤더는 리스크를 줄이기 위해 복잡한 요금제를 선호하고, 결국 청구서를 받기 전까지는 정확한 지출액을 예측하기 어렵습니다.
- 서버리스 커넥션: 서버리스 함수는 몇 초 만에 수백, 수천 개로 확장될 수 있습니다. 데이터베이스가 영구 연결(persistent connection)을 요구한다면 연결 한도에 금방 도달하게 됩니다. HTTP 기반 연결은 더 가볍고 이러한 제한이 없기 때문에 문제가 되지 않습니다.
- 낮은 지연 시간: 서버리스 함수에서 추가 지연은 곧 비용입니다. 하지만 진짜 비용은 웹사이트에서 빈 화면만 바라보며 기다리는 불만족스러운 사용자들입니다.
- 이식성: 다른 클라우드 벤더로 이전하고 싶을 때 데이터 레이어를 다시 작성해야 할까요? 원격 데이터베이스에 연결하지 않고도 로컬 환경에서 애플리케이션을 테스트할 수 있을까요?
- 일관성: 일반적으로 일관성과 성능 사이에는 트레이드오프가 존재합니다. 각 데이터베이스는 일관성-성능 스펙트럼에서 서로 다른 위치에 있습니다. 좋은 데이터베이스는 자신의 일관성 보장 수준을 명확히 정의해야 사용자가 잠재적 문제와 리스크를 인지할 수 있습니다.
- 확장성: 애플리케이션이 높은 처리량을 받기 시작할 때 데이터베이스도 이를 감당할 수 있어야 합니다. 이상적으로는 확장이 자동으로 이루어지거나 클라우드 제공자가 관리해야 하며, 개발자가 신경 쓸 일이 없어야 합니다.
- 엣지 친화성: Cloudflare Workers, Fastly Compute 같은 기술은 사용자와 가장 가까운 엣지에서 서버리스 함수를 실행할 수 있게 해주는 멋진 기술입니다. 이들은 REST 기반 연결을 필요로 하며, 지연 시간을 최소화하기 위해 전역 복제된 데이터베이스도 요구합니다.
- 글로벌성: 애플리케이션이 전 세계적으로 인기를 얻으면 어느 지역에서나 좋은 성능을 제공하는 데이터베이스가 필요합니다. 멀티 리전 복제가 이를 가능하게 하는 핵심 기능입니다. 다만 주의할 점은 비용입니다. 이 기능은 상당히 비쌀 수 있으니 반드시 요금을 확인하세요.
서버리스에 적합한 데이터베이스 후보 비교
아래는 여러 데이터베이스를 직접 사용해 본 인상과 메모를 정리한 것입니다. 엄밀한 과학적 분석은 아니지만, 본격적인 비교 검토에 들어가기 전에 방향을 잡는 데 도움이 되길 바랍니다.
MongoDB (Atlas)
- 사용 편의성: MongoDB는 가장 널리 쓰이는 NoSQL 데이터베이스이자 도큐먼트 스토어입니다. JSON 기반 데이터 모델 덕분에 API가 매우 단순하고 직관적입니다.
- 이식성: 거의 모든 클라우드 제공자가 MongoDB API 호환 데이터베이스를 제공하며, 온프레미스에 직접 MongoDB를 구축할 수도 있습니다. 이식성 걱정은 없습니다.
- 서버리스 지원: MongoDB Atlas는 최근 서버리스 데이터베이스 유형을 발표했습니다. 다만 개인적인 인상으로는 서버리스 요금제가 적용된 호스팅 MongoDB 인스턴스에 가까워 보였습니다. Node.js SDK를 포함해 상당수 기능이 서버리스 데이터베이스에서는 지원되지 않는다는 점도 확인해야 합니다.
- 서버리스 커넥션: MongoDB Atlas는 HTTP 기반(REST 등) API를 기본 제공하지 않으므로 연결 한도에 쉽게 도달할 수 있습니다. 그래서 AWS Lambda 환경에서 이를 회피하는 방법을 다룬 가이드를 별도로 발행하기도 했습니다.
(업데이트) 이후 MongoDB Atlas가 HTTP 기반 Data API를 출시했습니다.
Cassandra (DataStax Astra)
- DataStax Astra는 네이티브 Cassandra 드라이버 외에 REST 및 GraphQL API도 제공합니다.
- 사용 편의성: 개인적으로 Cassandra는 MongoDB나 Redis보다 학습 난이도가 높았습니다. 다만 DataStax 팀이 만든 콘솔은 매우 직관적이어서 좋았습니다. 그래도 여러 버전이 섞인 REST API 문서 속에서 길을 잃었던 기억이 납니다.
- 개발자 친화적 요금제: DataStax Astra의 요금 구조는 단순하지 않습니다. 읽기, 쓰기, 대역폭이 모두 개별 계산되며, 클라우드 제공자는 물론 리전에 따라서도 가격이 다릅니다. DataStax는 자체적인 읽기/쓰기 단위(RRU, WRU)를 정의해 사용합니다.
DynamoDB (AWS)
- 사용 편의성: AWS 사용자라면 DynamoDB를 시작하고 활용하기 쉽습니다. 다만 쿼리 API의 직관성은 MongoDB가 더 낫다고 생각합니다.
- 서버리스 커넥션: DynamoDB 연결은 HTTP 기반이므로 연결 한도 문제가 없습니다.
- 이식성: 가장 큰 약점이 바로 이 부분입니다. DynamoDB는 AWS 외부에서는 사용할 수 없습니다.
FaunaDB
- 일관성: 아마 FaunaDB는 이 목록에서 일관성 측면에서 가장 뛰어날 것입니다. 글로벌 복제와 함께 일관성을 보장합니다. 다만 이는 추가적인 성능 비용을 수반하므로, 정말 강한 일관성이 필요한지 먼저 고민해야 합니다.
- 성능: 강한 일관성을 유지하는 특성상 다른 데이터베이스보다 지연 시간이 높습니다.
- 사용 편의성: 솔직히 FQL은 제가 배우고 사용하기 가장 어려웠던 쿼리 언어였습니다. 다행히 FaunaDB는 GraphQL API도 지원하므로 이를 활용하면 진입 장벽이 낮아질 수 있습니다.
- 서버리스 커넥션: HTTP 기반 연결 덕분에 연결 한도 문제가 없습니다.
Upstash
- 사용 편의성: Redis는 이 목록에서 가장 배우기 쉬운 API일 것입니다. Upstash는 직관적이고 단순한 인터페이스로 클라우드에서 Redis를 손쉽게 사용할 수 있게 해줍니다.
- 개발자 친화적 요금제: Upstash는 요청당 과금 방식을 채택하고 있습니다. 가격 상한(price cap)도 설정되어 있어 미리 정한 금액 이상을 청구받지 않음을 보장합니다.
- 성능: 메모리 기반 저장소 덕분에 가장 우수한 지연 시간 수치를 보여줍니다.
- 유의점: 조인 같은 복잡한 쿼리 기능이 필요하다면 Redis 데이터 구조는 실용적이지 않을 수 있습니다. 이런 경우 SQL 지원이 더 강한 데이터베이스를 고려해야 합니다.
Firestore
- 사용 편의성: 이 항목에서는 이 목록의 최상위권입니다. UI와 API가 상당히 직관적입니다.
- 이식성: DynamoDB처럼 Firestore도 벤더 락인(vendor lock-in) 문제가 있습니다. Google Cloud를 사용하는 한 큰 문제는 없습니다.
- 성능: 이전부터 성능 관련 불만을 들어온 적이 있습니다. 개인적으로도 FaunaDB와 함께 지연 시간이 다른 제품보다 아쉬운 경험을 했습니다. 이 부분은 여전히 물음표입니다.
마치며
서버리스는 개발의 미래이며, 이미 그로의 전환이 진행되고 있다고 생각합니다. 서버리스는 개발자와 소규모 회사가 매우 제한된 예산으로도 확장 가능한 제품을 만들 수 있게 해줍니다. 데이터베이스 역시 서버리스의 원칙에 부합하는 제품과 요금 구조를 제공하며 이 전환의 흐름에 동참해야 할 것입니다.