TIL

[TIL] Firebase [ 1 ] Firebase, Firebase Service ( Analytics, Authentication, Realtime DB, Firestore ) 개요

정상호소인 2023. 10. 12. 21:27

Topic = Firebase와 지원하는 Service ( Analytics, Authentication, Realtime DB, Firestore ) 들의 특징 정리해보기

  • 해당 서비스들 외에  Cloud Storage, Cloud Function, Firebase ML 등은 오늘 다룬 기능들의 예제를 다 만들어 보고 학습하고 난 뒤에 따로 정리해볼 예정이다.

 


 

Why [ Firebase에 대해서 학습하는 이유 ]

 

   Firebase에 대해서 학습하기 이전에도 Firebase가 앱 개발에 많은 편의를 제공한다는 말과 함께 Database를 관리할 수 있도록 하는 툴이라고 익히 듣거나 보았을 것이다. 이전에 학습했던 Room, SharedPreference 와 같은 DB는 로컬 DB로, 사용자 각각의 정보를 개개인의 로컬에만 저장할 수 있는 Database 였다.

   로컬 DB로는 게시글이나 채팅 등과 같이 다른 사용자의 Data에 읽기, 쓰기와 같은 접근을 할 수 없다. 다른 사용자의 data에 접근하도록 해서 사용자 사이의 상호작용을 가능토록 하기 위해선 서버를 이용해 data를 서버에 저장하고, 사용자들이 서버에 있는 data를 통해서 정보를 받고 상호작용이 가능하도록 해야한다.

   앱 개발 학습을 하면서 서버에 대해서 아는 것이라고는 단순하게 서버를 개발하는 사람은 백엔드 개발자라고 한다?? 와 Kotlin Ktor 를 통해 서버 구축이 가능하다 정도인데 Firebase를 사용하면 개발자가 별도로 서버를 구축할 필요가 없이 Firebase에서 제공하는 원격 서버에 호스팅 되고 이를 Firebase 콘솔을 통해 관리할 수 있다.

   

 

 

Firebase

 

   Firebase는 클라우드 기반의 플랫폼으로, 서버리스 아키텍처를 지원한다. 서비스는 클라우드에서 호스팅 된다.클라우드 호스팅이란 Google이 유지관리하는 백엔드 구성요소가 있다는 의미이다. Firebase는 앱과 서비스간에 중간 작업 없이 백엔드 서비스와 직접적으로 상호작용할 수 있으므로, 개발자가 별도로 서버를 구축하지 않고 사용자간의 커넥션이 가능한 앱을 만들 수 있다.

   Firebase는 데이터 베이스에서 액세스할 수 있는 데이터를 사용자에 따라 정의하는 보안 규칙을 통해 관리할 수 있는 기능을 제공하여 액세스 제어성을 높일 수 있으며 오프라인 데이터 지속성을 지원하여 앱이 오프라인 상태여도 데이터를 사용할 수 있으며 연결이 복원되면 서버와 동기화 된다.

   Firebase Console를 기본적으로 제공해줌으로 Console을 통해 데이터 조작 및 여러가지 서비스를 관리할 수 있다.

 

 

✔️ Firebase의 글들을 보다보면 Firestore와 Realtime DB에 쿼리가 많이 부족하다는 얘기가 있는데 해당 글을 쓴 시점에서는 해당 부분의 문제가 많이 개선되었다고 한다.

 

출처 : https://medium.com/firebase-developers/what-is-firebase-the-complete-story-abridged-bcc730c5f2c0

 

 

Firebase Service

Analytics - 사용자 분석 Tool
  • 대상 및 사용자 세분화 ( Segment ), 이벤트 추적
    • 사용자의 앱 사용에 있어서 화면 전환, 버튼 클릭 등 다양한 사용자의 동작을 정의하고 추적하며 데이터화를 통해 앱 전반적인 사용자 활동 추이를 확인하여 개선점을 확인할 수 있으며 사용자 속성을 연령, 사용 언어,성별 등으로 정의하여 특성이나 행동을 기반으로 각 분류의 사용자 속성을 확인할 수 있다.
  • 개인정보 보호 및 데이터 통제
    • 데이터 개인 정보 보호 규정 준수를 보장하기 위해 데이터 공유 및 사용자 동의를 제어하는 옵션을 제공한다.

 

 

 

