모바일 앱에서 open API 를 직접 호출하던 부분을 하나씩 Firebase Cloud function 으로 옮기고 있습니다.
참고로, 공공데이터 API등 OpenAPI를 이용할 때 모바일에서 API Key, Client Key 등을 이용해 직접 호출하는 것은 바람직 하지 않습니다.
OpenAPI 기능을 제공하는 회사, 공공기관은 우리가 제어할 수 없는 영역입니다. OpenAPI 에서 장애가 발생하는 경우 Risk 를 감당해야 하는 쪽은 제가 되기 때문입니다. (적지 않아요... 공공기관 API 는 트래픽이 몰리면 잘 터지고.. API Key limit 제한이 걸리기도 하고..)
이 Risk 를 감당할 수 있는 영역으로 가져오는 방법이 본인이 운영하는 서버에서 OpenAPI 를 호출하도록 하는 부분입니다.
•
외부 에러 발생시 서비스에서 감당할 수 있는 오류코드로 변환 가능
•
API key 다수 개 활용 Shuffling 하여 Call limit 우회
무튼, Firebase Cloud functiion 에 작업이 많아지면서 배포도 자주 하게 되었습니다.
firebase deploy
Bash
복사
터미널에 위 명령어만 치면 배포가 됩니다....만! 개발자는 이마저도 귀찮습니다.
어짜피 cloud function 도 Github으로 관리하는데, Github의 main 브랜치를 기준으로 하여 항상 최신의 main 브랜치로 배포하도록 설정하도록 하겠습니다.
1. Firebase Token 발급
Github Action 이 내 Firebase deploy 하기 위해서 Firebase token 을 전달해야합니다.
firebase login:ci
Bash
복사
위 명령어를 터미널에 실행합니다.
Chrome 혹은 기본 설정된 웹브라우저에서 Google 로그인창이 뜨고 로그인을 하면 Terminal 에서 Firebase Token 을 얻을 수 있습니다.
2. Github Repository 에 Secret 등록
3. Github Action Flow Setting
name: Build and Deploy
on:
push:
branches:
- main
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@main
- name: Install Dependency
run: npm install
working-directory: ./functions
- name: Deploy
uses: w9jds/firebase-action@master
with:
args: deploy --only functions
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
PROJECT_ID: mosi-ac123
YAML
복사
{Git root directory}/.github/workflows/firebase-deploy.yml