Vue로 PWA 개발

50. mylog Firebase Functions

그랜파 개발자 2024. 10. 31. 15:51

Vue로 PWA 개발 - 그랜파 개발자

 

Cloud에서 FCM을 보내기 위해 서버를 따로 관리하지 않습니다. 서버없이 Cloud에서 FCM을 보내기 위해 Firebase functions을 사용합니다.

ChatGPT에게 물었습니다.

Please explain firebase functions.

firebase functions에 대해 설명해줘.

ChatGPT

 

Firebase Functions, also known as Cloud Functions for Firebase, is a serverless backend service provided by Firebase that allows developers to write and deploy backend code without managing a server. The core idea is to write JavaScript or TypeScript code that responds to events triggered by Firebase services or HTTPS requests, which are automatically scaled by Google Cloud.

 

Firebase용 Cloud Functions라고도 알려진 Firebase Functions는 개발자가 서버를 관리하지 않고도 백엔드 코드를 작성하고 배포할 수 있도록 해주는 Firebase에서 제공하는 서버리스 백엔드 서비스입니다. 핵심 아이디어는 Google Cloud에서 자동으로 확장되는 Firebase 서비스 또는 HTTPS 요청에 의해 트리거된 이벤트에 응답하는 JavaScript 또는 TypeScript 코드를 작성하는 것입니다.

 

1. Key Concepts of Firebase Functions:

1. Firebase 기능의 주요 개념:

1. Serverless: 서버리스:

  • Firebase Functions is a serverless platform, meaning you don't need to manage any infrastructure like servers or containers. Firebase automatically scales the functions based on incoming traffic and usage.
  • Firebase Functions는 서버리스 플랫폼이므로 서버나 컨테이너와 같은 인프라를 관리할 필요가 없습니다. Firebase는 수신 트래픽 및 사용량에 따라 기능을 자동으로 확장합니다.
  • The function runs in response to events and scales from zero to handle thousands of requests, then scales back down when no requests are active.
  • 이 함수는 이벤트에 대한 응답으로 실행되며 0부터 확장하여 수천 개의 요청을 처리한 다음 활성 요청이 없으면 다시 축소됩니다.

2. Triggers:트리거:

  • Firebase Functions are event-driven. Functions can be triggered in response to events from various Firebase services such as Firestore, Firebase Authentication, Firebase Realtime Database, Firebase Cloud Messaging (FCM), or via HTTP requests.
  • Firebase 함수는 이벤트 기반입니다. Firestore, Firebase 인증, Firebase 실시간 데이터베이스, FCM(Firebase 클라우드 메시징)과 같은 다양한 Firebase 서비스의 이벤트에 대한 응답으로 또는 HTTP 요청을 통해 함수가 트리거될 수 있습니다.
  • Supported triggers: 지원되는 트리거:
  • Firestore: Trigger on database events (create, update, delete) within Firestore.
  • Firestore: Firestore 내에서 데이터베이스 이벤트(생성, 업데이트, 삭제)를 트리거합니다.
  • Realtime Database: Trigger on changes in Firebase's Realtime Database.
  • 실시간 데이터베이스: Firebase 실시간 데이터베이스의 변경 사항에 대해 트리거됩니다.
  • Firebase Auth: Trigger when users are created or deleted.
  • Firebase 인증: 사용자가 생성되거나 삭제될 때 트리거됩니다.
  • Firebase Storage: Trigger when files are uploaded or deleted in Firebase Cloud Storage.
  • Firebase 저장소: Firebase Cloud Storage에 파일이 업로드되거나 삭제될 때 트리거됩니다.
  • HTTP Trigger: Trigger the function with an HTTP request (via REST API, for example).
  • HTTP 트리거: HTTP 요청으로 함수를 트리거합니다(예: REST API를 통해).
  • Firebase Analytics: Trigger based on custom events logged by Firebase Analytics.
  • Firebase Analytics: Firebase Analytics에서 기록한 맞춤 이벤트를 기반으로 트리거됩니다.
  • Firebase Cloud Messaging (FCM): Trigger when a push notification is sent.
  • Firebase 클라우드 메시징(FCM): 푸시 알림이 전송되면 트리거됩니다.

3. Automatic Scaling: 자동 확장:

  • Firebase Functions automatically scales your code according to the current demand. If there’s a spike in traffic, Firebase will create more instances to handle the load. When there’s low or no traffic, it scales back down to zero instances to save on costs.
  • Firebase Functions는 현재 수요에 따라 코드를 자동으로 확장합니다. 트래픽이 급증하면 Firebase는 로드를 처리하기 위해 더 많은 인스턴스를 생성합니다. 트래픽이 적거나 없으면 비용을 절약하기 위해 인스턴스를 0개로 다시 축소합니다.

4. Cloud Functions Runtime: Cloud Functions 런타임:

  • Firebase Functions can be written in JavaScript or TypeScript.
  • Firebase 함수는 JavaScript 또는 TypeScript로 작성할 수 있습니다.
  • It runs on Node.js environments (version 16.x and higher).
  • Node.js 환경(버전 16.x 이상)에서 실행됩니다.

5. Integration with Firebase Services: Firebase 서비스와의 통합:

  • Firestore: Trigger functions when documents are created, updated, or deleted in Firestore.
  • Firestore: Firestore에서 문서가 생성, 업데이트, 삭제될 때 기능을 트리거합니다.
  • Firebase Authentication: Trigger functions when users sign up or delete their accounts.
  • Firebase 인증: 사용자가 계정에 가입하거나 계정을 삭제할 때 기능을 트리거합니다.
  • Firebase Realtime Database: Similar to Firestore, functions can respond to changes in the Realtime Database.
  • Firebase 실시간 데이터베이스: Firestore와 마찬가지로 함수는 실시간 데이터베이스의 변경 사항에 응답할 수 있습니다.
  • Firebase Cloud Messaging (FCM): Use functions to send push notifications to users.
  • Firebase 클라우드 메시징(FCM): 기능을 사용하여 사용자에게 푸시 알림을 보냅니다.
  • Cloud Storage: Trigger functions when a file is uploaded, modified, or deleted from Firebase Storage.
  • Cloud Storage: Firebase Storage에서 파일이 업로드, 수정, 삭제될 때 기능을 트리거합니다.

 

2. Types of Firebase Functions

2. Firebase 함수 유형

1. HTTP Triggered Functions: HTTP 트리거 기능:

  • These are functions that you can trigger via an HTTP request. It allows you to expose your Firebase Functions as RESTful APIs.
  • HTTP 요청을 통해 트리거할 수 있는 기능입니다. 이를 통해 Firebase 함수를 RESTful API로 노출할 수 있습니다.

Example of an HTTP function: HTTP 함수의 예:

const functions = require('firebase-functions');

exports.helloWorld = functions.https.onRequest((request, response) => {
  response.send("Hello from Firebase!");
});
  • This function can be called via an HTTP request and will return "Hello from Firebase!".
  • 이 함수는 HTTP 요청을 통해 호출할 수 있으며 "Hello from Firebase!"를 반환합니다.

2. Cloud Firestore Triggered Functions: Cloud Firestore에서 실행되는 함수:

  • You can trigger functions in response to changes in your Firestore database (like document creation, updates, or deletions).
  • Firestore 데이터베이스의 변경사항(예: 문서 생성, 업데이트, 삭제)에 응답하여 기능을 트리거할 수 있습니다.

Example of a Firestore trigger: Firestore 트리거의 예:

const functions = require('firebase-functions');

exports.onUserCreate = functions.firestore
  .document('users/{userId}')
  .onCreate((snapshot, context) => {
    const newUser = snapshot.data();
    console.log('New user created:', newUser);
  });
  • This function triggers whenever a new document is added to the users collection in Firestore.
  • 이 함수는 Firestore의 users 컬렉션에 새 문서가 추가될 때마다 트리거됩니다.

3. Realtime Database Triggered Functions: 실시간 데이터베이스 트리거 기능:

  • Similar to Firestore, but for the Realtime Database, you can trigger functions when data is added, changed, or deleted.
  • 이 기능은 실시간 데이터베이스의 messages 노드에 새 메시지가 추가될 때마다 트리거됩니다.

Example:

exports.newMessageNotification = functions.database
  .ref('/messages/{messageId}')
  .onCreate((snapshot, context) => {
    const message = snapshot.val();
    console.log('New message added:', message);
  });
  • This function will be triggered whenever a new message is added to the messages node in the Realtime Database.
  • 이 기능은 실시간 데이터베이스의 messages 노드에 새 메시지가 추가될 때마다 트리거됩니다.

4. Firebase Auth Triggered Functions: Firebase 인증 트리거 기능:

  • You can trigger functions when users sign up or are deleted from Firebase Authentication.
  • 사용자가 Firebase 인증에 가입하거나 삭제될 때 기능을 트리거할 수 있습니다.

Example:

exports.sendWelcomeEmail = functions.auth.user().onCreate((user) => {
  const email = user.email;
  // Code to send welcome email
  console.log(`Sending welcome email to ${email}`);
});
  • This function sends a welcome email when a new user is created.
  • 이 기능은 새로운 사용자가 생성되면 환영 이메일을 보냅니다.

5. Firebase Storage Triggered Functions: Firebase 저장소 트리거 기능:

  • Trigger functions when a file is uploaded, updated, or deleted in Firebase Cloud Storage.
  • Firebase Cloud Storage에 파일이 업로드, 업데이트, 삭제되면 기능이 트리거됩니다.

Example:

exports.onFileUpload = functions.storage
  .object()
  .onFinalize((object) => {
    console.log('File uploaded:', object.name);
  });
  • This function is triggered whenever a file is uploaded to Firebase Cloud Storage.
  • 이 함수는 Firebase Cloud Storage에 파일이 업로드될 때마다 실행됩니다.

6. Firebase Analytics Triggered Functions: Firebase Analytics 트리거 기능:

  • Trigger functions in response to Firebase Analytics events such as custom events.
  • 맞춤 이벤트와 같은 Firebase Analytics 이벤트에 대한 응답으로 트리거 기능을 수행합니다.

 

