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 의 큰 장점이라고 할 수 있다.
컬렉션 아이디는 보통 모델 이름으로 지을 수있다.
색인은 복합쿼리 사용 시 필요하다.