Authentication - 앱 보안 인증 및 권한 부여 Tool
  • 다양한 인증 방법 지원
    • Email, 전화번호, 소셜 로그인 ( Google, Facebook, Twitter, Github(??) 등등 ) 을 기본적으로 제공하며 추가로 카카오톡, 네이버와 같은 웹 로그인도 API를 통한 맞춤 설정을 통해 사용 가능하다.( 기본적 제공하는 로그인 외에는 유료지만 다양한 방식으로 무료로 하는 방법도 많은 것 같다 )
  • 콘솔에서 보안규칙 관리
    • Firebase 콘솔에서 계정 생성, 업데이트, 삭제 기능과 비밀번호 재설정 등의 사용자 관리 기능을 제공한다.
  • 사용자 인증 신뢰성 증가
    • Firebase에서 reCAPTCHA와 이메일 확인 내장 솔루션을 제공함으로 사용자 확인을 통해 신뢰성을 높일 수 있다
  • OAuth 2.0 및 OIDC 지원
    • 인증 방식의 개방형 표준 방식을 따라 OAuth 2.0 과 OIDC ( OpenID Connet ) 와 호환을 통해 안정한 인증이 가능하도록 한다.
  • 교차 플랫폼 지원
    • Firebase 인증은 웹과 모바일 앱 모두에서 사용하도록 설계되어 있어 웹과 IOS, Android 환경 모두 사용되는 플랫폼 전반에 걸쳐 일관된 인증 환경을 쉽게 구현할 수 있다.

 

 

Realtime DB - ( Firebase에서 만든 DB ) 실시간 클라우드 호스팅 ( 실시간 DB ), NoSQL DB
  • Data 저장 형식 - JSON
  • 트리 계층 구도
    • Realtime DB의 데이터는 루트 노드와 자식 노드로 구성된 트리 구조로 구성된다. 각 노드에는 데이터와 하위 노드가 포함되어 계층적 구조를 형성할 수 있다.
    • 이때 노드( Node )란 데이터의 단위로 사용되는 개별적인 위치를 의미한다
  • 실시간 동기화
  • 콘솔에서 보안규칙 관리
    • 데이터에 대한 액세스를 제어하기 위한 보안 규칙을 정의하여 데이터에 접근할 수 있는 사용자를 구분해 액세스를 제어한다.
  • Firebase SDK를 사용해 멀티 플랫폼 통합 호환
    • Firebase SDK를 통해 Firebase Service 와 상호작용하기 위한 API와 Tool 을 사용할 수 있다. 이로 인해 웹, IOS, Android 각각의 데이터로 생성할 필요 없이 하나의 Data를 통해서 관리할 수 있다
  • 서버리스
    • Firebase가 서버 인프라를 관리하므로 개발자는 별도로 서버를 관리하거나 유지할 필요가 없다.

 

 

 

 

Cloud Firestore - ( Google 에서 만든 DB ) 실시간 클라우드 호스팅 ( 실시간 DB ), NoSQL DB 
  • Data 저장 형식 - Document-Collection의 구조로 구성되며 각 Collection에는 Documents가 포함된다. 이는 Json보다 더욱 더 구조화되고 유연한 저장 형식이다. Documents 는 Key - Value 쌍의 집합으로 이루어져 있다. 
  • 실시간 동기화
  • 콘솔에서 보안규칙  관리
    • 데이터에 대한 액세스를 제어하기 위한 보안 규칙을 정의하여 데이터에 접근할 수 있는 사용자를 구분해 액세스를 제어한다.
  • Firebase SDK를 사용해 멀티 플랫폼 통합 호환
    • Firebase SDK를 통해 Firebase Service 와 상호작용하기 위한 API와 Tool 을 사용할 수 있다. 이로 인해 웹, IOS, Android 각각의 데이터로 생성할 필요 없이 하나의 Data를 통해서 관리할 수 있다
  • 다양한 쿼리 지원
    • 다양한 쿼리 기능을 제공하므로 특정 기준에 따라 데이터를 필터링, 정렬, 검색하여 효율적으로 데이터를 얻을 수 있다.
  • 서버리스
    • Firebase가 서버 인프라를 관리하므로 개발자는 별도로 서버를 관리하거나 유지할 필요가 없다.
  • 일괄 작업
    • 여러 쓰기를 그룹화하고 단일 작업으로 커밋할 수 있는 일괄 작업을 수행할 수 있다. 이는 데이터의 일관성을 보장한다.

 

 

 

