본문 바로가기
Flutter/Firebase

플러터에서 Firebase Cloud Functions 개발을 위한 에뮬레이터 설치 및 사용 방법 가이드

by Maccrey Coding 2024. 9. 2.
728x90
반응형

 

Firebase Cloud Functions는 서버리스 기능을 통해 클라우드에서 자동으로 실행되는 백엔드 로직을 작성할 수 있는 강력한 도구입니다. 그러나, 실제 Firebase 환경에서 Cloud Functions를 개발하고 테스트하는 것은 비용이 들고, 배포 전 모든 기능을 철저히 테스트하기 어려울 수 있습니다.

이럴 때 Firebase Cloud Functions 에뮬레이터를 활용하면 로컬 환경에서 안전하게 개발과 테스트를 진행할 수 있습니다.

이번 포스팅에서는 플러터에서 Firebase Cloud Functions 에뮬레이터를 설치하고 사용하는 방법을 단계별로 설명하겠습니다.

1. Firebase Cloud Functions 에뮬레이터란?

Firebase Cloud Functions 에뮬레이터는 Firebase Cloud Functions의 로컬 버전으로, 실제 Firebase 서버에 배포하지 않고도 로컬 환경에서 클라우드 함수를 실행하고 테스트할 수 있게 해줍니다. 이를 통해 서버리스 함수의 동작을 로컬에서 안전하게 검증할 수 있습니다.

2. Firebase Cloud Functions 에뮬레이터 설치하기

에뮬레이터를 설치하고 설정하는 과정은 다음과 같습니다.

1) Node.js 및 Firebase CLI 설치

Firebase Cloud Functions 에뮬레이터는 Node.js와 Firebase CLI를 사용하여 설치합니다. Node.js가 설치되어 있지 않다면 Node.js 공식 웹사이트에서 다운로드하여 설치하세요.

그 다음, Firebase CLI를 설치합니다. 터미널에서 다음 명령어를 입력합니다.

npm install -g firebase-tools

2) Firebase 프로젝트 초기화

Firebase 프로젝트 디렉터리로 이동한 후, Firebase CLI를 사용해 프로젝트를 초기화합니다. 터미널에서 다음 명령어를 실행합니다.

firebase init

이 명령어를 입력하면 여러 옵션을 선택할 수 있는 메뉴가 나타납니다.

'Functions'를 선택하고, 'Emulators' 항목을 선택하여 Cloud Functions 에뮬레이터를 설정합니다.

3) Firebase Cloud Functions 에뮬레이터 설정

Firebase 프로젝트 설정 파일(firebase.json)에서 Cloud Functions 에뮬레이터를 설정합니다.

파일에 다음과 같이 추가합니다.

{
  "emulators": {
    "functions": {
      "port": 5001
    }
  }
}

여기서 5001은 Cloud Functions 에뮬레이터의 기본 포트 번호입니다. 필요에 따라 다른 포트 번호를 사용할 수도 있습니다.

3. Firebase Cloud Functions 에뮬레이터 시작하기

Firebase Cloud Functions 에뮬레이터를 실행하려면, 터미널에서 다음 명령어를 입력합니다.

firebase emulators:start

이 명령어를 실행하면 Firebase Cloud Functions 에뮬레이터가 로컬 환경에서 시작됩니다. 에뮬레이터가 실행되면 설정한 포트 번호를 통해 접근할 수 있습니다.

4. 플러터에서 Firebase Cloud Functions 에뮬레이터 연결하기

에뮬레이터가 실행되고 나면, 플러터 애플리케이션에서 Firebase Cloud Functions 에뮬레이터를 사용하기 위해 다음과 같이 설정합니다.

1) Firebase 패키지 설치

먼저, firebase_core와 cloud_functions 패키지를 pubspec.yaml에 추가합니다.

dependencies:
  firebase_core: latest_version
  cloud_functions: latest_version

2) Firebase 초기화 및 에뮬레이터 연결

플러터 애플리케이션의 메인 파일(main.dart)에서 Firebase를 초기화하고, 에뮬레이터에 연결합니다.

import 'package:firebase_core/firebase_core.dart';
import 'package:cloud_functions/cloud_functions.dart';
import 'package:flutter/material.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  // Firebase Cloud Functions 에뮬레이터에 연결
  FirebaseFunctions.instance.useFunctionsEmulator('http://localhost:5001');

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Firebase Cloud Functions Emulator Example'),
        ),
        body: Center(
          child: Text('Firebase Cloud Functions Emulator is set up!'),
        ),
      ),
    );
  }
}

이 코드에서 http://localhost:5001은 Firebase Cloud Functions 에뮬레이터의 주소와 포트 번호입니다. 실제 에뮬레이터의 주소와 포트 번호에 맞게 설정하세요.

5. Firebase Cloud Functions 테스트하기

이제 Firebase Cloud Functions 에뮬레이터를 통해 다양한 클라우드 함수 기능을 테스트할 수 있습니다. 예를 들어, 클라우드 함수를 호출하여 결과를 확인할 수 있습니다.

1) 클라우드 함수 작성

Firebase Functions 디렉터리(functions/)에서 클라우드 함수를 작성합니다. 예를 들어, index.js 파일에 다음과 같이 작성할 수 있습니다.

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

exports.helloWorld = functions.https.onRequest((request, response) => {
  response.send("Hello from Firebase!");
});

2) 클라우드 함수 호출

플러터 애플리케이션에서 클라우드 함수를 호출하여 결과를 확인합니다.

void callFunction() async {
  final HttpsCallable callable = FirebaseFunctions.instance.httpsCallable('helloWorld');
  final HttpsCallableResult result = await callable.call();
  print('Function result: ${result.data}');
}

이 코드를 사용하여 클라우드 함수를 호출하고, 에뮬레이터에서 결과를 확인할 수 있습니다.

 

 

Firebase Cloud Functions 에뮬레이터를 사용하면 플러터 개발자들은 로컬 환경에서 안전하고 효율적으로 클라우드 함수를 개발하고 테스트할 수 있습니다.

에뮬레이터의 설치와 설정 방법을 통해 실제 Firebase 서비스에 영향을 미치지 않으면서도 효과적인 개발과 디버깅이 가능합니다.

이번 가이드가 여러분의 개발에 도움이 되기를 바랍니다!

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

728x90
반응형