22sook00 logo
SookDev

파이어 베이스로 DB 구축하기

tag
auth
thirdparty
date
Dec 18, 2023

01_firebase 의 제공 기능

  • auth : 간편 다중 플랫폼 로그인
    • 이메일 인증, 소셜계정, 전화번호 인증
    • 보안강화, 사용자인증 과정 안전하게 처리
  • firestore : NoSQL DB
    • 실시간 데이터 동기화 지원 ex - 실시간 채팅
  • storage
    • 사용자 파일 저장 및 공유 및 강력한 보안
    • 사진,동영상,오디오 제공
  • hosting
    • 정적 및 동적 콘텐츠 모두 호스팅이 가능하여 웹, 앱을 간단히 배포할 수 있다.

장점

  • 백엔드 서버없이 개발가능
  • 실시간 DB
  • 구글 플랫폼 통합하여 구글 클라우드 플랫폼서비스를 쉽게 이용 및 분석이 가능하다.

단점

  • 쿼리 제한
  • 확장성이 중요한 경우 비용이 빠르게 증가 할 수 있다. (spark 요금제)
  • 마이그레이션이 어렵다. 타 백엔드 서비스로 전환하는 경우에 추가적인 작업이 필요
 

02_firebase Authentication

  • 인증정보 변경 시 실시간으로 앱에 업데이트 가능
  • 이메일 전송, 비밀번호 재설정 이메일 전송 가능
  • 복잡한 인증과정을 파이어베이스가 대신처리 가능하여 클라이언트 사이드 개발에만 집중 할 수 있다.
  • 소셜미디어 계정 인증이 가능
  • 사용자의 비밀번호를 안전하게 암호화가 가능
  • HTTPS 를 이용하여 데이터 전송 보안을 유지
 
onAuthStateChanged
firebase Authentication 에서 제공하는 메소드
사용자가 로그인,로그아웃 할때마다 호출된다.
사용자 객체를 인자로 받아 사용자의 로그인 상태를 판단한다.
로그인상태가 아니라면 null 을 리턴한다.
중간단계를 거치지 않아 더욱 더 빠르고 자연스러운 사용자 경험을 제공할 수 있다.
 
firebase authentication 공식문서
 

 

03_firestore

firebase에서 제공하는 NoSQL 형식의 클라우드 DB
  • 실시간 데이터동기화 지원하며 웹, 안드로이드, ios 에서 데이터를 저장하고 동기화 할 수 있다.
    • 텍스트,이미지,사용자설정 등 데이터를 저장할 수 있다.
  • 구조화 된 데이터
    • 문서와 컬렉션의 형태로 저장되며 효율적인 쿼리작성을 가능하게 한다.
    • 하나의 큰 컬렉션 안에 하나하나 작은 요소의 다큐먼트를 가지는 형태
  • 오프라인 지원 제공
    • 네트워크연결이 끊어져도 앱이 파이어스토어를 작성,접근하도록 한다. 네트워크가 재연결되면 파이어스토어는 동기화 한다.
  • 보안이 철저하다
    • 사용자기반의 보안규칙 설정 가능
 

인스턴스 가져오기

  • getFirestore
  • addDoc 메소드를 통해 데이터 저장 가능

규칙설정

테스트모드로 하면 누구나 접근이 용이해서 편리하지만 배포 후에도 계속 테스트모드가 된다면 보안에 위험이 따를 수 있어 배포하기 전엔 반드시 규칙을 확인하도록 한다

NoSQL

데이터베이스 생성하기를 클릭하면 컬렉션시작하기 버튼이 나온다.
이곳에서 API 쿼리가 될 텍스트를 문서ID 에 입력하면 너무나도 쉽게 필드 추가 및 수정이 가능하다
‼ RDBnS 나 구조화된 DB 는 한번 필드를 작성하면 추후 수정이 어렵고 모든 데이터가 같은 필드를 갖고있는 반면, 사전에 디비 스키마를 짤 필요가 없이 그때그때 원하는 필드를 추가하기 때문에 이러한 유연함이 NoSQL 의 큰 장점이라고 할 수 있다.
 
컬렉션 아이디는 보통 모델 이름으로 지을 수있다.
notion image
색인은 복합쿼리 사용 시 필요하다.