서버측 코드를 작성하지 않고도 클라우드와 연동해 모바일 응용 프로그램을 효율적으로 개발할 수 있는 환경을 제공하는 웹 애플리케이션 개발 플랫폼
백엔드 기능을 클라우드 서비스 형태로 제공해서 서버리스(Serverless) 어플리케이션을 만들기가 가능
앱에서 데이터베이스 사용을 위한 별도의 서버 구성이 필요 없고, 서버 구성이 불필요하기 때문에 서버에 대한 인력과 장비를 아낄 수 있다.
기존 RDBMS 형태의 관계형 데이터베이스가 아닌 고성능 비관계형 데이터베이스
문서, 그래프, 키-값, 컬럼 형식 등 다양한 데이터 모델을 사용
배포 용이성, 확장 가능한 성능, 고가용성 및 복원력이 높다.
로그인이나 회원가입할 때 사용되는 기능
앱에서 사용자가 널리 사용하는 서비스(카카오, 네이버, 페이스북)의 SDK를 사용할 필요 없이 파이어베이스에서 제공하는 인증 기능을 사용하면 SSO를 지원하는 서비스를 통해 사용자가 쉽게 로그인할 수 있다.
SSO(Single Sign On): 사용자가 기기에서 단 한번의 인증 절차만으로 여러 앱에 접속할 수 있도록 제공해주는 기능
SSO는 하나의 서비스 계정으로 다수의 서비스들을 사용할 수 있도록 하는데, 이는 IdP(Identity Provider)가 서비스들의 인증 관련된 정보를 관리하기 때문이다.
NoSQL 클라우드 데이터베이스에 JSON 형태로 데이터를 저장하고 클라이언트에 실시간으로 동기화
기기가 오프라인 상태일 때도 로컬에 데이터를 저장하며, 기기가 온라인 상태가 되면 오프라인일 때 발생한 로컬 데이터와 원격 데이터를 동기화하여 충돌 없이 안정적으로 데이터 사용 가능
실시간 지연 시간이 매우 짧아 상태 동기화가 자주 발생할 때 적합
일반적인 HTTP 요청이 아니라 동기화를 하므로 데이터가 바뀔 때마다 연결된 모든 기기가 수 밀리 초 안에 업데이트를 수신하게 된다.
데이터를 하나의 큰 JSON트리로 저장하기 때문에 중복 데이터가 많이 발생하여 관리하기가 어렵다.
쿼리할때 정렬 및 필터링을 할 수 있지만 동시에 조건문을 걸 수 없다.
기본적으로 깊은 쿼리가 수행되어 항상 전체 하위 트리를 반환한다.
대역폭과 저장용량에 대해서만 청구되지만 요금이 비교적 높다.
대규모의 복잡한 계층적 데이터를 문서와 컬렉션, 쿼리를 이용해 쉽게 관리할 수 있다.
Firestore의 구조는 세 가지로 나뉘는데, 가장 기초적인 요소인 Data가 있고, Data가 모여서 하나의 문서, Document를 만들고 Document가 모여서 Collection을 구성한다.
Push Driven 방식 (snapshot 사용)
유연성 : 데이터가 문서와 컬렉션으로 이루어져 있어 관리하기가 용이하다.
문서에 있는 하위 컬렉션을 사용하여 복잡한 계층적 데이터를 대규모로 쉽게 정리할 수 있습니다.
표현형 쿼리 : 쿼리를 사용해 특정 문서를 가져오거나, 필터가 가능하다.
쿼리가 얕아 특정 컬렉션 또는 컬렉션 그룹의 문서만 반환하며 하위 컬렉션 데이터는 반환하지 않는다.
캐시로 오프라인 지원 : 앱에서 많이 사용되는 데이터를 캐시하기 때문에 기기가 오프라인 상태더라도 앱에서 테이터를 쓰고 읽고 수신 대기하고 쿼리할 수 있다.
기기가 온라인 상태로 전환되면 모든 로컬 변경사항을 다시 동기화한다.
확장성 설계 : 자동으로 다중 지역의 데이터 관리, 일관성 보장, 실제 트랜잭션 지원 등 구글 플랫폼의 다양한 인프라를 활용한다.
주로 데이터베이스에서 수행되는 작업(읽기, 쓰기, 삭제)에 대해 청구되며 대역폭과 저장용량에 대해서도 비교적 저렴한 요금
쿼리에서 항상 전체 문서를 반환해야 한다.
실시간으로 데이터를 동기화하는 기능은 기본적으로 제공이 되지 않는다. 하지만 Cloud Functions를 통해 Cloud Firestore와 실시간 데이터베이스를 동기화하여 실시간 데이터베이스의 접속 상태 지원을 활용할 수 있다.
간단한 데이터는 Set로 데이터를 입력해주면 되지만, 만약 다중 클라이언트로부터 들어오는 정보를 한 곳에 모아서 처리할 경우 runTransaction을 사용하면 된다.
이미지, 오디오, 동영상 등의 콘텐츠를 저장하고 제공
이미지, 오디오, 동영상 등의 콘텐츠 파일에 대한 저장을 별도의 인프라 구성 없이 저장소(Storage)를 통해 공유, 백업, 동기화를 할 수 있다.
파일이 다운로드/업로드가 중지되었을 때 처음부터 다시하지 않고 중단된 위치부터 다시 시작해서 사용자의 시간과 데이터 비용을 절감한다.
보안이 강력하여 파이어베이스 인증과 통합해서 파이어베이스 저장소에 대한 접근 제어를 간편하게 할 수 있다.
확장성이 높다.
인터넷 상의 공간을 임대해주는 서비스로 직접 웹 서버를 구축하지 않고 서버 일부 공간을 임대해서 독자적인 서버를 가진 것과 같은 효과를 낸다.
파이어베이스 호스팅은 HTML, CSS, JavaScript와 같이 정적(자주 바뀌지 않는) 콘텐츠를 빠르고 안전하게 호스팅해준다.
파이어베이스 호스팅은 기본적으로 SSL을 제공한다.
SSL (Secure Sockets Layer) : 인터넷 웹 브라우저와 웹 서버 간에 데이터를 안전하게 주고 받기 위한 업계 표준 프로토콜로, 인증 암호화 기능이 있다.
또한 글로벌 CDN을 기반으로 SSL을 통해 콘텐츠를 제공하고 맞춤 도메인 또는 firebaseapp.com의 하위 도메인을 통해 이용할 수 있다.
CDN (Content Delivery Network) : 일종의 캐시 역할을 할 수 있도록 네트워크에 동일한 콘텐츠 내용을 복제하여 대규모 인터넷상에 분산시켜 놓은 시스템.
앱 품질을 저해하는 안전성 문제를 추적하고 수정하는데 도움을 주는 실시간 오류 보고 도구
오류가 나면 오류가 발생되는 단말에서 로그를 넣고 재현을 하거나 디버깅 모드로 오류가 발생되는 지점의 코드를 분석할 수 있다.
구체적으로 앱의 비정상 종료의 심각도와 발생률을 모니터하고 그에 따른 통계, 애널리틱스와 통합, 실시간 알림 기능을 제공한다.
이 밖에 앱 시작 시간, HTTP 네트워크 요청, 화면별 렌더링 데이터, 포그라운드 작업, 백그라운드 작업 등 앱 성능에 영향을 주는 요소들을 자동으로 추적한다.
앱의 성능 데이터를 세분화하고 여러 운영체제, 국가, 이동통신사, 기기, 앱 버전 등 다양한 속성을 즉시 사용할 수 있도록 제공한다.
서드파티 서버에서 구글에서 제공하는 푸시 서버를 이용하여 앱 단위로 메시지를 전송할 수 있는 서비스
사용자가 앱 업데이트를 다운로드할 필요 없이 앱의 동작과 화면을 변경할 수 있는 클라우드 서비스
사용자가 구글 플레이스토어에서 직접 업데이트해야 되는 부분이 없어진다.
또한 A/B 테스트를 할 수 있다.
A/B 테스트 : 두 가지 콘텐츠를 비교하여 방문자/뷰어가 더 높은 관심을 보이는 버전을 확인
앱 사용 및 사용자에 대한 데이터 통계를 제공하는 무료 서비스