78. Serverless - firebase functions
FCM으로 푸시 알림을 보내기 위해서는 서버에서 보내야 합니다. 우리는 별도의 서버 환경을 구축하는 대신 Backend 코드를 실행할 수 있는 Serverless 서비스인 firebase functions를 사용하여 푸시 알림을 전송하는 기능을 구현합니다.
ChatGPT에게 물었습니다.
Please explain firebase functions.
firebase functions에 대해 설명해 줘.
Firebase Functions, also known as Cloud Functions for Firebase, is a serverless framework that allows you to run backend code in response to events triggered by Firebase features or HTTPS requests. It enables you to extend Firebase services and build complex functionalities without managing your own servers.
Firebase용 Cloud Functions라고도 알려진 Firebase Functions는 Firebase 기능 또는 HTTPS 요청에 의해 트리거된 이벤트에 대한 응답으로 백엔드 코드를 실행할 수 있는 서버리스 프레임워크입니다. 자체 서버를 관리하지 않고도 Firebase 서비스를 확장하고 복잡한 기능을 구축할 수 있습니다.
Key Features of Firebase Functions:
Firebase 함수의 주요 기능:
1. Serverless Environment: 서버리스 환경:
- Firebase Functions provides a fully managed, serverless environment where you can write and deploy your backend code without worrying about server management, scaling, or infrastructure.
Firebase Functions는 서버 관리, 확장 또는 인프라에 대한 걱정 없이 백엔드 코드를 작성하고 배포할 수 있는 완전 관리형 서버리스 환경을 제공합니다.
2. Event-Driven: 이벤트 중심:
Firebase Functions can be triggered by various types of events:
Firebase 함수는 다양한 유형의 이벤트에 의해 트리거될 수 있습니다.
- Firebase Authentication: Run code in response to user creation, deletion, etc.
Firebase 인증: 사용자 생성, 삭제 등에 대한 응답으로 코드를 실행합니다. - Firestore: Trigger functions when documents are created, updated, or deleted.
Firestore: 문서가 생성, 업데이트, 삭제될 때 기능을 트리거합니다. - Realtime Database: Run code in response to changes in the database.
실시간 데이터베이스: 데이터베이스 변경에 응답하여 코드를 실행합니다. - Firebase Storage: Trigger functions when files are uploaded, deleted, etc.
Firebase 저장소: 파일 업로드, 삭제 등의 경우 기능을 트리거합니다. - Firebase Analytics: Respond to conversion events.
Firebase Analytics: 전환 이벤트에 응답합니다. - HTTP Requests: Create RESTful endpoints by responding to HTTP requests.
HTTP 요청: HTTP 요청에 응답하여 RESTful 엔드포인트를 생성합니다. - Pub/Sub: Run code in response to messages published to Cloud Pub/Sub topics.
Pub/Sub: Cloud Pub/Sub 주제에 게시된 메시지에 대한 응답으로 코드를 실행합니다.
3. Automatic Scaling: 자동 확장:
- Firebase Functions automatically scales up the resources required to handle incoming requests and scales down when demand decreases, making it cost-effective and efficient.
Firebase Functions는 들어오는 요청을 처리하는 데 필요한 리소스를 자동으로 확장하고 수요가 감소하면 축소하여 비용 효과적이고 효율적입니다.
4. Integrated with Firebase and Google Cloud: Firebase 및 Google Cloud와 통합:
- Firebase Functions integrates seamlessly with other Firebase products, such as Firestore, Realtime Database, Authentication, and Storage. It also works with Google Cloud services like Pub/Sub, BigQuery, and Cloud Storage.
Firebase Functions는 Firestore, 실시간 데이터베이스, 인증, 저장소 등 다른 Firebase 제품과 원활하게 통합됩니다. Pub/Sub, BigQuery, Cloud Storage와 같은 Google Cloud 서비스에서도 작동합니다.
Common Use Cases:
일반적인 사용 사례:
1. Backend Logic: 백엔드 로직:
Perform operations like user data processing, data validation, or background tasks that should be executed on the server rather than on the client.
사용자 데이터 처리, 데이터 검증 또는 클라이언트에서 실행되는 것보다 서버에서 실행되어야 하는 백그라운드 작업 수행.
2. Realtime Database/Firestore Triggers: Realtime Database/Firestore 트리거:
Automate tasks such as sending notifications when new data is added, updating related data across collections, or sanitizing inputs.
새 데이터가 추가될 때 알림을 보내거나, 컬렉션 간의 관련 데이터를 업데이트하거나, 입력을 정리하는 등의 작업 자동화.
3. Sending Notifications: 알림 전송
Automatically send push notifications to users based on certain triggers, such as when a new message is received or a specific event occurs in your app.
새 메시지를 받거나 앱에서 특정 이벤트가 발생했을 때 사용자의 기기에 푸시 알림을 자동으로 전송.
4. HTTPS Endpoints: HTTPS 엔드포인트
Create custom API endpoints to handle requests from your app or other services, such as processing form submissions, handling payments, or interacting with third-party APIs.
폼 제출 처리, 결제 처리 또는 타사 API와 상호작용하는 API 엔드포인트 생성.
5. Webhook Handling: Webhook 처리:
Receive and process webhooks from other services, like Stripe or GitHub, without the need for a dedicated server.
전용 서버 없이 Stripe 또는 GitHub과 같은 다른 서비스에서 웹훅을 수신 및 처리.
6. Data Synchronization: 데이터 동기화:
Keep your data in sync across different databases or services by automatically triggering functions when changes occur.
변경 사항이 발생할 때 자동으로 함수를 트리거하여 다른 데이터베이스 또는 서비스 간에 데이터를 동기화.
Example of Firebase Function: Firebase Function의 예시:
Here’s a simple example of an HTTP-triggered Firebase Function:
다음은 HTTP로 트리거되는 간단한 Firebase Function의 예입니다:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.helloWorld = functions.https.onRequest((req, res) => {
res.send('Hello from Firebase Functions!');
});
This function responds with "Hello from Firebase Functions!" when accessed via an HTTP request.
이 함수는 HTTP 요청으로 접근할 때 "Hello from Firebase Functions!"이라는 응답을 반환합니다.
How to Deploy: 배포 방법:
- Write Your Function: Code your function in the index.js file within the functions directory.
함수 작성: functions 디렉토리 내의 index.js 파일에 함수를 작성합니다. - Deploy: Use the Firebase CLI to deploy your function to Firebase.
배포: Firebase CLI를 사용하여 함수를 Firebase에 배포합니다.
firebase deploy --only functions
Monitoring and Debugging: 모니터링 및 디버깅:
- Firebase Console: Use the Firebase Console to monitor the logs, performance, and usage of your functions.
Firebase 콘솔: Firebase 콘솔을 사용하여 함수의 로그, 성능 및 사용량을 모니터링합니다. - Cloud Logging: View detailed logs for debugging and performance monitoring.
Cloud Logging: 디버깅 및 성능 모니터링을 위한 자세한 로그를 확인합니다.
Summary: 요약:
Firebase Functions allows you to run custom backend logic in response to Firebase events, HTTP requests, or other triggers. It’s a powerful, scalable, and easy-to-use solution for building complex backend features without managing any servers.
Firebase Functions는 Firebase 이벤트, HTTP 요청 또는 기타 트리거에 응답하여 맞춤형 백엔드 로직을 실행할 수 있게 해줍니다. 이는 서버를 관리하지 않고도 복잡한 백엔드 기능을 구축할 수 있는 강력하고 확장 가능하며 사용하기 쉬운 솔루션입니다.
'PWA' 카테고리의 다른 글
ChatGPT와 FCM 개발 - sendMulticast (0) | 2024.09.23 |
---|---|
ChatGPT와 FCM 개발 - Firebase Functions (2) | 2024.09.20 |
ChatGPT와 FCM 개발 - 구독자 정보 저장 (2) | 2024.09.19 |
ChatGPT와 FCM 개발 - Subscription 구현 (0) | 2024.09.19 |
ChatGPT와 FCM 개발 - Subscription (1) | 2024.09.17 |