1. firebase 소개

1.1 RDBMS vs Document data model

  1. RDBMS
* RDBMS는 사전에 데이터에 대해서 모두 설계가 되어야 한다. 
* 다른 데이터 베이스와 외래키를 통해서 관계를 정의
  1. Document data model - NoSQL
* 고정되지 않은 데이터베이스 스키마
  * 처음 프로젝트를 시작할 때와 프로젝트가 커질 때 상당한 이점이 된다. 
  * 트리형태로 되어 있어서 데이터 간의 관계를 정의할 수 있다.  
  
* 쿼리 속도가 느림
  * SQL 쿼리를 사용할 수 없고 대신 트리 구조를 잘 만들어야 한다. 
  * 검색에 걸리는 노드의 개수가 많아지면 연산 속도가 매우 느려진다. 
  * 최근엔 Firestore의 등장으로 개선되었다고 한다. 
  
* JSON형태로 된 데이터 
  * Parsing할 필요가 없기 때문에 클라이언트와의 연동이 편하고 parse error의 가능성도 없다.

  1. 클라우드 함수
* Real-time datavase  
  * 데이터를 저장, 삭제, 변경  
  * Constistency 확보를 위한 후 처리와 분류  
* Firebase authentification  
  * 사용자 가입 및 탈퇴 등 사용자 정보 처리  
  
* Analytics  
  * Google analytics 이벤트 발생 시 처리   
  
* Cloud stoage  
  * storage (일종의 CDN) 관리  
  
* HTTP  
  * HTTP 요청에 대한 응답 생성  
  * RESTful API와 비슷   
  
* Cloud sub/pub  
  * Google cloud 시스템 간 메세징  
  1. 그 외 편리한 기능들
* Authentication 모듈 제공  
  * 자체적으로 회원가입 및 로그인 기능과 UI를 제공   
  * SNS를 통한 SSO 연동도 가능 

* 클라우드 메세징   
  * 기기에 상관 없이 간편하게 푸시 알림 기능을 제공  
  
* Google analytics와의 연동  
  * 사용자가 서버로 보내는 요청을 기록해 보고서 작성  
  * 추적 코드에서 발생시키는 이벤트에 대한 핸들러를 구현할 수 잇음.