Open aeuna opened 3 years ago
Firebase RealtimeDatabase 기술 조사
[장점]
관리자기 Firebase Console (웹페이지)을 통해 데이터를 입력하면 Database에 반영되고, 실시간으로 클라이언트에 전달됩니다.
Firebase가 데이터 입력 화면, Database, API, SDK를 세트로 제공해 주기 때문에 레거시는 그대로 유지하고 Client와 Firebase간의 연결만으로 새 기능을 추가할 수 있습니다.
Firebase는 각종 클라이언트(iOS/Android/웹…) 마다 SDK나 코드를 제공하기에 구현도 매우 간단합니다.
실시간 데이터베이스가 오프라인 모드를 지원합니다. 태블릿이 와이파이가 안되는 지역에 있다가 와이파이 연결이 되면 Firebase가 알아서 데이터베이스 변화를 감지하고 앱에 통보를 해줍니다.
Firebase를 잘 이용한다면 서버 없는 애플리케이션 서비스도 가능합니다. Storage, Hosting, Function만 잘 이용해도 만들 수 있습니다. 심지어 무료로 호스팅도 해주고 ssl 적용도 가능하고 도메인 설정도 가능합니다.(도메인까지 https 를 쓸 수 있습니다.)
웹에서 직접 database에 접근하여, 데이터를 입력하면, 실시간으로 반영이 되어, 다른 클라이언트에서도 즉각 데이터가 변경되어 적용되었습니다.
firebase console에서도 특정 path를 보고있으면, 실시간으로 데이터가 생성되었다가 수정되었다가 삭제되는 과정을 직접 볼 수 있습니다.
보안도 json으로 관리하여 특정 사용자만 볼 수 있게 하거나, 관리자 권한인 경우에만 볼 수 있게 한다거나, 문서만 보면서 쉽게 따라할 수 있습니다.
REST API 로도 사용가능하여, sdk를 쓰지 않고도 개발이 가능힙니다.
데이터베이스 관리도 firebase에서 알아서 관리해주니, 부하라던지, 서버가 다운된다는지 이런 걱정을 따로 안해도 됩니다.
[단점]
쿼리의 불편함
시각화(문서화 및 공유)의 어려움
트랜잭션 처리의 어려움(속도)
데이터 일관성 유지 어려움 실제로 개발을 하다보면, user의 정보가 다른 path 에서도 동일하게 넣어야 하는 경우가 생긴다. mysql 이라면, 외래키를 지정하면 끝나는 일이지만, json 구조에서는 이것을 일일이 맞춰야 한다. https://www.youtube.com/watch?v=i1n9Kw3AORw firebase 공식 youtube 영상에서는 위와같이 여러 path를 object에 담아 한 번에 update를 하도록 설명한다. 하지만 어디까지나 코드레벨에서 이루어 진다. 궁극적으로 새로들어온 개발자가 잘모르거나 까먹고 다른곳에 update를 하게 되면, 일관성이 깨지게 된다.
참고: (1) http://tech.ubcare.co.kr/post/2019/03/04/firebase-realtimedatabase.html (2) http://tech.ubcare.co.kr/post/2019/03/11/firebase-realtimedatabase.html (3) https://mardy.tistory.com/entry/firebase-realtime-database-%EC%82%AC%EC%9A%A9-%ED%9B%84%EA%B8%B0
파이어베이스 데이터베이스를 쓰는게 크게 2가지 [realtime database] https://www.youtube.com/watch?v=DIc_nPKBrVA https://eomtttttt-develop.tistory.com/219
프로젝트 만들기 -> 해당 프로그램 -> database, hosting 사용 -> firestore 와 real time database 있는데 real time database 사용 -> 개발할때틑 테스트 모드로 시작하는것이 좋음(누구나 읽기 쓰기 허용) -> 예비 데이터를 만든다 -> 데이터 공간을 만든다 / 데이터 베이스 관련 언어 필요 없음 / 블록으로 추가 가능 프로젝트를 만들면 고유 경로가 주어진다 (json형식으로 데이터 set으로 출력됨)
[firestore] : 리얼타임 데이터베이스의 업데이트 버전 훨씬 더 나은 query사용 가능 https://pathas.tistory.com/214 https://velog.io/@chdb57/%E3%85%87-bvk60v5ufy
강의에 포함되면 좋을것 같은 내용
auth 는 로그인과 회원가입 및 소셜 로그인을 위해 사용하는것 같음. 우리 프로젝트에서는 사용하지 않아도 될듯하다. 하고 싶은 학생이 있는것 같다 싶으면 추가강의를 제공하는것도 나쁘지 않을듯
일단 파이어베이스에 문제없는거 확인했고,
우리가 사용하기도 쉬울거같아서 이거 쓰기로!
사용하다가 혹시나 불편한 점이 생기면 대안으로 몽고 아틀라스를 생각해보자
: 아래 블로그 참조 https://www.notion.so/9ede8b53ef71486895587ee7bbca6cac
주의가 필요하다고 생각 되는 부분 개발을 진행하면서 firebase 초기화 문제와 세팅 문제에 유의 해야 될 것 같다
토요일 저녁 8시까지! 이후 피드백 진행