๐ŸŽ‰ berenickt ๋ธ”๋กœ๊ทธ์— ์˜จ ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰
Mobile
React Native
08-Firebase

1. Firebase

  • ๊ตฌ๊ธ€์—์„œ ๋งŒ๋“ค์–ด์ง„ BAAS(Backend As A Service)
  • ๋ชจ๋ฐ”์ผ์—์„œ ํ•„์š”ํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณต
  • ์ €์žฅ์žฅ์น˜, ํ…Œ์ŠคํŒ… ํ‘ธ์‹œ ๋“ฑ ํ•„์š”ํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณต

1.1 RealTime DataBase

  • ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋Š” database
  • NoSQL์˜ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Œ
  • ์‹ค์งˆ์ ์œผ๋กœ ์ €์žฅ๋˜๋Š” ๊ฐ’์€ key์™€ value๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ JSON Object

1.2 ์ œํ•œ์‚ฌํ•ญ

  • ๋™์‹œ ์—ฐ๊ฒฐ์ˆ˜์— ๋Œ€ํ•œ ์ œํ•œ์ด ์žˆ์Œ (๋ฌด๋ฃŒ plan 100, ์œ ๋ฃŒ plan 20๋งŒ)
  • ํ•œ๋ฒˆ์— Write์€ 1MB ๋‚ด์™ธ

1.3 Storage

  • ํŒŒ์ผ ์ €์žฅ์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉ
  • ํ”„๋กœํ•„ ์‚ฌ์ง„, ์ž„์‹œ ์ €์žฅํ•˜๋Š” ํŒŒ์ผ ์ €์žฅ ๊ฐ€๋Šฅ.

1.4 Cloud Firestore

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ํ•˜๊ธฐ ์œ„ํ•œ ์ œํ’ˆ
  • ์‹ค์‹œ๊ฐ„์„ฑ, NoSQL์„ ์ง€์›ํ•œ๋‹ค๋Š” ์ ์€ Realtime database์™€ ๋น„์Šท
  • ์ €์žฅํ•˜๋Š” ๊ฐ’ : JSON ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ Collections๋ฅผ ์ €์žฅ
    • Document : Data๊ฐ€ ์ง‘ํ•ฉํ•ด์žˆ๋Š” ๋‹จ์œ„
    • Collections : Document๊ฐ€ ์ง‘ํ•ฉํ•ด์žˆ๋Š” ๋‹จ

1.5 RealTime Database vs Cloud Firestore

  • RealTime Database
    • JSON Object ์ €์žฅ
    • ์ •๋ ฌ ๋ฐ ํ•„ํ„ฐ๋ง + ์กฐ๊ฑด๋ฌธ ๋ถˆ๊ฐ€
    • ์šฉ๋Ÿ‰ ๋˜๋Š” ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๊ณผ๊ธˆ
    • ๋ฐ์ดํ„ฐ๊ฐ€ ์ž‘๊ณ  CRUD๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉด Realtime database
  • Cloud firestore
    • Document ๋‹จ์œ„๋กœ ์ €์žฅ
    • ์ •๋ ฌ ๋ฐ ํ•„ํ„ฐ๋ง + ์กฐ๊ฑด๋ฌธ ๊ฐ€๋Šฅ
    • document CRUD์— ๋”ฐ๋ผ ๊ณผ๊ธˆ
    • ํฐ๋‹จ์œ„ ๋ฐ์ดํ„ฐ ์š”์ฒญ์‹œ์—๋Š” Cloud Firestore

2. crashlytics / remote config / abtest

2.1 Crashlytics

  • ์•ฑ์ด ๊ฐ•์ œ์ข…๋ฃŒ ๋˜์—ˆ์Œ์„ ์•Œ๋ ค์ฃผ๋Š” Tool
  • ๋กœ์ง์„ ์ž˜ ์ž‘์„ฑํ•˜๋”๋ผ๋„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์—์„œ ํฌ๋ž˜์‹œ๊ฐ€ ๋‚  ์ˆ˜๋„ ์žˆ์Œ

2.2 Remote Config

  • ์›๊ฒฉ์— ์žˆ๋Š” ์ƒ์ˆ˜๊ฐ’์„ ์—…๋ฐ์ดํŠธ ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” Tool
  • ํŠน์ • ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ON/OFF ๋˜๋Š” ํŠน์ •ํ™”๋ฉด์˜ ํ…์ŠคํŠธ๋ฅผ ๋ฐ”๊ตฌ๋Š”๊ฒƒ์œผ๋กœ ํ™œ์šฉ

2.2.1 Remote Config ์ฃผ์˜์ 

  • Remote Config๊ฐ’์„ ์กฐํšŒ ์‹คํŒจํ–ˆ์„๋•Œ ๋Œ€๋น„ํ•˜์—ฌ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •
  • ์‹คํŒจ ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ด์œ ๋กœ ์ธํ•˜์—ฌ ์ตœ์‹ ๊ฐ’์„ ํ•ญ์ƒ ๋ณด์—ฌ์ฃผ์ง€๋Š” ์•Š์Œ

2.3 AB Test

  • A๊ทธ๋ฃน๊ณผ B๊ทธ๋ฃน์„ ๋‘๊ณ  ์–ด๋–ค ๊ทธ๋ฃน์ด ๋” ๋งŽ์€ ์ „ํ™˜์œจ์„ ๋ณด์ด๋Š”์ง€ ์ฒดํฌ
  • ๊ธฐ์กด ๋ฒ„์ „๊ณผ ์‹ ๊ทœ๋กœ ๋ณ€๊ฒฝ๋œ ๋ฒ„์ „์—์„œ์˜ ๋ถ„๊ธฐ
  • ๊ฐœ์„ ๋œ ๋ฒ„์ „์—์„œ์˜ ์œ ์ € ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋Š”๋‹ค๋Š” ์ด์ 
  • AB Test (์‚ฌ์ „์ž‘์—…)
    • Remote Config : config ์„ค์ •๋œ ๊ฐ’๋“ค์— ๋Œ€ํ•˜์—ฌ ๊ฐ€๋Šฅ
    • Analytics : ๋ถ„์„์„ ์œ„ํ•ด ํ•„์š”

3. React-Native-Firebase

  • Firebase๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ•˜๋„๋ก ๋งŒ๋“ค์–ด๋‘” Package
  • https://rnfirebase.io/

4. Authentication

  • Social Login
    • ์†Œ์…œ ๊ณ„์ •์„ ํ™œ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ ํ˜น์€ ํšŒ์›๊ฐ€์ž…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
    • (e.g. Google๋กœ ๋กœ๊ทธ์ธ, Github์œผ๋กœ ๋กœ๊ทธ์ธ ๋“ฑ)
  • OAuth 2.0
    • ์ธ์ฆ์„ ์œ„ํ•œ ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ
    • Third party ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ ์ œ๊ณต
  • OAuth 2.0
    • Authentication : ์ธ์ฆ ํ•˜๋Š” ๋‹จ๊ณ„
    • Authorization : ์ธ์ฆ์ด ๋๋‚œ ๋’ค Access Token์ด ๋ถ€์—ฌ๋˜๋Š”๊ฒƒ
    • Access Token : ์œ ์ €์—๊ฒŒ ๊ถŒํ•œ ๋ฐ›์•˜์Œ์„ ์ธ์ฆํ•˜๋Š” Token
    • Refresh Token : Access Token์„ Refresh ํ•˜๊ธฐ ์œ„ํ•œ Token