서비스를 구현하기 위해서는 로그인, 데이터베이스, 스토리지 등의 역할을 하는 백엔드 서버가 필요해요. 그리고 노코드로 앱/웹을 만들더라도 백앤드 서버는 필요해요. 이런 백엔드 서버를 코딩없이 만들수 있는 도구들이 있어요. 이런 도구들을 BaaS(Backend as a Service)라고 해요. 이번 포스트에서 BaaS중 하나인 Supabase를 왜 선택했는지 어떻게 활용할 수 있는지 설명드릴게요.
📖 요약
백엔드 서버란
백엔드 서버를 직접 구축하는 비용
BaaS, Supabase
- 로그인 기능
- 데이터베이스 기능
- 스토리지 기능
Supabase vs 직접 구축하기
백앤드 서버란
백엔드 서버는 프론트엔드의 API 요청에 대한 응답을 하는 역할이에요. 주로 프론트엔드에서 API 요청을 하면 백엔드 서버는 데이터베이스에서 데이터 저장/조회/업데이트/삭제와 같은 역할들을 수행하고 프론트엔드 서버에 결과값을 전달해요.
예를 들어, 친구와 메신저 앱을 사용한다고 가정해볼께요. 친구에게 메시지를 보내면, 그 메시지는 우선 사용자의 휴대폰에서 백엔드 서버로 전송돼요. 백엔드 서버는 이 메시지를 받아 데이터베이스에 저장하고, 다시 친구의 휴대폰으로 전달해요.
백엔드 서버는 클라이언트의 로그인, 데이터베이스, 스토리지등 다양한 요청에 대해서 처리하고 응답을 전달하는 역할을 해요.
백엔드 서버를 직접 구축하는 비용
개발자가 로그인 기능을 구현하는데 얼만큼의 시간이 걸릴까요? 다음과 같은 일을 진행해야해요. 개발자마다 다르겠지만 대략 1주일 이상의 시간은 소요될 것 같아요.
✔️ 데이터베이스 설정: 약 1 ~ 2일
사용자의 정보를 저장할 데이터베이스를 설정해요. 사용자 테이블을 만들고, 필수적인 필드(예: 사용자 이름, 이메일, 암호화된 비밀번호)를 정의해요.
✔️ 로그인 API 개발하기: 약 1주일
백엔드 서버에서 로그인 기능을 구현해요. 이는 사용자 등록, 로그인 요청 처리, 비밀번호 검증, 세션 관리 등을 포함해요. 암호화 라이브러리를 사용하여 비밀번호를 안전하게 저장하는 것도 포함돼요.
Backend as a Service, Supabase
Backend as a Service(BaaS)는 웹 또는 모바일 애플리케이션의 백엔드 기능을 제공하는 클라우드 서비스에요. 이를 사용하면 개발자가 서버 설정, 데이터베이스 관리, 사용자 인증, 푸시 알림 등의 복잡한 백엔드 작업을 직접 구현하지 않아도 돼요. BaaS는 미리 준비된 백엔드 기능을 API 형태로 제공하므로, 개발자는 프런트엔드 개발과 핵심 기능 구현에 집중할 수 있어, 개발 시간을 단축하고 비용을 절감할 수 있어요. 예를 들어, Firebase나 Supabase 같은 BaaS 도구를 사용하면 로그인 기능이나 데이터 저장소를 간편하게 설정할 수 있어요.
제가 즐겨 사용하는 Flutterflow는 Firebase 연동을 기본적으로 제공하고 Supabase와의 연동도 제공해요. Firebase보다 Supabase를 선택한 이유는 크게 다음과 같아요.
1. 데이터베이스 형태
Supabase의 데이터베이스는 관계형 데이터에요. 복잡한 쿼리와 트랜잭션을 쉽게 처리할 수 있어요. 반면에 Firebase의 데이터베이스는 비관계형 데이터에요. 복잡한 쿼리와 트랜잭션을 비교적 복잡하게 처리해야해요.
2. 가격 정책
가격정책은 여러가지 기능들을 담고 있어요. 그 중 저는 로그인과 데이터베이스 요금을 중점적으로 살펴봤어요. 로그인 기능은 MAU(Monthly Active User)기준으로 책정해요. Firebase의 경우 MAU 5만명까지는 무료이고 이후 5만명 ~ 10만명은 $0.055에요. 10만명의 MAU를 유지하는 서비스는 대략 월 37만원정도의 비용을 로그인 비용으로 지불해야해요. 반면에 Supabase같은 경우에는 $25 요금제를 사용하면 10만명까지는 로그인 비용을 지불하지 않고 이후에는 $0.00325를 지불해요. Firebase는 100만명이상 사용해야 로그인 비용이 인당 $0.0032로 Supabase보다 저렴해져요. 소규모 비즈니스의 경우에는 이정도 규모의 유저는 얻기 힘들다고 생각했어요.
데이터베이스는 Supabase는 8GB까지는 무료이고 이후부터는 1GB당 $0.125에요. 반면에 Firebase의 경우 1GiB(1.07374 GB)까지 무료이고 이후부터는 1GB당 $0.1788에요. (1GiB당 $0.192) 그리고 Firebase의 경우 쓰기, 읽기, 삭제 요청마다 요금이 부가돼요. 경우에 따라 다르지만 Firebase가 사용하는 NoSQL의 경우 Supabase의 SQL보다 데이터중복이 많이 발생해서 가격적으로 Supabase가 더 유리하다고 판단했어요.
로그인 기능 구현
Supabase는 많은 소셜 로그인 기능을 제공해요. [참고] 해외 서비스임에도 카카오톡 로그인도 지원하는 것을 확인할 수 있어요. Supabase Dashboard에서 Provider를 설정후에는 노코드툴에서 연동하면 돼요. Flutterflow의 경우에는 Dashboard에서 클릭으로 쉽게 연동할 수 있어요. [참고]
데이터베이스
데이터베이스를 Web에서 쉽게 조작할 수 있어요. 데이터베이스를 테이블 뷰로 확인하고 수정하고 테이블을 만들고, 테이블간의 관계를 지정할 수 있어요.[참고] 이렇게 구축한 데이터베이스는 Flutterflow에서 연동하여 사용할 수 있어요. 자세한 내용은 공식문서를 참고하세요. [참고]
스토리지
스토리지는 이미지, 영상, 문서등 파일 형태의 데이터를 저장할 수 있는 기능이에요. 서비스에서 사용되는 파일을 Supabase 스토리지에 저장하고 불러와서 사용할 수 있어요. Flutterflow에서는 별도의 설정없이 Actions 기능에서 사용할 수 있어요.
Supabase vs 직접 구축하기
백엔드 서버를 직접 구축하는 것은 많은 시간과 노력이 필요해요. 개발자는 서버 설정, 데이터베이스 관리, 사용자 인증, 보안 등 여러 가지 복잡한 작업을 직접 처리해야 하죠. 이 과정에서 발생하는 문제를 해결하기 위해 많은 시간과 비용이 들며, 유지보수와 업그레이드도 지속적으로 필요해요. 특히, 비즈니스가 성장함에 따라 서버의 확장성과 안정성을 유지하는 것이 큰 부담이 될 수 있어요.
반면에 Supabase 같은 Backend as a Service(BaaS)를 사용하면, 이러한 복잡한 작업들을 간편하게 처리할 수 있어요. Supabase는 서버 설정, 데이터베이스 관리, 사용자 인증 등의 기능을 미리 준비된 서비스로 제공하여, 개발자는 핵심 기능 구현에 집중할 수 있어요. 이는 개발 시간을 단축하고 비용을 절감할 수 있게 해줘요. 특히, 작은 규모의 팀이나 빠르게 시장에 진입하고자 하는 스타트업에게는 Supabase가 매우 효율적인 선택일 수 있어요.
의견을 남겨주세요