[Android] ๐ฅ Firebase ํ๋ก์ ํธ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ ๊ฐ์ด๋
Last Updated: 2026๋ 10์ 31์ผ
Firebase ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฌด๋ฃ ์ ๊ณต๋์ ์๋์ ๊ฐ๋ค. ๋ชจ์ ์ฑ ํน์ฑ์ ์ผ์์ ์ธ ์ง์ถ, ์ผ์ , ๊ฒ์ํ, ํฌํ ๋ฑ๋ก์ ํ๋ฃจ์ ์์ญ~์๋ฐฑ๊ฑด์ด๋ผ์ ๋ฌด๋ฃ ํ๋์ 1~5%๋ ์ฑ์ฐ๊ธฐ ์ด๋ ต๋ค. ๊ณ ๋ก ์ถฉ๋ถํ ์ฌ์ฉ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํ๋ค.
์ ์ฅ ์ฉ๋ : 1GB, ๋ฌธ์ ์ฐ๊ธฐ : 20K/day, ๋ฌธ์ ์ฝ๊ธฐ : 50K/day, ๋ฌธ์ ์ญ์ : 20K/day, ๋คํธ์ํฌ : 10GB/month
1๋จ๊ณ: Firebase ์ฝ์ ํ๋ก์ ํธ ์์ฑ ๋ฐ ์ค์
- Firebase ์ฝ์์ ์ ์ํ์ฌ ๋ก๊ทธ์ธํฉ๋๋ค.
- [ํ๋ก์ ํธ ์ถ๊ฐ]๋ฅผ ํด๋ฆญํ๊ณ ํ๋ก์ ํธ ์ด๋ฆ(์:
TguBio90)์ ์ ๋ ฅํฉ๋๋ค. - ๊ตฌ๊ธ ์ ๋๋ฆฌํฑ์ค ์ค์ ์ ํ์์ ๋ฐ๋ผ ์ผ๊ฑฐ๋ ๋ ๋ค [ํ๋ก์ ํธ ๋ง๋ค๊ธฐ]๋ฅผ ์๋ฃํฉ๋๋ค.
- ํ๋ก์ ํธ ๋์๋ณด๋์์ [Android ์์ด์ฝ]์ ๋๋ฌ ์๋๋ก์ด๋ ์ฑ์ ๋ฑ๋กํฉ๋๋ค.
- ํจํค์ง ์ด๋ฆ: ์๋๋ก์ด๋ ์คํ๋์ค ํ๋ก์ ํธ์
build.gradle.kts์ ์๋applicationId์ ์ ํํ ์ผ์น์์ผ์ผ ํฉ๋๋ค (์:com.example.tgubio90). google-services.jsonํ์ผ์ ๋ค์ด๋ก๋ํ์ฌ ํ๋ก์ ํธ์app/ํด๋ ํ๋จ์ ๋ฐฐ์นํฉ๋๋ค.
- ํจํค์ง ์ด๋ฆ: ์๋๋ก์ด๋ ์คํ๋์ค ํ๋ก์ ํธ์
2๋จ๊ณ: ์ธ์ฆ(Authentication) ์ค์
๋ชจ์ ํ์๋ค์ด ๋ก๊ทธ์ธํ๊ณ ์ฑ์ ์ฌ์ฉํ ์ ์๋๋ก ์ธ์ฆ ๋ฐฉ์์ ํ์ฑํํฉ๋๋ค.
- ์ผ์ชฝ ๋ฉ๋ด์์ Build > Authentication์ผ๋ก ์ด๋ํฉ๋๋ค.
- [์์ํ๊ธฐ]๋ฅผ ๋๋ฆ ๋๋ค.
- Sign-in method(๋ก๊ทธ์ธ ๋ฐฉ๋ฒ) ํญ์์ ์ฌ์ฉํ ์ธ์ฆ ๋ฐฉ์(์: Google ๋๋ ์ด๋ฉ์ผ/๋น๋ฐ๋ฒํธ)์ ์ ํํ๊ณ ์ฌ์ฉ ์ค์ (Enable)์ ์๋ฃํฉ๋๋ค.
3๋จ๊ณ: Cloud Firestore ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
- ์ผ์ชฝ ๋ฉ๋ด์์ Build > Cloud Firestore๋ก ์ด๋ํฉ๋๋ค.
- [๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง๋ค๊ธฐ]๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์น(
asia-northeast3์์ธ ์ถ์ฒ)๋ฅผ ์ ํํฉ๋๋ค. - ๋ณด์ ๊ท์น์ ์ด๊ธฐ ํ ์คํธ๋ฅผ ์ํด ํ ์คํธ ๋ชจ๋(Test mode)๋ก ์์ํ ๋ค, ๋์ค์ ์ธ์ฆ๋ ์ฌ์ฉ์๋ง ์ ๊ทผํ๋๋ก ๊ท์น์ ๊ฐํํฉ๋๋ค.
4๋จ๊ณ: Firestore ์ปฌ๋ ์ ๋ฐ ๋ฌธ์ ๊ตฌ์กฐ ์ค๊ณ (ํต์ฌ)
ํ์ฌ ์ฑ์์ ์ฌ์ฉ ์ค์ธ ๊ตฌ์กฐ๋ ๋ชจ์๋ณ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒฉ๋ฆฌํ๊ธฐ ์ํด ์ต์์์ groups ์ปฌ๋ ์
์ ๋๊ณ , ๊ทธ ์๋์ ๋ชจ์ ID(tgubio90) ๋ฌธ์๋ฅผ ๋์ด ํ์ ์ปฌ๋ ์
๋ค์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ์
๋๋ค.
Firestore Root
โโโ groups (Collection)
โโโ tgubio90 (Document - ๋ชจ์ ID)
โโโ members (Collection) : ํ์ ๋ชฉ๋ก
โโโ expenses (Collection) : ํ๋น ์ง์ถ ๋ด์ญ
โโโ schedules (Collection) : ๋ชจ์ ์ผ์ ๋ฐ ์ฐ๋ ์ ๋ณด
๐ 1. members ์ปฌ๋ ์
(ํ์ ๊ด๋ฆฌ)
ํ์๋ค์ ์ ๋ณด์ ์ญํ ์ ์ ์ฅํฉ๋๋ค.
- ๊ฒฝ๋ก:
groups/tgubio90/members/{memberId} - ์ฃผ์ ํ๋:
name(String): ํ์ ์ด๋ฆ (์: “๋ฐ์ด์ค90”)role(String): ์ง์ฑ ๋๋ ๊ถํ (์: “์ด๋ฌด”, “ํ์”)joinedDate(Number ๋๋ Timestamp): ๊ฐ์ ์ผ
๐ธ 2. expenses ์ปฌ๋ ์
(ํ๋น ์ง์ถ ๋ด์ญ)
๋ชจ์ ํ๋น ์ฌ์ฉ ๋ด์ญ๊ณผ ์ฐธ์์ ์ ๋ณด๋ฅผ ๊ธฐ๋กํฉ๋๋ค. (์ ๋ก๋ํด์ฃผ์ ์ด๋ฏธ์ง์ ๊ตฌ์กฐ ๊ธฐ๋ฐ)
- ๊ฒฝ๋ก:
groups/tgubio90/expenses/{expenseId} - ์ฃผ์ ํ๋:
amount(Number): ์ง์ถ ๊ธ์ก (์:58258)attendees(String ๋๋ Array): ์ฐธ์์ ๋ช ๋จ (์:"์ ๊ท์ ์ฒญ์,๋ฐ์ด์ค90")date(Number ๋๋ Timestamp): ์ง์ถ ๋ ์ง (1793113200000๋ฑ)description๋๋title(String): ์ง์ถ ๋ด์ญ ์ค๋ช
๐
3. schedules ์ปฌ๋ ์
(์ผ์ ๊ด๋ฆฌ ๋ฐ ์ง์ถ ์ฐ๋)
๋ชจ์ ์ผ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ฉฐ, ์ง์ถ ๋ด์ญ๊ณผ ID๋ก ์ฐ๋(Fee โ Schedule)๋๋๋ก ์ค๊ณ๋์์ต๋๋ค.
- ๊ฒฝ๋ก:
groups/tgubio90/schedules/{scheduleId} - ์ฃผ์ ํ๋:
title(String): ์ผ์ ์ ๋ชฉ (์: “์ ๊ธฐ ๋ชจ์”)date(Number ๋๋ Timestamp): ์ผ์ ๋ ์งlocation(String): ๋ชจ์ ์ฅ์
5๋จ๊ณ: ์๋๋ก์ด๋ ํ๋ก์ ํธ ์ฐ๋ ์ฒดํฌ๋ฆฌ์คํธ
build.gradle.kts (project): Google Services ํ๋ฌ๊ทธ์ธ ๋ฒ์ ์ค์ build.gradle.kts (app):- Firebase BoM(
firebase-bom) ๋ฐ Firestore, Auth ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ google-servicesํ๋ฌ๊ทธ์ธ ์ ์ฉ (id("com.google.gms.google-services"))
- Firebase BoM(
- ๋๊ธฐํ(Sync) ํ ์ฑ์ ์คํํ์ฌ Firestore์ ๋ฐ์ดํฐ๊ฐ ์ ์์ ์ผ๋ก ์ฝํ๊ณ ์ฐ์ด๋์ง ํ์ธํฉ๋๋ค.
๋๊ธ์ด ๋ซํ์ต๋๋ค.