Moon Work

Firebase Cloud Function 설정(V2 함수 사용하여 세팅하기) 본문

이해를 위한 기록들

Firebase Cloud Function 설정(V2 함수 사용하여 세팅하기)

moonkey 2025. 2. 25. 14:37

Firebase Cloud Functions

Firbase는 여러모로 참 고마운 친구입니다. 제공해주는 서비스가 1인 개발을 할 때 필요한 것들이 많아서 사용하기 좋습니다. 그 중에서도 Cloud Function은 마치 서버와 같이 특정 조건에 따라 함수를 실행시킬 수 있는 Firebase가 제공해주고 있는 서비스 입니다. 기본적으로 FireStore만 사용해도 되지만, 가끔 서버의 기능들이 구현되어야 하는 경우 곤란한데, 이때 Cloud Function을 유용하게 사용할 수 있습니다.

2세대 Cloud Functions

2세대 Cloud Functions가 나오면서 Firebase Document와 다른 블로그에서 말해주는 세팅이 달라서 헷갈렸습니다. Firebase에서도 2세대를 권장하고 있어서 관련 API 링크와 간단한 사용 예제를 소개드릴 예정입니다.

Cloud Functions(2세대)

Cloud Functions는 Firebase의 차세대 Functions-as-a-Service 제품입니다. Cloud Run 및 Eventarc를 기반으로 빌드된 Cloud Functions(2세대)는 다음을 포함하여 Cloud Functions에 향상된 인프라 및 더 넓은 이벤트 지원 범위를 지원합니다.

출처: Firebase

  • Cloud Run 기반 빌드: 함수는 Cloud Build로 빌드되고 기본 Cloud Run 실행 환경을 사용하여 Cloud Run 서비스로 배포됩니다. 이렇게 하면 Cloud Run 서비스와 마찬가지로 함수를 맞춤설정할 수 있습니다. 메모리 제한환경 변수 등 서비스 구성 옵션을 살펴보려면 Cloud Run 문서를 참고하세요.
  • 더 긴 요청 처리 시간: Cloud Storage 또는 BigQuery에서 대용량 데이터 스트림 처리와 같은 더 긴 요청 워크로드를 실행합니다.
  • 더 큰 인스턴스 크기: 인메모리가 더 크고 컴퓨팅 집약적인 병렬 워크로드를 실행합니다.
  • 향상된 동시 실행: 단일 기능 인스턴스로 여러 동시 요청을 처리하여 콜드 스타트를 최소화하고 지연 시간을 개선합니다.
  • 트래픽 관리: 여러 함수 버전 간에 트래픽을 분할하거나 함수를 이전 버전으로 롤백합니다.
  • Eventarc 통합: Eventarc 트리거에 대한 기본 지원으로 Eventarc에서 지원되는 90개 이상의 모든 이벤트 소스를 Cloud Functions로 가져옵니다.
  • 더 넓은 CloudEvents 지원: 모든 언어 런타임에서 업계 표준 CloudEvents를 지원하여 일관성 있는 개발자 환경을 제공합니다.

 

시작하기 전에

이 Cloud Function은 아쉽게도 javascript, typescript, python으로 구현이 가능합니다.

 

0. Firebase Setting(iOS)

저는 iOS 앱을 사용할 예정이라 Firebase를 앱에서 세팅해주었습니다. Cloud Function과는 관련이 없지만, 필요하신 분들은 아래 Firebase 도큐먼트와 함께 세팅하시고 진행하시면 되겠습니다.

https://firebase.google.com/docs/ios/setup?hl=ko

 

1. Firebase 설정

Firebase-빌드-Function를 선택하면 아래와 같은 화면을 확인할 수 있습니다.

 

Cloud Billing

Cloud Function을 이요하려면 프로젝트를 업그레이드해서 사용량 만큼 돈을 지불하여 사용할 수 있습니다. 전 100원 이상 비용이 나오면 이메일이 전송되도록 설정했습니다.

 

Firestore 설정

1. 예제에서 Firestore를 사용하기 위해 콘솔에서 Firestore로 이동 후 데이터베이스 만들기를 클릭합니다.

2. 데이터 베이스 위치는 서울인 asia-northeast3로 설정합니다.

3. 테스트모드에서 시작으로 선택 후, 만들기를 클릭합니다.

 

2. Functions 시작하기

