Skip to content

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

Open

Description

@aeuna
  • 파이어베이스 스터디 토요일까지 진행

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

Activity

  1. huiji0315 commented on May 15, 2021

    @huiji0315
    Collaborator

    Firebase RealtimeDatabase 기술 조사

    [장점]

    1. 권한을 설정하여 데이터를 읽고 쓸 수 있고
    2. 콘솔 페이지에서 직접 데이터를 수정할 수 있고
    3. NoSQL이라 비교적 스키마 구성이 간단하고
    4. 여러가지 클라이언트 SDK를 제공하고
    5. 무엇보다 일단 무료입니다. (용량/동접 UP -> 유료로 환승 가능)
    • 관리자기 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에서 알아서 관리해주니, 부하라던지, 서버가 다운된다는지 이런 걱정을 따로 안해도 됩니다.

    [단점]

    1. 쿼리의 불편함
    • 쿼리의 종류가 다양하지 않고, 동시의 여러 쿼리를 쓸 수 없게 되있다.
      그래서 검색을 해보니, firebase 블로그에서 elastic search를 사용하면 된다고 한다.
      https://firebase.googleblog.com/2014/01/queries-part-2-advanced-searches-with.html
      그런데 근본적으로 이것대로 하려면 따로 서버를 구축해야 하고 동기화를 시켜야 한다. 애초에 서버없이 가능하다는 메리트가 사라진다.
    1. 시각화(문서화 및 공유)의 어려움
    • 대부분 코드레벨에서 정의가 되다 보니, 다른사람이 봤을 때, 도대체 어떻게 스키마가 이루어 졌는지 알기 힘들다.
      심지어 database console에 데이터가 아무것도 없다고 하면, 유추가 더욱 힘들다.
      결국, 코드를 보며 일일이 상상하거나 그려가며 알아가야 한다.
      만약, 잘못 알고 엉뚱한 path에 set() 함수를 써버려서 데이터를 지워버린다면, 정말 안타까운 일이 일어난다.
    1. 트랜잭션 처리의 어려움(속도)
    • 만약 하위 path가 많고 데이터도 많은데 root 와 가까운 path를 걸어버리면, 해당 프로젝트의 모든 데이터에 락이 걸린다.
      데이터가 많다면 속도도 느려진다.
      락을 거는 path에 따라 속도의 차이가 엄청나기 때문에, 스키마 구조를 정말 잘 설계 해야 한다.
    1. 데이터 일관성 유지 어려움
      실제로 개발을 하다보면, 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. aeuna commented on May 15, 2021

    @aeuna
    OwnerAuthor

    파이어베이스 데이터베이스를 쓰는게 크게 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 는 로그인과 회원가입 및 소셜 로그인을 위해 사용하는것 같음. 우리 프로젝트에서는 사용하지 않아도 될듯하다.
    하고 싶은 학생이 있는것 같다 싶으면 추가강의를 제공하는것도 나쁘지 않을듯

  3. devmhl commented on May 15, 2021

    @devmhl
    Collaborator

    우리가 필요한것

    • 웹에서 GUI 제공해줘서 쉽게 사용 가능한 데이터베이스
    • 소셜로그인 기능 필요없음
    • 정말 단순히 데이터베이스의 역할만 하는 사용이 쉬운 걸 원함

    firebase

    • 한글문서 제공
    • set, push, update, delete등 메소드 간단함
    • 세팅도 간단함

    대안 → 몽고DB Atlas

    • 영어문서지만 친절한 가이드 문서 제공
    • 실제 몽고DB 쿼리를 사용하기 때문에 나중에 몽고디비를 더 배우고자 할때 도움될것

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

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

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

  4. kelee98 commented on May 16, 2021

    @kelee98
    Collaborator

    firebase 연동 실습

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions