๐ฅ Firebase ํธ์คํ ์ผ๋ก ์น์ฌ์ดํธ ๋ฐฐํฌ
๋ฐฐํฌ๋ฅผ ์ํ ๋ น์ ํ์๋ฑ
๐ ์ผ์ผ์ด์ค ์ฌ์ดํธ, ํฌํธํด๋ฆฌ์ค ๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๊ณ์์ด ๊ฐ๋ฐ์์ ๋ง์ง๋ง ๋จ๊ณ๋ ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฉํ ์ ์๋ ์ธํฐ๋ท ์ฃผ์์์ ํ๋ก๋์ ์ ์ ์ฉํ๋ ๊ฒ์ ๋๋ค.
๐ฅ ์ค๋์ ํธ์คํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ดํธ๋ฅผ ๋น ๋ฅด๊ณ ๋ฌด๋ฃ๋ก ๋ฐฐํฌํ ์ ์๋ Firebase๋ฅผ ์ ๊ณตํฉ๋๋ค.
๐ธ Firebase๋ pay-as-you-go ๋๊ตฌ์ด๋ฏ๋ก ์ฌ์ฉํ ๋งํผ ์๋นํฉ๋๋ค. ํธ์คํ ์ ๊ฒฝ์ฐ ๋ฌด๋ฃ์ ๊ณต(์ ์ฉ์นด๋ ์ ๋ ฅ ๋ถ๊ฐ)์ผ๋ก 10GB์ ์ ์ฅ๊ณต๊ฐ๊ณผ ํ๋ฃจ 360MB์ ์ ์ก์ ํ์ฉํ ์ ์๋ค. ๋๋ฉ์ธ ์ด๋ฆ๊ณผ SSL์ด ํฌํจ๋ ๋งํฌ๋ ์ ์์ ํฌํจ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ๋๋ฉ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ๋๋ฉ์ธ ์ด๋ฆ์ด ์์ด์ผ ํฉ๋๋ค!
๋ฐฐํฌ๋ฅผ ์์ํ๋ ค๋ฉด
npm
๋ฐ firebase-tools CLI๊ฐ ์์ด์ผ ํฉ๋๋ค.npm install -g firebase-tools
ํ๋ก์ ํธ ๊ตฌ์ฑ์ ๋ฐ๋ผ ์ค์น ์ ์ฐจ๊ฐ ๋ค๋ฆ ๋๋ค. ๋ ์๋ฒฝํ๊ฒ ํ๋ ค๋ฉด ๊ณต์ ๋ฌธ์๋ฅผ ๋ฐ๋ฅด์๊ธฐ ๋ฐ๋๋๋ค.
๐ช CLI๊ฐ ์ค์น๋๋ฉด
firebase login
๋ก Firebase ๊ณ์ ์ ์ฐ๊ฒฐํ ๋ค์ ํ๋ก์ ํธ ํด๋์์ firebase init
๋ฅผ ์คํํ์ฌ ์๋ฆ๋ค์ด Firebase CLI๋ฅผ ๊ฐ์ํ์ธ์.๊ธฐ์กด Firebase ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ CLI์์ ๋ง๋ค ์ ์์ต๋๋ค.
Example of firebase init command
โ ๊ณต์ฉ ํด๋์ ์ด๋ฏธ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ CLI์์ ๋๋ ํฐ๋ฆฌ ์ฌ์ ์๋ฅผ ์์ฒญํ ๋ ์๋ต
N
ํด์ผ ํฉ๋๋ค.์๋ฃ๋๋ฉด Firebase ํ๋ก์ ํธ ๊ตฌ์ฑ์ธ ํ๋ก์ ํธ์ ์ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค(์ปค๋ฐํด์ผ ํจ).
File tree after create project
โฌ๏ธ ๋ง์ง๋ง์ผ๋ก
firebase deploy
Firebase deploy command with CLI
Overview of the website just deployed
Et voilร , ๊ทํ์ ์ฌ์ดํธ๊ฐ ๋ฐฐํฌ๋์์ต๋๋ค!
๋๋ฉ์ธ ์ด๋ฆ์ ๊ธฐ๋ก ๋๋ ๊ตฌ์ฑ๊ณผ ๊ฐ์ ์ ๋ณด๋ Firebase ํ๋ก์ ํธ ํ์ด์ง์์ ์ฐพ์ ์ ์์ต๋๋ค.
History of versions deployed on Firebase
๋ถ๋ง ๋ณธ๋ค
๐ค ์ personal website ๋ฅผ ๋ฐฐํฌํ ํ ์ด ๊ธ์ ์์ฑํ๊ฒ ๋์๋๋ฐ, 6๊ฐ์์ ํ ๋ฒ์ฉ ์์ ํ๋ ์ฌ์ดํธ๋ผ ์ ๋ฐ์ดํธ ๋ช ๋ น์ด๋ฅผ ์ฐพ๊ธฐ๊ฐ ํญ์ ์ด๋ ต์ต๋๋ค.
๐ ํ์คํ ์ ์๊ฒ ์ค์ จ๊ตฐ์. ์ด์ ๋ชฉํ๋ CI/CD ํ๋ก์ธ์ค์์
firebase deploy
๋ฅผ ์๋ํํ์ฌ ๋ ์ด์ ๋ฐฐํฌ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์๊ณ ์คํ๋ง ๋ณผ ์ ์๋๋ก ํ๋ ๊ฒ์
๋๋ค(์, ์ ๋ํ ๋งํฌ๊ฐ ์์ต๋๋ค. ์น์
์ ์ ๋ชฉ).์ด๊ธฐํ ์ค์ CLI๊ฐ ์๋ ๋น๋ ๊ตฌ์ฑ์ ์ ์ํ๋ฉด
Y
๋ก ์๋ตํด์ผ ํฉ๋๋ค.์ฝ๊ฐ์ ์ต์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค
firebase init hosting:github
.๐คซ CLI๋ Github Secrets ๋ฐ .yaml ํ์ผ์ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
๋๋ ์์ฑ๋ ํ์ผ๊ณผ ๋งค์ฐ ์ ์ฌํ์ง๋ง ๋ง์คํฐ ๋ธ๋์น์ ๊ฐ ํธ์์์ ํธ๋ฆฌ๊ฑฐ๋๊ณ "ํ๋ก๋์ "์ ๋ฐฐํฌ๋๋ yaml ํ์ผ์ ์ ์ํฉ๋๋ค(๋ง์ง๋ง์ผ๋ก ๊ฐ์ธ ํ๋ก์ ํธ ๋๋ POC๋ฅผ ์ํ ์๋ฒฝํ ๊ตฌ์ฑ์ ๋๋ค).
โ ๏ธ ๋ด ํ๋ก์ ํธ๊ฐ VueJS์ ์์๊ธฐ ๋๋ฌธ์ ๋น๋ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ํ์์ ๋ฐ๋ผ ๋ผ์ธ
npm install && npm run build
์ ์กฐ์ ํ ์ ์์ต๋๋ค.name: Deploy to Firebase Hosting on push
on:
push:
branches: [master]
jobs:
build_and_live:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: โฌ๏ธ Install dependencies and build
run: npm install && npm run build
- name: ๐ฅ Deploy to Firebase Hosting
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: "${{ secrets.GITHUB_TOKEN }}"
firebaseServiceAccount: "${{ secrets.FIREBASE_SERVICE_ACCOUNT_project }}"
projectId: projectId
channelId: "live"
โ ๏ธ ๋ง์ง๋ง์
projectId
๋ฅผ ์์ ํ๊ณ service_account
๋ ์์ ํด์ผ ํฉ๋๋ค. ๐โก๏ธ ์ด์ ํธ์ํ ๋๋ง๋ค Github ์์ ์ด ์์๋๊ณ Firebase์์ ๋น๋๊ฐ ๋ฐ์ํฉ๋๋ค.
Github Actions
History of versions deployed on Firebase
๐ ์์ธํ ๋ด์ฉ์ Firebase ํธ์คํ documentation์ด ์ ๋ง ํจ๊ณผ์ ์ ๋๋ค!
๊ทธ๋ฆฌ๊ณ ์ง๊ธ ? ๋จ์ ๊ฒ์ ๋๊ตฌ์ ์ฑ๋ฅ์ ํ ์คํธํ๋ ๊ฒ๋ฟ์ ๋๋ค. ์๋ง๋ ๋ค์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ๊ฒ์ ๋๊น?
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ฅ Firebase ํธ์คํ ์ผ๋ก ์น์ฌ์ดํธ ๋ฐฐํฌ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/aymericlefeyer/deploy-a-website-with-firebase-4h77ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค