본문 바로가기

Software Engineering/Tech-Stacks

[Firebase] Firebase 학습 로드맵

개요

유니티로 게임 개발을 학습하다 보니, 로그인, 게임 데이터 저장 및 로드, 그리고 사용자 피드백 같은 부분에서 서버의 필요성을 느끼게 되었. 그래서 여러 튜터님들과 멘토님들께 조언을 구했는데, 뒤끝, Firebase, AWS Amplify 같은 BaaS 플랫폼을 추천받았다. 그중에서도 많은 분들이 Firebase를 가장 많이 추천해 주셔서, 이 플랫폼에 대해 좀 더 깊이 찾아보게 되었다.

Firebase는 구글에서 제공하는 클라우드 기반 서비스로, 인증, 데이터베이스, 스토리지, 푸시 알림 같은 기능들을 쉽게 구현할 수 있다. 서버 관리에 대한 부담이 적기 때문에 많은 회사에서 이 플랫폼을 채택하고 있고, 개인적으로도 구글이 제공하는 서비스라 더욱 신뢰가 갔다.

이하의 Firebase의 각종 기능들은 학습하면 좋은 순서대로 정리했다. 기본적인 기능인지, 실무에서 얼마나 중요하게 사용하는지, 난이도가 어려운지 등을 기반으로 했다.

1. Firebase Authentication

난이도: ★★☆☆☆
Unity SDK 패키지 명 : `FirebaseAuth`

기능 설명 : 다양한 방법으로 사용자를 인증할 수 있다. 이메일/비밀번호, Google, Facebook, Twitter(X), Github, 전화번호 등 다양한 인증 제공자를 지원한다.

주요 기법

  • Custom Claims: 관리자, 사용자 등 다양한 권한을 부여하는 방법.
  • Email Link Authentication: 비밀번호 없이 이메일로 링크를 보내 로그인.
  • Anonymous Authentication: 인증 없이 데이터를 사용하게 하거나, 이후 정식 인증으로 전환.
  • Third-party Providers: OAuth 연동을 통해 Google, Facebook 등으로 로그인 구현.

2. Realtime Database / Firestore

난이도: ★★★☆☆
Unity
SDK 패키지 명 : FirebaseDatabase / FirebaseFirestore

기능 설명 : 실시간 DB는 JSON 트리 형태로 저장하고 실시간 동기화를 지원한다. Firestore는 비슷한 기능을 제공하지만 더 강력한 쿼리 기능을 지원한다.

주요 기법

  • Firestore Security Rules: 특정 사용자에게만 데이터 접근을 허용하거나, 특정 조건 하에서만 데이터를 수정/읽기할 수 있도록 설정.
  • Offline Persistence: 네트워크가 없는 상황에서도 데이터를 저장하고, 온라인 상태로 돌아오면 자동으로 동기화.
  • Sharding: 대규모 데이터를 처리할 때 데이터베이스를 여러 개로 분할하여 성능 향상.
  • Batched Writes / Transactions: 여러 데이터를 한 번에 처리하는 작업을 원자적으로 수행.

3. Firebase Cloud Functions

난이도: ★★★★☆
Unity 
SDK 패키지 명 : FirebaseFunctions

기능 설명 : 서버리스 환경에서 Node.js 기반으로 비즈니스 로직을 실행할 수 있다. 트리거를 사용하여 데이터베이스 변경, 인증 이벤트, 파일 업로드 등의 이벤트에 반응할 수 있다.

주요 기법

  • HTTP Triggers: API 엔드포인트를 구현하여 클라이언트에서 직접 호출.
  • Background Triggers: 데이터베이스, 인증, 스토리지 이벤트를 감지하여 비즈니스 로직 수행.
  • Scheduled Functions: 일정 시간마다 실행되는 함수를 설정해 주기적인 작업 수행 (예: 데이터 백업).
  • Firebase Admin SDK: Cloud Functions 내에서 Firebase의 다른 서비스(예: Authentication, Firestore)와 상호작용.

4. Firebase Cloud Messaging (FCM)

난이도: ★★★☆☆
Unity SDK 패키지 명 : FirebaseMessaging

기능 설명 : 안드로이드, iOS, 웹 애플리케이션에 푸시 알림을 보내는 기능을 제공한다. 기기나 사용자 그룹을 타겟으로 메시지를 전송할 수 있다.

주요 기법

  • Topic Messaging: 사용자 그룹을 주제로 묶어 해당 주제에 대한 알림을 일괄 전송.
  • Device Group Messaging: 한 사용자에 대해 여러 기기를 묶어서 알림 전송.
  • Notification Priority: 중요도에 따라 푸시 알림 우선순위 설정(예: 긴급 알림 vs 저전력 모드용 알림).
  • Data-Only Messages: 데이터 페이로드만을 보내 앱에서 직접 처리하는 방식.

5. Firebase Storage

난이도: ★★☆☆☆
Unity
SDK 패키지 명 : FirebaseStorage

기능 설명 : 대용량의 파일(이미지, 동영상 등)을 저장하고 관리할 수 있는 공간이다. 사용자 컨텐츠도 저장 및 관리가 가능하지만, 이와 관련된 보안 규칙 설정이 권장된다.

주요 기법

  • Security Rules: 특정 사용자만 파일을 업로드하거나 읽을 수 있도록 규칙을 설정.
  • Signed URLs: 임시적으로 유효한 URL을 생성해 외부에서 안전하게 파일 접근.
  • File Compression & Resizing: 이미지를 업로드하기 전에 클라이언트에서 압축하거나, 서버에서 크기를 조정하는 전략.
  • Metadata Management: 업로드한 파일의 메타데이터를 활용하여 파일 관리 및 사용자 정의 메타데이터 설정.

6. Crashlytics

난이도: ★★☆☆☆
Unity
SDK 패키지 명 : FirebaseCrashlytics

기능 설명 : 앱에서 발생하는 크래시를 실시간으로 모니터링하고 이를 바탕으로 이슈를 해결할 수 있도록 도와주는 서비스다.

주요 기법

  • Custom Keys: 크래시 발생 시 특정 데이터를 로깅하여 문제의 원인을 정확하게 추적.
  • Custom Logging: 앱 실행 중 중요한 이벤트를 기록하여 크래시 분석 시 함께 제공.
  • On-Demand Reports: 특정 사용자나 기기에서 발생하는 크래시만을 집중 분석.
  • Real-Time Alerts: 새로 발생한 크래시나 심각한 문제에 대해 실시간 알림을 받음.

7. Firebase Analytics

난이도: ★★★★☆
Unity
SDK 패키지 명 : FirebaseAnalytics

기능 설명 : 앱에서 사용자 활동을 추적하여 행동 패턴을 분석할 수 있다. 사용자 세그먼트 별로 데이터를 나누어 볼 수 있으며, 이를 기반으로 앱 개선방향을 도출할 수 있다.

주요 기법

  • Custom Events: 기본 제공 이벤트 외에 사용자 맞춤 이벤트를 추가하여 특정 사용자 행동 추적.
  • User Properties: 사용자 속성(예: 프리미엄 유저, 특정 언어 사용자 등)을 설정하고 분석.
  • Conversion Tracking: 주요 전환 목표(예: 앱 설치 후 구매 완료) 설정 및 추적.
  • Audience Segmentation: 특정 사용자 그룹을 정의하여 해당 그룹의 행동을 분석.

마무리

최근에 같은 부트캠프를 졸업한 동기들과 함께 새로운 미니 프로젝트 제작에 돌입했다. 거기에 Firebase를 두 번째로 적용해볼 예정이다. 이전에도 사용해본 적은 있지만, Analytics 기능만을 이용해서 사용자 데이터 수집 및 이탈지점 확인이 당시 했던 전부이기 때문에 오늘 설명한 다른 유용한 기능들을 이번에는 적용할 예정이다.