[Firebase] Firebase SDK
Firebase Software Development Kit의 종류와 특징
[Firebase] Firebase SDK
Firebase란
Google에서 제공하는 백엔드 서비스 플랫폼이다. Firebase를 사용하면 개발자는 서버를 직접 구축하지 않아도, 앱의 핵심 기능을 빠르게 개발하고 배포할 수 있다.
✏️ Firebase SDK
Firebase SDK는 Firebase 서비스와 앱을 연결하여 다양한 기능을 쉽게 구현할 수 있도록 돕는 Software Development Kit(SDK)이다.
- Admin SDK와 Client SDK가 존재한다.
- Admin SDK는 백엔드에서 Firebase 서비스를 관리하는 도구이다.
- Client SDK는 프론트엔드에서 Firebase 서비를 관리하는 도구이다.
■ Firebase Admin SDK
특징
- 권한 제어:
- Admin SDK는 Firebase 프로젝트에 대해 관리자 권한을 갖는다.
- 인증 없이 모든 Firestore 데이터, Authentication 사용자 정보, Cloud Storage 파일 등에 접근할 수 있더,
- 서버 사이드 환경 전용:
- Admin SDK는 Node.js 서버에서 실행되도록 설계되었다.
- 클라이언트 브라우저 환경에서는 사용할 수 없다.
- 서비스 계정 사용:
- Admin SDK는 Firebase 서비스 계정을 사용하여 프로젝트와 상호작용한다.
코드 예제 (Admin SDK)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import * as admin from "firebase-admin";
// Firebase Admin SDK 초기화
admin.initializeApp({
credential: admin.credential.applicationDefault(),
});
// Firestore 인스턴스
const db = admin.firestore();
// Firestore 데이터 읽기
const getDocument = async () => {
const doc = await db.collection("users").doc("user_id").get();
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
console.log("No such document!");
}
};
■ Firebase Client SDK
특징
- 권한 제어:
- Client SDK는 보안 규칙(Firebase Security Rules)을 따른다.
- 사용자의 인증 상태에 따라 접근 권한이 제한됩니다.
- 프론트엔드 환경 전용:
- 웹 브라우저, React Native, iOS, Android 같은 클라이언트 환경에서 동작하도록 설계되었다.
- 구성 및 초기화:
- Client SDK는 Firebase 프로젝트의
apiKey,authDomain등을 사용하여 설정됩니다.
- Client SDK는 Firebase 프로젝트의
코드 예제 (Client SDK)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import { initializeApp } from "firebase/app";
import { getFirestore, doc, getDoc } from "firebase/firestore";
// Firebase Client SDK 초기화
const firebaseConfig = {
apiKey: "your_api_key",
authDomain: "your_auth_domain",
projectId: "your_project_id",
};
const app = initializeApp(firebaseConfig);
// Firestore 인스턴스
const db = getFirestore(app);
// Firestore 데이터 읽기
const getDocument = async () => {
const docRef = doc(db, "users", "user_id");
const docSnap = await getDoc(docRef);
if (docSnap.exists()) {
console.log("Document data:", docSnap.data());
} else {
console.log("No such document!");
}
};
■ 주요 차이점 비교
| 특징 | Admin SDK | Client SDK |
|---|---|---|
| 권한 제어 | 모든 권한 (관리자 권한) | Firebase 보안 규칙에 의해 제한 |
| 환경 | 서버 측 (Node.js, Cloud Functions 등) | 클라이언트 측 (브라우저, 모바일 등) |
| 인증 방식 | 서비스 계정 (Service Account) | Firebase 프로젝트 설정 파일 |
| Firebase 서비스 | Firestore, Authentication, Cloud Storage, FCM 등 모든 기능 | Firestore, Authentication, Cloud Storage 등 주요 기능 |
| 보안 | 인증 없이 모든 데이터 접근 가능 | 보안 규칙에 따라 사용자 권한 제어 |
| 사용 목적 | 관리 작업 (대량 처리, 관리자 기능) | 사용자와의 직접적인 상호작용 |
| 코드 초기화 | admin.initializeApp() |
initializeApp(firebaseConfig) |
This post is licensed under
CC BY 4.0
by the author.