aeuna / react-study

설리번 리액트 스터디
0 stars 3 forks source link

1주차 파이어베이스 스터디 #1

Open aeuna opened 3 years ago

aeuna commented 3 years ago

토요일 저녁 8시까지! 이후 피드백 진행

huiji0315 commented 3 years ago

Firebase RealtimeDatabase 기술 조사

[장점]

  1. 권한을 설정하여 데이터를 읽고 쓸 수 있고
  2. 콘솔 페이지에서 직접 데이터를 수정할 수 있고
  3. NoSQL이라 비교적 스키마 구성이 간단하고
  4. 여러가지 클라이언트 SDK를 제공하고
  5. 무엇보다 일단 무료입니다. (용량/동접 UP -> 유료로 환승 가능)

[단점]

  1. 쿼리의 불편함

    • 쿼리의 종류가 다양하지 않고, 동시의 여러 쿼리를 쓸 수 없게 되있다. 그래서 검색을 해보니, firebase 블로그에서 elastic search를 사용하면 된다고 한다. https://firebase.googleblog.com/2014/01/queries-part-2-advanced-searches-with.html 그런데 근본적으로 이것대로 하려면 따로 서버를 구축해야 하고 동기화를 시켜야 한다. 애초에 서버없이 가능하다는 메리트가 사라진다.
  2. 시각화(문서화 및 공유)의 어려움

    • 대부분 코드레벨에서 정의가 되다 보니, 다른사람이 봤을 때, 도대체 어떻게 스키마가 이루어 졌는지 알기 힘들다. 심지어 database console에 데이터가 아무것도 없다고 하면, 유추가 더욱 힘들다. 결국, 코드를 보며 일일이 상상하거나 그려가며 알아가야 한다. 만약, 잘못 알고 엉뚱한 path에 set() 함수를 써버려서 데이터를 지워버린다면, 정말 안타까운 일이 일어난다.
  3. 트랜잭션 처리의 어려움(속도)

    • 만약 하위 path가 많고 데이터도 많은데 root 와 가까운 path를 걸어버리면, 해당 프로젝트의 모든 데이터에 락이 걸린다. 데이터가 많다면 속도도 느려진다. 락을 거는 path에 따라 속도의 차이가 엄청나기 때문에, 스키마 구조를 정말 잘 설계 해야 한다.
  4. 데이터 일관성 유지 어려움 실제로 개발을 하다보면, 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

aeuna commented 3 years ago

파이어베이스 데이터베이스를 쓰는게 크게 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

강의에 포함되면 좋을것 같은 내용

  1. nosql : collection and document 개념 설명 (매우 간단하게)
  2. 파이어베이스 개념 설명 (매우 간단하게) 데이터베이스 서버 api 기능까지 제공 웹서버와 데이터베이스 통합되어있는 느낌 클라우드 서비스
  3. 파이어베이스 프로젝트와 collection 생성 (데이터베이스 구조짜기) 및 초기에 리액트와 연동 방법 (config 설정, firebase 초기화 및 store 사용)

auth 는 로그인과 회원가입 및 소셜 로그인을 위해 사용하는것 같음. 우리 프로젝트에서는 사용하지 않아도 될듯하다. 하고 싶은 학생이 있는것 같다 싶으면 추가강의를 제공하는것도 나쁘지 않을듯

xianeml commented 3 years ago

우리가 필요한것

firebase

대안 → 몽고DB Atlas

일단 파이어베이스에 문제없는거 확인했고,

우리가 사용하기도 쉬울거같아서 이거 쓰기로!

사용하다가 혹시나 불편한 점이 생기면 대안으로 몽고 아틀라스를 생각해보자

kelee98 commented 3 years ago

firebase 연동 실습

: 아래 블로그 참조 https://www.notion.so/9ede8b53ef71486895587ee7bbca6cac

주의가 필요하다고 생각 되는 부분 개발을 진행하면서 firebase 초기화 문제와 세팅 문제에 유의 해야 될 것 같다