파이어베이스

황희윤·2022년 7월 16일
0
post-custom-banner

파이어베이스 (Firebase)

서버측 코드를 작성하지 않고도 클라우드와 연동해 모바일 응용 프로그램을 효율적으로 개발할 수 있는 환경을 제공하는 웹 애플리케이션 개발 플랫폼

  • 백엔드 기능을 클라우드 서비스 형태로 제공해서 서버리스(Serverless) 어플리케이션을 만들기가 가능

  • 앱에서 데이터베이스 사용을 위한 별도의 서버 구성이 필요 없고, 서버 구성이 불필요하기 때문에 서버에 대한 인력과 장비를 아낄 수 있다.


NoSQL (Not Only SQL)

기존 RDBMS 형태의 관계형 데이터베이스가 아닌 고성능 비관계형 데이터베이스

  • 문서, 그래프, 키-값, 컬럼 형식 등 다양한 데이터 모델을 사용

  • 배포 용이성, 확장 가능한 성능, 고가용성 및 복원력이 높다.


인증 (Authentication)

  • 로그인이나 회원가입할 때 사용되는 기능

  • 앱에서 사용자가 널리 사용하는 서비스(카카오, 네이버, 페이스북)의 SDK를 사용할 필요 없이 파이어베이스에서 제공하는 인증 기능을 사용하면 SSO를 지원하는 서비스를 통해 사용자가 쉽게 로그인할 수 있다.

  • SSO(Single Sign On): 사용자가 기기에서 단 한번의 인증 절차만으로 여러 앱에 접속할 수 있도록 제공해주는 기능

  • SSO는 하나의 서비스 계정으로 다수의 서비스들을 사용할 수 있도록 하는데, 이는 IdP(Identity Provider)가 서비스들의 인증 관련된 정보를 관리하기 때문이다.


실시간 데이터베이스 (Realtime Database)

NoSQL 클라우드 데이터베이스에 JSON 형태로 데이터를 저장하고 클라이언트에 실시간으로 동기화

  • 실시간으로 클라이언트에서 데이터가 동기화되고, 앱이 오프라인 상태라도 계속 사용할 수 있도록 한다.

장점

  • 기기가 오프라인 상태일 때도 로컬에 데이터를 저장하며, 기기가 온라인 상태가 되면 오프라인일 때 발생한 로컬 데이터와 원격 데이터를 동기화하여 충돌 없이 안정적으로 데이터 사용 가능

  • 실시간 지연 시간이 매우 짧아 상태 동기화가 자주 발생할 때 적합

단점

  • 일반적인 HTTP 요청이 아니라 동기화를 하므로 데이터가 바뀔 때마다 연결된 모든 기기가 수 밀리 초 안에 업데이트를 수신하게 된다.

  • 데이터를 하나의 큰 JSON트리로 저장하기 때문에 중복 데이터가 많이 발생하여 관리하기가 어렵다.

  • 쿼리할때 정렬 및 필터링을 할 수 있지만 동시에 조건문을 걸 수 없다.

  • 기본적으로 깊은 쿼리가 수행되어 항상 전체 하위 트리를 반환한다.

  • 대역폭과 저장용량에 대해서만 청구되지만 요금이 비교적 높다.


클라우드 파이어스토어 (Cloud Firestore)

대규모의 복잡한 계층적 데이터를 문서와 컬렉션, 쿼리를 이용해 쉽게 관리할 수 있다.

Firestore의 구조는 세 가지로 나뉘는데, 가장 기초적인 요소인 Data가 있고, Data가 모여서 하나의 문서, Document를 만들고 Document가 모여서 Collection을 구성한다.

Push Driven 방식 (snapshot 사용)

  • 데이터베이스의 내용이 수정될 경우 UI가 갱신됨
  • 화면을 그리는 주도권이 데이터베이스에 있다.
  • 반응성이 매우 좋음

장점

  • 유연성 : 데이터가 문서와 컬렉션으로 이루어져 있어 관리하기가 용이하다.

  • 문서에 있는 하위 컬렉션을 사용하여 복잡한 계층적 데이터를 대규모로 쉽게 정리할 수 있습니다.

  • 표현형 쿼리 : 쿼리를 사용해 특정 문서를 가져오거나, 필터가 가능하다.

  • 쿼리가 얕아 특정 컬렉션 또는 컬렉션 그룹의 문서만 반환하며 하위 컬렉션 데이터는 반환하지 않는다.

  • 캐시오프라인 지원 : 앱에서 많이 사용되는 데이터를 캐시하기 때문에 기기가 오프라인 상태더라도 앱에서 테이터를 쓰고 읽고 수신 대기하고 쿼리할 수 있다.

  • 기기가 온라인 상태로 전환되면 모든 로컬 변경사항을 다시 동기화한다.

  • 확장성 설계 : 자동으로 다중 지역의 데이터 관리, 일관성 보장, 실제 트랜잭션 지원 등 구글 플랫폼의 다양한 인프라를 활용한다.

  • 주로 데이터베이스에서 수행되는 작업(읽기, 쓰기, 삭제)에 대해 청구되며 대역폭과 저장용량에 대해서도 비교적 저렴한 요금

