개인 프로젝트를 할 때 백엔드 서비스로 매번 Firebase를 사용하다가,
최근 커뮤니티 모임에서 Supabase를 알게 되어 새로운 프로젝트에 적용해보게 되었습니다.
Supabase는 'Firebase 대체 서비스'라고 소개되어 있는 만큼, Firebase에서 제공하는 대부분의 기능들 DB, Storage, Login(Auth), Realtime 등을 지원합니다.
Firebase는 익숙하고 편리하기는 하지만 복잡한 쿼리를 할 때 불편한 구석들이 좀 있었습니다. 반면에 Supabase는 PostgreSQL로 직접 쿼리를 만들어 사용할 수 있다는 점이 가장 큰 매력으로 느껴졌고, 이번에 한 번 경험해보고자 사용하게 되었습니다.
1. SupaBase
Supabase는 PostgreSQL hosting 서비스이며 Firebase 대체용 오픈 소스입니다.
2. SupaBase vs Firebase
Firebase와 비교해서 보면, 가장 큰 차이점은 Database 의 종류입니다. Firebase는 no-sql을, Supabse는 rdbms을 사용합니다.
(+ Pricing은 Supabase가 상대적으로 저렴한 편이라고 합니다.)
SupaBase |
Firebase |
|
Database | PostgreSQL | NoSQL |
Authentication | O | O |
Real-time | O | O |
Storage | O | O |
3. 사용 후기
Firebase의 경우는 많은 사람들에게 익숙하기도 하고 그런 만큼 reference도 많습니다. 그렇기 때문에 정말 단기간 안에 여러 기능을 쉽게 적용할 수 있다는 장점이 있습니다. 하지만 실무 프로젝트에서 백엔드 대용으로 사용해 본 경험 상, 쿼리가 복잡해 지면 프론트 단에서 신경써야 할 부분들이 정말 많았습니다. 뿐만 아니라, 개인적으로는 no-sql의 장점을 극대화 하는 수준까지 DB를 사용해 본 적이 없어서 RDBMS 대비 더 나은 점을 크게 느낀 일이 없기도 하였습니다.
Supabase도 벌써 많이 사용되고 있지만, Swift와 관련된 reference는 많이 없었기에 조금 시행착오가 있기는 했습니다. 좋은 경험이 되었고 앞으로 Notification 테스트만 잘 된다면 저는 Supabase를 더 자주 사용하지 않을까 싶은 생각이 듭니다.
몇 가지 발견한 사항과 & 느낀 점을 나열해 보자면:
1. SDK에서 제공하는 네트워크 call 관련 API에는 Async만 있다.: 개인적인 선호와 디자인에 따라 좀 차이가 있겠지만, Firebase SDK의 경우는 @escaping closure 버전도 있는데, Supabase는 async 형태만 제공을 하더라구요. 저는 후자를 더 선호하는 편이라 상관은 없었지만 그 부분도 눈에 띄었습니다.
2. PostgreSQl function이 정말 편리하다.: 이것 때문에 굳이 Firebase를 안써도 될 거 같다고 느꼈습니다. 직접 db 쿼리를 function으로 생성해서 Swift에서 사용할 수 있다보니, 이만큼 편한 것도 없다는 생각이 들었습니다. 생성한 function을 Supabase dashboard에서 테스트해 볼 수도 있기 때문에 상당히 편리합니다.
3. RealTime은 조금 불편한 감이 있다.: Firebase는 .addListener 같은 listener method만 사용해 주면 되었는데, Supabase는 channel을 dashboard에 설정하고, 해당 channel을 앱에서 listen해야 한다. 큰 절차는 아니지만 하나 더 신경 써야한다는 부분이 있다는 것. 그리고 중간에 channel listening이 중단되는 경우가 있는데, 이 부분은 한 번 확인을 해봐야 할 것 같다.
4. Google-info.plist와 같은 파일을 추가할 필요가 없다.: Firebase를 사용할 때는 Google-info.plist를 추가해주어야 한다. 그러다 보니 dev와 prod 등 scheme별로 Firebase project가 다를 때 XCode에서 설정해줘야 하는 것들이 있었는데, Supabase는 API key, URL만 프로젝트에 맞게 설정해주면 되어서 scheme별로 Supabase project를 다르게 해주더라도 좀 더 간편하게 사용할 수 있을 것 같았다.
아직 Background Notification 테스트가 남아있지만, 비교적 마음에 들어서 앞으로는 자주 사용하게 될 것 같은 서비스였다.
참고자료
https://supabase.com/alternatives/supabase-vs-firebase
https://www.linkedin.com/pulse/supabase-firebase-which-right-tool-your-project-2023-rahul-malik/
'Swfit' 카테고리의 다른 글
some에 대해 알아보기 (any와 비교) (2) | 2024.01.22 |
---|---|
WidgetKit - Timeline Provider (1) | 2024.01.19 |
Custom URL Scheme으로 앱 redirect 하기 (0) | 2023.12.30 |
XCode Log에 필요하지 않은 실행 정보가 같이 출력될 때 설정 방법 (4) | 2023.12.14 |
WeatherKit 사용방법 (0) | 2023.12.09 |