위에 Billing을 설정하면 <시작하기>를 클릭해서 Function 설정을 시작할 수 있습니다.

  • npm install -g firebase-tools를 실행하기 위해서는 NodeJS가 설치되어야 합니다. 아래 사이트에서 NodeJS를 설치해줍니다.
  • npm install -g firebase-tools 가 실행되지 않는 경우 전역으로 firebase-tools를 설치해야 해서 권한 문제일 가능성이 있기 때문에, 앞에 sudo를 붙여서 sudo npm install -g firebase-tools 를 통해 설치할 수 있습니다.

https://nodejs.org/ko

 

프로젝트를 만들고 싶은 디렉토리로 이동하셔서 firebase init 커맨드를 실행합니다.

터미널에서 firebase init을 하면 위와 같이 선택을 하면서 프로젝트 설정을 할 수 있습니다.

  1. Functions로 방향키로 이동 후, space bar를 누른다음 enter를 누릅니다.
  2. Use an existing project를 선택해서 Cloud Function을 적용하길 원하는 프로젝트를 선택합니다.
  3. 언어 설정에서 원하는 언어를 선택합니다. 저는 javascrip를 선택했습니다.
  4. ESLint는 코드에 대한 규칙을 생성하여 잘못된 코드가 빌드되는 것을 방지해줍니다. 저는 y를 입력하여 설정해주었습니다.
  5. npm을 통해 의존성을 추가하겠냐는 문구에 y를 입력 후 enter를 클릭합니다.
  6. 아래와 같이 Firebase 세팅을 완료했습니다.

 

VSCode

쉬운 작성을 위해 저는 Visual Studio Code IDE를 사용해서 코드를 수정하겠습니다.

없으신 분들은 아래 링크에서 다운받으실 수 있습니다.

1. VSCode에서 File-Open Folder를 클릭 후, 생성한 폴더를 선택한 후 <열기>를 클릭합니다.

2. 아래와 같이 폴더가 구조화 되면 성공입니다.

 

예제 with Firestore

Firestore에서 특정 데이터가 CRUD 된 경우, 어떤 액션을 트리거 하고 싶은 경우가 많습니다. 아래 도큐먼트를 참고하여 특정 파일이 추가된 경우 데이터가 추가되는 예제를 진행해 보겠습니다.

1. EsLint 파일 수정

2. index.js 파일 수정

3. firebase deploy --only functions 를 해당 디렉토리에서 실행합니다. VSCode에서 실행하고 싶으신 경우, cmd + j를 통해 해당 디렉토리에서 바로 실행할 수 있습니다.

4. 위에 command 실행 이후 deploy completed! 문구가 나온다면 Firebase 콘솔-Functions에서 해당 함수가 정상적으로 올라간 것을 확인할 수 있습니다.

5. 결과 

화면 기록 2025-02-25 오후 2.31.39.mov
0.46MB

 

Functions

Firebase는 위에 코드 외에도 크래시 알림 처리, 인증, Storage 등 다양한 함수를 지원하고 있습니다. 관련해서는 아래 링크를 참고해주세요.

 

Storage

https://firebase.google.com/docs/functions/gcp-storage-events?hl=ko&_gl=1*1q4o40p*_up*MQ..*_ga*MTU3OTI1NTM4MS4xNzQwNDQ5NzQ4*_ga_CW55HF8NVT*MTc0MDQ0OTc0OC4xLjAuMTc0MDQ0OTc0OC4wLjAuMA..&gen=2nd

 

Firestore

https://firebase.google.com/docs/functions/firestore-events?hl=ko&_gl=1*1tso31g*_up*MQ..*_ga*MTU3OTI1NTM4MS4xNzQwNDQ5NzQ4*_ga_CW55HF8NVT*MTc0MDQ0OTc0OC4xLjAuMTc0MDQ0OTc0OC4wLjAuMA..&gen=2nd

 

정리

Cloud Function을 사용하기 위해서는 javascript, typescript, python에 대한 이해도가 조금 필요하지만, 러닝커브가 높지 않으니 도전해서 Cloud Function 기능을 사용해보시면 좋을 것 같습니다. 개인적으로 만드는 프로젝트에서 이번 V2 Functions을 적용한 내용도 다음에 정리해서 공유해보겠습니다 :)

잘못된 내용이나 부족한 내용을 댓글로 남겨주세요!

'이해를 위한 기록들' 카테고리의 다른 글

함수형 프로그래밍  (0) 2023.01.15
Skeleton UI 적용기  (0) 2023.01.11
드디어 정규 표현식  (0) 2022.12.22
jest 기초  (0) 2022.12.12
Typescript와 OOP SOLID 원칙  (0) 2022.11.29