반응형
기존에 상용하고 있던, SpringBoot 와 ECR Fargate를 Supbase로 이관을 계획하고 있다.
그 이유는 인력감축 및 비용 절감 측면에서다.
Supabase Database 사용 소감 및 장점
💡
토이 프로젝트를 만들고 로그인,회원가입,SNS 로그인(카카오톡) 그리고 게시판 CRUD를 구현하고, Storage에 이미지 업로드까지 구현하고나서의 소감입니다.
- 간편한 인프라 구축: 1인 개발이나 단일 도메인(앱 서비스 또는 웹 서비스) 운영 시 적합한 플랜. 초기 인프라 구축이 필요하지 않아 빠른 개발에 용이.
- PostgreSQL 기반: Supabase는 PostgreSQL DB를 기반으로 하여 추후 자체 구축 및 마이그레이션이 쉬운 것이 큰 장점.
단점 및 고려 사항
1. 실시간 데이터 처리 성능
- 문제점: Supabase의 LISTEN/NOTIFY 기능은 다수의 클라이언트에서 동시에 실시간 데이터 변경을 요청할 때 성능 저하가 발생할 수 있음.
- 해결책: 실시간 알림을 빈번하게 사용하는 경우, 외부 실시간 서비스(Firebase Realtime Database, Pusher 등)와의 연동을 고려.
2. 앱과 웹에서의 코드베이스 분리 문제
- 문제점: 앱과 웹 두 개의 도메인을 운영할 경우 코드베이스가 분리되며, 동일한 DB를 보더라도 서로 다른 작업을 수행할 수 있어 사이드 이펙트 발생 우려.
- 해결책: 복잡한 쿼리 사용 시 서로 다른 로직의 싱크가 맞지 않도록 주의. API 요청을 통해 중앙 집중형 서버 사이드 로직 관리도 고려 가능.
3. DB Procedure 사용 제한
- 문제점: 서버리스 환경에서 복잡한 비즈니스 로직을 구현하려면 DB 프로시저나 함수에 의존해야 할 때가 많아 확장성과 유지보수 측면에서 불리함.
- 해결책: 가능한 경우 Supabase의 Deno 기반 서버리스 함수를 사용하거나 별도 서버 사이드 API를 구축하여 로직을 분리.
4. 협업 환경에서의 Policy 관리 문제
- 문제점: 여러 개발자가 정책을 설정할 때 정책 상호작용으로 인해 의도치 않은 접근 제한이나 허용이 발생할 수 있으며, 변경 이력 추적이 어려움.
- 해결책: 정책 설정은 IaC로 관리하거나 코드 리뷰를 통해 변경 사항을 검토. 정책 추가 및 수정 시, 충분한 테스트와 협의를 거쳐 적용.
5. 내장된 Auth (GoTrue) 한계
- 문제점: GoTrue의 auth.users 테이블은 수정이 불가능하여 제한적. 사용자 프로필 정보를 관리하기 위해 추가로 public.users와 같은 커스텀 테이블을 만들어야 함.
- 해결책: public.users와 같은 별도의 테이블을 사용해 커스터마이징된 사용자 관리. 만약 인증 요구사항이 복잡할 경우 외부 인증 서비스(Auth0, Okta 등)와의 연동도 고려.
6. Supabase-js를 통한 모듈화로 해결 가능한지 여부
- 효과: Supabase-js로 클라이언트 측 작업을 모듈화하는 것은 코드 관리에 도움이 될 수 있으나, 위의 근본적인 단점들을 해결하지는 못함.
- 보완책: 외부 인증 서비스, 실시간 데이터 처리 서비스, Deno 기반 Edge Functions 등의 결합을 통해 클라이언트 측 코드 모듈화 외에 서버사이드 로직 보완이 필요함.
- dart:js를 사용하려고 했는데, 근본적으로 dart:js는 모바일 환경에서 사용이 불가능함.
Migration 전략
- DB 구조 유지 및 마이그레이션 방법: Supabase는 pgloader를 통한 마이그레이션을 지원하지만, 현재는 베스천 서버에 설치 제한이 있어 추후 시도 예정.
- 마이그레이션 진행 전 점검 사항: 초기에는 기존 RDS와 Supabase를 병행하여 데이터 일관성 검증. 필요한 경우 단계적으로 Supabase로 전환.
비용 구조
- 현재 비용:
- ECS: $500/월
- RDS: $300/월
- Supabase 예상 비용:
- 컴퓨팅 애드온 비용: Medium~XL 추가 시, 약 $60 ~ $210/월
- Pro 플랜에서 MAU 13만 명의 예상 비용:
- 기본 Pro 플랜 요금: $25/월 (10달러의 컴퓨팅 크레딧 포함)
- 초과 MAU 요금: $97.5/월
- 총 비용: 약 $122.5 ~ $300/월 예상
Auto Scaling 여부
- Supabase는 오토 스케일링을 지원하지 않으며, I/O 밸런스 및 버스팅만 가능. 특정 시간대에 30분 동안만 버스팅이 가능하여 완전한 오토 스케일링을 요구하는 서비스에는 한계가 있을 수 있음.
결론
supabase를 사용해서,백엔드 서버가 따로 있지 않다면, 같은 코드베이스를 바라보는 일은 매우 어려운 것으로 보인다. 그래서 SQL to REST API를 사용해서 마치 RestAPI를 사용하는 것처럼 사용해야 할 것으로 보인다.
반응형
'Flutter > Flutter' 카테고리의 다른 글
[Flutter] Firebase Cli 세팅하기 #2 - 초기화 하기 (0) | 2022.07.02 |
---|---|
[Flutter] Firebase Cli 세팅하기 (1) | 2022.07.01 |
[Flutter] GestureDetector 클릭 영역 넓히기 (2) | 2022.06.25 |
[Flutter] Global로 SnackBar & Toast사용하기 (1) | 2022.06.24 |
[Flutter] BottomNavigationBar Reload 안되게 하기 (1) | 2022.06.18 |