3. Cloud Functions for Firebase vs Other Backend Approaches:

3. Firebase용 Cloud Functions와 기타 백엔드 접근 방식:

1. Serverless: 서버리스:

  • Firebase Functions are serverless, meaning there's no need to manage infrastructure, handle scaling, or server maintenance.
  • Firebase Functions는 서버리스입니다. 즉, 인프라 관리, 확장 처리 또는 서버 유지 관리가 필요하지 않습니다.

2. Pay-as-you-go: 종량제:

  • You are only billed based on the actual usage (number of invocations, compute time), which can save money for applications with fluctuating or low traffic.
  • 실제 사용량(호출 수, 컴퓨팅 시간)을 기준으로만 요금이 청구되므로 트래픽이 변동하거나 적은 애플리케이션의 경우 비용을 절약할 수 있습니다.

3. Security:보안:

  • Firebase Functions have tight integration with Firebase’s authentication and security features. You can easily secure HTTP endpoints by validating Firebase ID tokens.
  • Firebase Functions는 Firebase의 인증 및 보안 기능과 긴밀하게 통합됩니다. Firebase ID 토큰을 검증하여 HTTP 엔드포인트를 쉽게 보호할 수 있습니다.

 

4. Use Cases for Firebase Functions:

4. Firebase 함수 사용 사례:

  • Background jobs: You can use Firebase Functions to run background tasks like sending notifications, generating thumbnails for uploaded images, or processing user data.
  • 백그라운드 작업: Firebase Functions를 사용하여 알림 전송, 업로드된 이미지의 썸네일 생성, 사용자 데이터 처리 등의 백그라운드 작업을 실행할 수 있습니다.
  • Triggering emails: Send automated welcome emails or password reset emails when users sign up.
  • 이메일 트리거: 사용자가 가입할 때 자동화된 환영 이메일 또는 비밀번호 재설정 이메일을 보냅니다.
  • Push notifications: Send FCM push notifications to users when they receive messages or when data changes in the Firestore database.
  • 푸시 알림: 사용자가 메시지를 받거나 Firestore 데이터베이스의 데이터가 변경되면 사용자에게 FCM 푸시 알림을 보냅니다.
  • API endpoints: Create server-side APIs to expose your app’s logic to the frontend.
  • API 엔드포인트: 서버 측 API를 생성하여 앱의 로직을 프런트엔드에 노출합니다.
  • Data validation and cleanup: Automatically validate data when it's written to Firestore or Realtime Database and perform cleanup tasks on data deletion.
  • 데이터 검증 및 정리: Firestore 또는 실시간 데이터베이스에 기록될 때 데이터를 자동으로 검증하고 데이터 삭제 시 정리 작업을 수행합니다.

 

5. Firebase Functions v2 (Newer Version):

5. Firebase 함수 v2(최신 버전)

Firebase Functions v2 has some enhancements over v1, including: Firebase Functions v2에는 다음을 포함하여 v1에 비해 몇 가지 향상된 기능이 있습니다.

  1. New features like concurrent execution to allow a single function instance to handle multiple requests. 단일 함수 인스턴스가 여러 요청을 처리할 수 있도록 하는 동시 실행과 같은 새로운 기능.
  2. New triggers for Firestore, Firebase Authentication, and Google Cloud services. Firestore, Firebase 인증, Google Cloud 서비스를 위한 새로운 트리거.
  3. Improved scaling and performance. 향상된 확장성 및 성능.

Example of Firebase Function (v2):

Firebase 기능(v2)의 예:

const { onRequest } = require('firebase-functions/v2/https');
const { onDocumentCreated } = require('firebase-functions/v2/firestore');
const admin = require('firebase-admin');
admin.initializeApp();

// HTTP Trigger
exports.helloWorld = onRequest((req, res) => {
  res.send('Hello from Firebase Cloud Functions v2!');
});

// Firestore Trigger
exports.onNewPost = onDocumentCreated('/posts/{postId}', (event) => {
  const newPost = event.data.data();
  console.log('New post added:', newPost);
});

 

Conclusion: 결론:

 

Firebase Functions provides an easy-to-use and powerful backend system for developers, allowing them to write server-side code that integrates with Firebase's other services like Firestore, Realtime Database, Auth, and Cloud Storage. It scales automatically and is event-driven, enabling you to build flexible and efficient applications.

 

Firebase Functions는 개발자에게 사용하기 쉽고 강력한 백엔드 시스템을 제공하여 개발자가 Firestore, 실시간 데이터베이스, 인증, Cloud Storage 등 Firebase의 다른 서비스와 통합되는 서버 측 코드를 작성할 수 있도록 해줍니다. 자동으로 확장되고 이벤트 기반이므로 유연하고 효율적인 애플리케이션을 구축할 수 있습니다.

'Vue로 PWA 개발' 카테고리의 다른 글

52. mylog FCM 보내기 구현  (0) 2024.11.01
51. mylog FCM 보내기  (2) 2024.11.01
49. mylog 알림 요청 개선  (3) 2024.10.31
48. mylog FCM 토큰 등록  (0) 2024.10.31
47. mylog 여러 기기에 알림  (0) 2024.10.30