단점

  • 쿼리에서 항상 전체 문서를 반환해야 한다.

  • 실시간으로 데이터를 동기화하는 기능은 기본적으로 제공이 되지 않는다. 하지만 Cloud Functions를 통해 Cloud Firestore와 실시간 데이터베이스를 동기화하여 실시간 데이터베이스의 접속 상태 지원을 활용할 수 있다.

데이터 생성

간단한 데이터는 Set로 데이터를 입력해주면 되지만, 만약 다중 클라이언트로부터 들어오는 정보를 한 곳에 모아서 처리할 경우 runTransaction을 사용하면 된다.

  • runTransaction
    • runTransaction은 여러 클라이언트의 데이터 중복 접근을 방지한다.
    • 한 사람이 Document에 접근해서 데이터를 쓰는 동안 다른 사용자는 데이터베이스로 접근 할 수 없다.
    • 인구 수, 투표와 같이 다중 클라이언트로부터 들어오는 정보를 한 곳에 모아서 처리 할 때 중복 입력을 피하기 위한 방법으로 runTransaction을 사용하면 된다.

저장소 (Storage)

이미지, 오디오, 동영상 등의 콘텐츠를 저장하고 제공

  • 이미지, 오디오, 동영상 등의 콘텐츠 파일에 대한 저장을 별도의 인프라 구성 없이 저장소(Storage)를 통해 공유, 백업, 동기화를 할 수 있다.

  • 파일이 다운로드/업로드가 중지되었을 때 처음부터 다시하지 않고 중단된 위치부터 다시 시작해서 사용자의 시간과 데이터 비용을 절감한다.

  • 보안이 강력하여 파이어베이스 인증과 통합해서 파이어베이스 저장소에 대한 접근 제어를 간편하게 할 수 있다.

  • 확장성이 높다.


호스팅 (Hosting)

인터넷 상의 공간을 임대해주는 서비스로 직접 웹 서버를 구축하지 않고 서버 일부 공간을 임대해서 독자적인 서버를 가진 것과 같은 효과를 낸다.

  • 파이어베이스 호스팅은 HTML, CSS, JavaScript와 같이 정적(자주 바뀌지 않는) 콘텐츠를 빠르고 안전하게 호스팅해준다.

  • 파이어베이스 호스팅은 기본적으로 SSL을 제공한다.

  • SSL (Secure Sockets Layer) : 인터넷 웹 브라우저와 웹 서버 간에 데이터를 안전하게 주고 받기 위한 업계 표준 프로토콜로, 인증 암호화 기능이 있다.

  • 또한 글로벌 CDN을 기반으로 SSL을 통해 콘텐츠를 제공하고 맞춤 도메인 또는 firebaseapp.com의 하위 도메인을 통해 이용할 수 있다.

  • CDN (Content Delivery Network) : 일종의 캐시 역할을 할 수 있도록 네트워크에 동일한 콘텐츠 내용을 복제하여 대규모 인터넷상에 분산시켜 놓은 시스템.


크래시리틱스 (Crashlytics)

앱 품질을 저해하는 안전성 문제를 추적하고 수정하는데 도움을 주는 실시간 오류 보고 도구

  • 오류가 나면 오류가 발생되는 단말에서 로그를 넣고 재현을 하거나 디버깅 모드로 오류가 발생되는 지점의 코드를 분석할 수 있다.

  • 구체적으로 앱의 비정상 종료의 심각도와 발생률을 모니터하고 그에 따른 통계, 애널리틱스와 통합, 실시간 알림 기능을 제공한다.

  • 이 밖에 앱 시작 시간, HTTP 네트워크 요청, 화면별 렌더링 데이터, 포그라운드 작업, 백그라운드 작업 등 앱 성능에 영향을 주는 요소들을 자동으로 추적한다.

  • 앱의 성능 데이터를 세분화하고 여러 운영체제, 국가, 이동통신사, 기기, 앱 버전 등 다양한 속성을 즉시 사용할 수 있도록 제공한다.


클라우드 메시징 (Cloud Messaging)

서드파티 서버에서 구글에서 제공하는 푸시 서버를 이용하여 앱 단위로 메시지를 전송할 수 있는 서비스

  • 안드로이드, iOS 모두 사용 가능

원격 구성 (Remote Config)

사용자가 앱 업데이트를 다운로드할 필요 없이 앱의 동작과 화면을 변경할 수 있는 클라우드 서비스

  • 사용자가 구글 플레이스토어에서 직접 업데이트해야 되는 부분이 없어진다.

  • 또한 A/B 테스트를 할 수 있다.

  • A/B 테스트 : 두 가지 콘텐츠를 비교하여 방문자/뷰어가 더 높은 관심을 보이는 버전을 확인


애널리틱스 (Analytics)

앱 사용 및 사용자에 대한 데이터 통계를 제공하는 무료 서비스

profile
HeeYun's programming study
post-custom-banner

0개의 댓글