프로그래밍/flutterflow로 어플만들기

flutterflow 사용해서 앱 만들기 - (2) 데이터 저장 방식 선택

kugancity 2023. 4. 3. 21:33
반응형

 

 

 

2023.04.01 - [프로그래밍/flutterflow로 어플만들기] - flutterflow 사용해서 앱 만들기 - (1) 어플 기획 & 프로젝트 생성

 

flutterflow 사용해서 앱 만들기 - (1) 어플 기획 & 프로젝트 생성

공무원 기출시험 문제풀이 어플을 만들기 위해서 검색해보다 flutterflow를 사용하면 간단하게 어플을 만들 수 있다고 해서 사용해보았다. FlutterFlow는 flutter 앱 개발을 위한 온라인 플랫 중 하나이

kugancity.tistory.com

 

이전 포스팅에서 어플 기획 & 프로젝트 생성 이후 

flutterflow의 문제 하나를 발견했다 

 

 

문제 데이터 관련해서 sqlite등 로컬 데이터베이스를 사용할 계획이였는데 

flutterflow에서는 데이터 로컬 저장방식으로 앱 state(로컬 state) 밖에 지원을 안하는 것이다. 

( flutter에는 sqlite를 사용할 수 있다 ) 

 

커뮤니티 보니까 문의는 작년부터 꾸준히 있는 것으로 보이는데 

운영쪽에는 크게 개발 의지가 없어보인다;;

 

 

일단 향후 제공할 기능들과 가능한 방식들을 아래 정리해보았다.

(모든 기능 들은 오프라인에도 문제가 없어야 함 )

 

 

기능 flutterflow(앱state) flutterflow(firestore) flutter(local sqlite)
시험 문제 읽기 기능 X (문제가 많아지면 한계가 있음)  △ (오프라인일 경우 캐싱된 데이터) 
사용자 답 저장 기능 △ (오프라인일 경우 캐싱된 데이터) 
문제 키워드 검색 기능  X △ (오프라인일 경우 캐싱된 데이터) 
사용자 랭킹 기능 ( 조건별로 사용자 순위 제공 예정)  X ? (가능은 해 보이는데 해봐야 알 것 같음)  X

 

 

여러가지 고민되는 지점이 있지만 일단 firestore로 시작해보기로 했다. 

 

아래는 좀 더 자세한 고민과정이다. 

 


 

 

 

문제 개수도 점점 많아질 것 이고

나중에 검색 기능도 넣을 생각이라

앱state로 데이터를 저장하면 안 될 것 같아서 

일단 flutterflow에서 지원하는 firebase에 대해서 검색해 보았다. 

 

 

 

https://darrengwon.tistory.com/1550

 

firebase가 왜 production으로 적합하지 않은가

왜 firebase으론 scaling이 불가능한가… 애초에 제품으로 돈을 벌고 싶다면 firebase는 사용하지 않는 것이 좋다. 1. 조건에 만족하는 필터링이 불가능… record가 몇 개만 더 늘어나도 제대로 찾는게 매

darrengwon.tistory.com

https://www.youtube.com/watch?v=ivjYPsFAmPo 

 

 

주로 속도, scaling 관련해서 이슈가 있는 것 같긴 한데

오프라인 지원하는 것이 그나마 괜찮은 것 같긴 한다. 

 

그런데 초반에는 사용료가 없겠지만 나중에 사용자가 늘면 사용료도 발생할 수 있고 

문제은행이라는게 외부에서 데이터를 가져올 필요가 없는데

괜히 속도 & 비용 이슈만 생기는 것 같기는 하다...  

 

 

 

 

일단 MVP로 간단히 만드는 것에 의의를 두고 firebase로 진행을 해보려고 하다가 

오프라인으로 데이터를 가져오는 문제가 생각보다 중요하다는 생각이 들었따. 

 

 

https://firebase.google.com/docs/firestore/manage-data/enable-offline?hl=ko 

 

오프라인 데이터 가져오기
기기가 오프라인 상태일 때 문서를 가져오면 Cloud Firestore는 캐시의 데이터를 반환합니다.
컬렉션을 쿼리할 때 캐시된 문서가 없으면 빈 결과가 반환됩니다. 특정 문서를 가져오면 대신 오류가 반환됩니다.

오프라인 데이터 쿼리
쿼리는 오프라인 지속성과 연동합니다. 앞에서 설명한 것처럼 직접 가져오기 또는 수신 대기를 통해 쿼리 결과를 검색할 수 있습니다. 기기가 오프라인 상태일 때 로컬에 유지되는 데이터에 대해 새 쿼리를 만들 수도 있지만 이러한 쿼리는 처음에는 캐시된 문서에 대해서만 실행됩니다.

 

캐시된 데이터만을 사용한다는 이야기는

사용자가 기출문제1 을 풀고 한번도 한 풀었던 기출문제2 를 클릭하면 오류가 난다는 이야기겠지;;? 

 

 

파이어스토어 캐시에 대해서 더 상세하게 분석해분 포스팅이 있어서 읽고나서 결론을 내렸다. 

 

 

https://hellose7.tistory.com/m/117

 

시험 문제들을 서브 컬렉션 으로 구성해서

앱 처음 실행할 떄 다 가져오면 캐시 만료되기 전까지는 크게 이슈는 안 될 것 같은데

일단 해봐야지 정확하게 알 것 같다. 

 

그리고 firestore query가 제한이 많아서

조건별로 사용자 랭킹에 구할 수 있는지 검색도 해보고 chatgpt에 물어도 보았는데 

역시 이것도 해봐야지 정확히 알 것 같다. 

 

 

https://www.reddit.com/r/Firebase/comments/d8yyrd/calculate_users_ranking_based_on_firestore_field/

 

https://kugancity.tistory.com/entry/how-to-get-rank-of-each-user-in-firestore

 

 

 

그럼 다음 포스팅에서는 firestore로 문제 데이터 저장하기를 이어서 해보겠다. 

 

 

728x90
반응형