미니프로젝트 도전 01 -MSZ

random-olive·2022년 10월 18일

너무 감사하게도 서류 합격을 알려온 회사가 있어서 코딩과제를 수행하게 되었다..!
취업준비가 막막하기만 했어서 잠시 풀어져있던 나에게 다시 에너지를 불어넣어본다..


00/ 요구사항 정리 및 과제방향 설계

  • Firebase 활용
  • 웹 / 모바일 사이즈 커버
  • SNS 소셜로그인 기능 + 관리자 로그인
  • 게시판 기능
  • firebase를 활용한 기능 + 디자인 깔끔하게 해보기
    • 푸시알림, 원격구성, 콘솔, analytics,

01/ Firebase 학습

  • Firebase
    • 구글에서 제공하는 클라우스 서비스로 어플리케이션 개발을 쉽게 해주는 기능 존재
      ( 인증, DB, storage, 원격 구성, 푸시 알림, ... )
    • noSQL 기반의 3세대 DB, 관계형 DB보다 Document 형식의 빠르고 간편하며, RTSP (Real Time Stream Protocol)방식을 지원함
    • 원격 구성 (앱의 환경상태 변경), 콘솔, 통계 제공 등
    • 장점은 바로 소켓으로 연결되어 실시간 서비스를 구축하기 좋다.
    • 단점은 서버 응답이 느린 편. 서버가 국내에도 많이 생긴다면 응답지연 해결이 될 것, 그 전까지는 최적화를 최대한 하는 게 좋을듯
    • SQL에 비해 query가 굉장히 빈약하다, 모든 데이터를 받아와서 안드로이드 기기에서 필터링 필요
  • 환경 구성
    • https://firebase.google.com
    • 프로젝트 생성
      • 시작하기 → 프로젝트 추가 → Google analytics 사용
    • 앱에 Firebase 추가
      • </> → 닉네임 추가 → sdk 추가방법 보고 추가하기
      • npm install firebase는 리액트 디렉토리에서 한다
    • 환경변수 설정
      • .env 파일은 최상위 루트에
        (& package.json가 같은 경로에 있어야 함)
      • REACT_APP_key = value
        (:로 매칭하면 안됨)
      • 각 줄 끝에 ;나 ,를 쓰거나 value를 "", ''로 감싸면 안됨
      • 환경변수 설정 후 재시작해야 제대로 작동됨 확인
      • .gitignore에 꼭 올리기

02/ DB 구성

  • DB 선택 : Cloud Firestore / RTDB

    • 쿼리가 풍부하고,
      서버 확장이 자동으로 처리되며,
      데이터와의 복잡한 상호작용이 필요한 경우 권장되는 Firestore data 선택

  • Cloud Firestore

    • Firebase, google cloud의 모바일, 웹, 서버 개발에 사용되는 확장 가능한 DB
    • 주요 기능
      • 유연성 :
        유연한 계층적 데이터 구조를 지원하는 데이터 모델, 하위 컬렉션 외에도 복잡한 중첩된 개체를 문서에 포함할 수 있음
      • 표현형 쿼리 :
        쿼리에 여러 필터를 서로 연결해 적용 가능
        필터링과 정렬의 결합도 가능
        기본적으로 색인이 생성되어 쿼리 성능이 데이터 세트가 아닌 결과 세트의 크기에 비례
      • 실시간 업데이트 :
        데이터 동기화를 사용해 연결된 모든 기기의 데이터를 업데이트
      • 오프라인 지원 :
        앱에서 많이 사용되는 데이터를 캐시하기 때문에 기기가 오프라인 상태라도
        데이터 읽기,수신대기, 쿼리가 가능
        기기가 온라인상태로 전환되면 모든 로컬변경사항을 다시 Cloud Firestore로 동기화함
      • 확장형 설계 :
        자동 멀티 리전 데이터 복제, 강력한 일관성 보장, 원자적 일괄 작업, 실제 트랜잭션 지원 등 Google Cloud의 강력한 인프라를 최대한 활용
    • 데이터모델 : NoSQL, 문서로 다룸.
    • Data Normalization (데이터가 한 공간에 존재해야함)과는 거리가 멀어서, 다른 곳에서의 쓰기를 전부 복제해서 진행해야 하지만, 읽기 속도에서 훨씬 빨라서 이점이 있음
    • Scaling Horizontally (중단없이 빠른 확장)
    • K-V pairs : fields
    • Collection은 string, binary, blob 등은 안되고 doc 형태로만 가능
    • 문서의 크기는 1MB 미만
    • 하위 컬렉션 참조를 통해 사용방법은 firestore.collection(..).document(..).collection(..).document(..)...
      처럼 필요한 문서가 나올 때까지 drill down한다.

참조 :
Firebase 환경구성

profile
Doubts kills more dreams than failure ever will

0개의 댓글