Cloud Firestore vs Realtime DB

   Cloud Firestore와 Realtime DB 둘 다 서버리스의 실시간 DB 저장 기능을 제공하고 Realtime DB와 Cloud Firestore 모두 꾸준히 업데이트 되고 있다. 상황에 맞게 선택하여 사용하면 될 것 같아서 두 서비스의 차이점에 대해서 간단하게 알아보자.

 

  • 복잡한 데이터 모델링과 DB의 확장성이 필요한 경우, Cloud Firestore를, 실시간 동기화가 필요한 작은 규모의 앱의 경우에는 Realtime DB가 적합하다고 하며 두가지를 같이 사용할 수도 있다고 한다.
  • Realtiem DB vs Cloud Firestore의 service 선택 가이드 주소
 

데이터베이스 선택: Cloud Firestore 또는 실시간 데이터베이스  |  Firebase

Demo Day를 위해 일정을 비워두고 Firebase의 새로운 소식과 기능들을 확인해 보세요. 자세히 알아보기 의견 보내기 데이터베이스 선택: Cloud Firestore 또는 실시간 데이터베이스 컬렉션을 사용해 정리

firebase.google.com

 

DB 선택 가이드 웹에 이동 시 필요한 기능 체크를 통해 확인할 수 있는 Service 가이드를 제공한다.

   Firebase에서 제공하는 Service 중 일부를 알아보았는데 학습 기능 외에도 Firebase에서는 다양한 Expentions을 제공한다. 2023 Google I/O 앞두고 Firebase Extensions에 PaLM API를 포함한 Chatbot 기능을 지원한다고 발표했으며 이와 같은 추가적인 Extentions를 다양하게 사용할 수 있다.

 

 


 

Analytics를 사용해야 하는 이유... ( 매우 중요 )

   사용자와 사용자가 앱을 사용하는 방식을 더 잘 알아야 하는 경우 Analytics를 통해 이를 확인할 수 있다. 처음으로 앱을 게시하면 사용자 기반이 누구인지, 어디에 거주하는지, 앱을 어떻게 사용할지에 대한 아이디어를 얻을 수 있다. 그리고 그러한 생각은 실제로는 완전히 틀릴 수도 있다. 확실히 알 수 있는 유일한 방법은 데이터를 수집하는 것이며, 이때 Analytics가 도움이 된다.

성인 10명 중 9명은 CoD보다 포켓몬을 선호하는 것으로 나타났습니다.

 

⭐ 아래 링크에서 Analytics 내용 스크랩 해당 글이 도움이 많이 되었다. 출처 [ Firebase 개발자가 쓴 글 같다 ]

 

What is Firebase? The complete story, abridged.

Turns out, Google’s mobile and web application development platform is mostly stock photos, XKCD comics, and dank memes.

medium.com


 

[ A.오늘 복습한 내용 / B.다음에 학습할 내용]

A. 처음 Firebase 프로젝트를 생성할 땐 Analytics가 단순하게 Firebase에 오류가 생길 시 리포트 생성하겠냐고 물어보는 문항인 줄 알았는데 다양한 기능을 포함하고 있었다.

 

B. 노드 트리와 같은 자료구조에 대해서도 학습해보면 좋을 것 같다

 

B. NoSQL 추가 학습 해보기.

 


[오류,에러 등등]

1. 개념 위주로 학습해서 특별한 오류는 없었는데, Firestore와 Realtime DB에 대해서 확실하게 어떤 것을 어느 상황에 사용해야 할지 확실하게 구분하지 못했다.

 


[느낀 점]

1. 어색하지만 문서가 잘 읽히는 걸로 보아 재미있는 기능인 것 같다

 

2. Github를 통해 다양한 코드를 보는 것이 좋을 것 같다.

 

3. 검색할때도 키워드가 중요한 것 같다.

 

 


[Reference]

 

// Firebase

https://firebase.google.com/docs/firestore/rtdb-vs-firestore?hl=ko

https://medium.com/firebase-developers/what-is-firebase-the-complete-story-abridged-bcc730c5f2c0