Firebase๋ก ๋น๊ทผ๋ง์ผ์ ์ด๋ ์ ๋ ๊ตฌํํ ์ ํ๋ธ ์ฑ๋(์ฝ๋ฉ์ ํ)์ ๋ฐ๊ฒฌํ๋ค๐ ๋๋ถ์ ์ด๋ฐ์ ํด๋ก ์ฝ๋ฉ์ผ๋ก ์งํํ๋ฉฐ, ํ์ ๋ง๋ค์ด ๋ณด๋ ค๊ณ ํ๋ค. ์์ธํ ์ฝ๋๋ ํด๋น ์ฑ๋์์ ๋ชจ๋ ๊ฒ์ํ๊ณ ์์ผ๋ฏ๋ก ํ์ํ๋ค๋ฉด ์ฑ๋๋ก ๋ฐฉ๋ฌธํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. ํ๋ฉด ๊ตฌ์ฑ์ ํ์ํ node.js์ vscode ์๋ํฐ๋ ๋ฏธ๋ฆฌ ์ค์น๋์ด์๋ค๋ ๊ฐ์ ํ์ ํฌ์คํ ํ์๋ค.
1) Firebase console ์ ์
Google์ firebase console ๊ฒ์ํด์ ๋ค์ด๊ฐ ๋ค ํ๋ก์ ํธ ์ถ๊ฐ ํด์ค๋ค. Google ๊ณ์ ์ด ์์ด์ผํ๋ ํน์๋ผ๋ ๊ฐ์ ํ์ง ์์ ์ฌ๋๋ค์ ๊ฐ์ ์ ํด์ผ ํ๋ค.
2) Firebase console์์ ํ์ํ ๊ธฐ๋ฅ์ถ๊ฐ
์ดํ ํ์ํ ๊ธฐ๋ฅ๋ค์ [์์ํ๊ธฐ] ๋ฒํผ์ ๋๋ฌ ์ฌ์ฉํ ์ ์๋๋ก ์ถ๊ฐํด์ฃผ๋ฉด ์ค๋น๊ฐ ๋์ด๋ค.
๐ Firestore Database : ๋ฐ์ดํฐ๋ฒ ์ด์ค
Cloud Firestore ์์น๋ asia-northeast3(์์ธ)๋ก ์ค์ ํ๋ฉด ๋๋ค. ์์น๊ฐ ๊ฐ๊น์ธ์๋ก ์๋๊ฐ ๋น ๋ฅด๋ ๋ฏธ๊ตญ์ด๋ ํด์ธ ์ฃผ์๋ฅผ ์ฌ์ฉํด๋ ๋์ง๋ง ์๋๋ ์ฑ ์์ ธ์ฃผ์ง ์๋๋ค.
๐ Authentication : ํ์์ธ์ฆ/๋ก๊ทธ์ธ ๊ธฐ๋ฅ
๐ Storage : ์ฌ์ง ์ ์ฅ
๐ Hosting : ํธ์คํ
์ฒ์๋ถํฐ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ํ์๋ ์๊ธฐ ๋๋ฌธ์ ์ฐ์ ํ์ํ ๋ถ๋ถ๋ง ๋จผ์ ์ถ๊ฐํด ๋ณด์๋ค. ์ด ๋ฐ์๋ ๊ฐ์ธ์ ์ผ๋ก ๊ตฌํํ๊ณ ์ถ์ ๊ธฐ๋ฅ์ด ์๋ค๋ฉด ์ถ๊ฐํ์ฌ ์ด์ฉํ๋ฉด ๋๋ค. ์ด๋ ๊ฒ Backend ๊ตฌ์ฑ์ ๋์ด๋ค(?) ์๋ฐ๋ C์ธ์ด๋ก ํ๋ค๊ฒ ๋ง๋ค์๋ ๊ฒ์ ๋นํด ๋๋ฌด ํ๋ฌดํ๊ฒ ๋ชจ๋ ๊ฒ์ ํด์ฃผ๋ Firebase๋ ์ฐธ ์ข์ ์น๊ตฌ ๊ฐ๋ค.
ํ๋ก์ ํธ ๊ฐ์ ํญ์ผ๋ก ์ด๋ํ๋ฉด ์ง๊ธ๊น์ง ์ค์ ํ ๋ถ๋ถ์ ๋ณด์ฌ์ค๋ค. ์ด๋ ๊ฒ ์ค์ ํ๋ค๋ฉด Backend ๊ตฌ์ฑ์ด ์๋ ๊ฒ์ด๋ค. ๋ค์์ VS code๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ firebase๋ฅผ ์ ์ฉํด๋ณผ ๊ฒ์ด๋ค.
3) Firebase SDK ์ค์น
[ํ๋ก์ ํธ ๊ฐ์] > [ํ๋ก์ ํธ ์ค์ ] ์ ๋ค์ด๊ฐ ํ๋ก์ ํธ ํ๋ซํผ์ ์ ํํด์ค๋ค.
์น์ฑ์ ์ ํํด ๋ง๋ค์ด์ฃผ๋ฉด, ๋๋ค์๊ณผ SDK๊ตฌ์ฑ์ด ๋์จ๋ค. ๊ทธ๋๋ก ๋ณต์ฌํด ์๋์์ ์์ฑํ ํ๋ก์ ํธ index.html์ ๋ถ์ฌ๋ฃ์ด์ฃผ๋ฉด ๋์ด๋ค.
4) Vscode์์ Firebase ์ค์น
vscode์์ firebase๋ฅผ ์ค์นํด์ฃผ๋๋ก ํ๋ค. ํน์๋ผ๋ node.js๋ฅผ ์ค์นํ์ง ์์๋ค๋ฉด ์ง๊ธ node.js๋ฅผ ์ค์นํด๋ ๊ด์ฐฎ๋ค. node.js์ ๋ฒ์ ์ด ์ต์ ๋ฒ์ ์ด ์๋๊ฒฝ์ฐ ๊ฐํน ์ ์ ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ ์ต์ ๋ฒ์ ์ ์ค์นํด์ฃผ๋๋ก ํ๋ค.
ํฐ๋ฏธ๋์ ์ด๊ณ ๋ณธ๊ฒฉ์ ์ผ๋ก firebase๋ฅผ ์ค์นํด์ค๋ค.
npm intall -g firebase-tools@9.12.1
5) Firebase ๊ณ์ ๋ก๊ทธ์ธ
์ค์น๊ฐ ์๋ฃ ๋ ํ firebase์ ๋ก๊ทธ์ธ ํด์ฃผ์ด ์์์ ์์ฑํ ์ ๋ณด๋ฅผ ์ฐ๊ฒฐํ๋ค.
firebase login
6) Firebase ์ด๊ธฐํ
firebase๋ฅผ ์ด๊ธฐํํ๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๊ณ ์คํ์ด์ค๋ฐ + ๋ฐฉํฅํค๋ก ๋ฉ๋ด๋ฅผ ์กฐ์ํ๋ฉฐ ์ง๋ฌธ์ ๋ต์ ์ฒดํฌํ์ฌ init ํด์ค๋ค. ์ด๋ firebase console์์ ๋ง๋ ํ๋ก์ ํธ๊ฐ ๋์์ผ ์ ์์ด๋ค. ํ์์๋ ์ง๋ฌธ์ ๋ชจ๋ Enterํ์ฌ ๋๊ฒจ์ฃผ๋ฉด ๋๋ค.
firebase init
๋ชจ๋ ๊ณผ์ ์ ํตํด init์ด ์ข ๋ฃ๋๋ฉด Firebase์ ์ค์น๋ ํ๋ก์ ํธ ์์ฑ์ด ๋๋๋ฉฐ ์ผ์ชฝ ํ์์ฐฝ์ ์๋์ผ๋ก ํ๋ก์ ํธ๊ฐ ๋ง๋ค์ด์ง ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋์ผ๋ก..ํ๋ก์ ํธ ์์ฑ์ด ๋ ํ index.html์ ์ฐพ์ ์์์ ์ค๋ช ํ 3) ๊ณผ์ SDK๋ฅผ ํ์ธํ๊ณ ํ๋ก์ ํธ ์ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ์ ๋ง ๋์ด๋ค.
<script src="/__/firebase/8.6.5/firebase-auth.js"></script>
<script src="/__/firebase/8.6.5/firebase-firestore.js"></script>
<script src="/__/firebase/8.6.5/firebase-storage.js"></script>
๋จผ์ 2)์์ ์ถ๊ฐํ ๊ธฐ๋ฅ์ ๋ง๋ SDK๋ฅผ <script>ํ๊ทธ์ ์กด์ฌํ๋ ์ง ํ์ธํ๊ณ ํ์ํ ๊ฒ ์ธ์๋ ๋ชจ๋ ์ง์์ค๋ค. ๋๋ ์ธํฐ๋ท์ ๋น๊ต์ ๊ฒฐ๊ณผ๊ฐ ๋ง์ firebase 8.X๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ์์ ์กฐ์ ํด์ฃผ์๋ค. ๋ง์ง๋ง์ผ๋ก ํ๋ก์ ํธ ์ค์ ์ฝ๋๋ฅผ script์ ์ถ๊ฐํด์ค๋ค.
<script>
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "",
authDomain: "",
projectId: "",
storageBucket: "",
messagingSenderId: "",
appId: ""
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
</script>
๋ชจ๋ Backend ๊ตฌ์ฑ์ด ๋๋ฌ๋ค. ์ด์ ๋ถํฐ Front์ ํ๋ฉด์ ์์ฑํ์ฌ ๋ณธ๊ฒฉ ๊ธฐ๋ฅ์ ๋ถ์ฌ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ๋ค :)