본문 바로가기
데이터베이스

파이어베이스 파이어스토어(firebase firestore)의 단점

by 김마리님 2021. 7. 23.

구글 파이어베이스, 그 중 클라우드 파이어스토어는 프론트엔드 개발자만 존재하고 백엔드 개발자가 존재하지 않을 경우, 데이터베이스를 쉽게 개발하게 도와주는 구글의 클라우드 서비스이다. 나는 안드로이드 개발자이고, 그렇기에 안드로이드 개발(+ 타 팀원이 ios도 함께 개발중)에 대해서만 언급한다.

 

 

장점은 명확하다.

 

1. dependency만 걸어주면 손쉽게 연결이 가능하고, 규칙이 간단하다. 개발 경험이 있다면, 특히 백엔드를 조금이라도 배웠다면 크게 어려움을 느끼지 못한다.

2. 데이터 콜백도 간단하다. 그저 map 형태의 리스트를 받아서 원하는 데이터의 자료형으로 casting 하기만 하면 정말 모든게 해결된다. 심지어 그 캐스팅 함수가 firebase 상에 존재한다! 그렇기에 백엔드 개발에 딱히 힘을 들이지 않아도 되는 유용한 서비스이다.

3. 그리고 아마존같은 경우는 프리티어로 1년 이상 지속될경우 유료로 전환되지만, 파이어베이스의 경우 일정 사용량을 달성하지 않으면 무료라는 점도 장점이다.

4. 또한 문서 컬렉션에 종속성이 존재하지 않기 때문에 데이터를 다루는 것도 쉽다. 

 

 

근데 장점이 많은 만큼 단점도 존재한다.

 

1. 근데 종속성이 없다는 문제가 단점으로 작용되기도 한다.

만약 개발하는 앱이 컨텐츠를 다루는 앱이라면 파이어베이스를 사용하는데에 문제가 되지 않는다. 근데 만약 플랫폼을 개발중이라면? O2O 형태의 앱의 구조를 생각해보자.

 

컨텐츠 구매자 - 컨텐츠 - 컨텐츠 판매자

 

만약에 RDBMS(일반적 데이터베이스)였다면 사용자가 컨텐츠의 변경을 일으킬 경우 백엔드단에서 종속되어있는 컨텐츠 판매자의 데이터도 함께 변경되어 종속성을 유지한다. 그렇기 때문에 데이터의 종속성에 대해서 크게 신경쓰지 않아도 된다. 그러나 파이어베이스의 경우 각 컬렉션, 각 문서 간의 종속성이 전혀 유지되지 않기 때문에 컨텐츠의 변경이 일어날 때, 컨텐츠 판매자의 변경도 함께 프론트엔드에서 조작해줘야 한다, 그렇기 때문에 스레드가 이중으로 작용되게 된다. 

 

2. 너무나도 제한적인 쿼리

글쓴이가 배운 데이터베이스는 오라클이므로, 오라클에 맞춰 이야기 해보면(MySQL도 크게 다르진 않을 것이다)

오라클은 where, Group By, asc desc, Order by .. 다양하게 쿼리가 존재하고, 그 쿼리에 따라 데이터를 세부적으로 로드가 가능하다(성능검증은 일단 나중으로 미루고).

파이어베이스는 독자적 쿼리를 이용하는데, 그 독자적 쿼리가 다양하지 않다. 그리고, 심지어 그 복합쿼리 마저 1번으로 제한하기 때문에 데이터를 세부적으로 불러오는데에 어려움을 느낀다.

 

3. 속도가 느리다.

한번이라도 백엔드 개발로 프론트 엔드를 개발한 후에 파이어스토어로 개발하면 딱 느낄 수 있다.

아, 정말 느리다.

하고.

 aws 기반으로 개발한 앱이 데이터를 로드하는데 1초가 걸린다고 가정하면, 파이어베이스는 2~3초정도 걸리는 것 같다. 이 속도는 적어보이지만 앱의 사용성에 큰 불편함을 느끼도록 한다.

 

4. (외국은 모르겠는데) 한국의 웬만한 웹뷰 서비스를 이용할 수 없다.

대표적인 것이 주소 검색 웹뷰와 토스 페이먼츠인데, 이 두가지를 이용할 수 없다.

만약 앱을 개발할 때 내가 결제를 붙혀야 한다면, 그 땐 그냥 처음부터 백엔드를 개발하는 것이 좋다 ^-ㅠ ...

주소검색 웹뷰는 일단 우리쪽에선 되지 않았는데 혹시 파이어베이스로 한 사람 있으면 연락해줘 ^-ㅠ 

 

5. 보안규칙에 대한 설명이 너무 적다.

구글 파이어베이스는 30일이 지나거나, 테스터로 개발하는 것이 아니라면 보안규칙을 적용해야하는데, 보안규칙에 대한 문서 설명이 너무 적다.. 진짜 적어서 글쓴이는 스택 오버플로우 보면서 설정했다..

 

 

이러한 이유로 작은 앱에는 파이어베이스가 유용하지만, 앱이 커지고 데이터 필드와 테이블이 많아질수록 RDBMS로 변경하는 것을 추천한다. 우리도 그래서 지금 파이어베이스 -> aws로 변경중인데, 기존의 파이어베이스는 map형태의 데이터를 사용하기 때문에, 전반적으로 많이 갈아엎어야해서 데이터 변경이 한번 이루어질 때 마다 오류가 200개씩 나오는 듯 ^-ㅠ

반응형

'데이터베이스' 카테고리의 다른 글

Postgresql] 롤 삭제  (0) 2023.06.16
무료 다중 데이터베이스 플랫폼, DBeaver  (0) 2021.03.16
DB와 JAVA 연동하기  (0) 2020.04.22
12. 스칼라 서브쿼리  (0) 2020.04.08
데이터 검색 기법  (0) 2020.04.02