일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Load Image
- Flutter Tutorial
- AppBar
- Cached Image
- WillPopScope
- FutureBuilder
- MainAxisAlignment
- Flutter 강좌
- Row Widget
- Hello World
- Flutter Example
- flutter
- Networking
- CrossAxisAlignment
- listview
- Column Widget
- HTTP
- Image.network
- Row
- ListTile
- Flutter 앱 배포
- Snackbar
- navigator
- InkWell
- Scaffold
- ListView.builder
- sqlite
- node.js
- Flutter 예제
- 반석천
- Today
- Total
꿈꾸는 시스템 디자이너
Flutter 강좌 - [Firebase] Cloud Functions 사용법 #3 - 로컬 테스트 | Local Test 본문
Flutter 강좌 - [Firebase] Cloud Functions 사용법 #3 - 로컬 테스트 | Local Test
독행소년 2020. 3. 12. 14:14
Flutter Code Examples 강좌를 추천합니다.
- 제 블로그에서 Flutter Code Examples 프로젝트를 시작합니다.
- Flutter의 다양한 예제를 소스코드와 실행화면으로 제공합니다.
- 또한 모든 예제는 Flutter Code Examples 앱을 통해 테스트 가능합니다.
Flutter Code Examples 강좌로 메뉴로 이동
Flutter Code Examples 강좌 목록 페이지로 이동
Flutter Code Examples 앱 설치 | Google Play Store로 이동
Flutter 강좌 시즌2 목록 : https://here4you.tistory.com/149
지난 강좌에서 2회에 걸쳐 Cloud Functions의 사용법을 알아봤다.
2019/11/13 - [Development/Flutter] - Flutter 강좌 - [Firebase] Cloud Functions 사용법 #2
2019/11/12 - [Development/Flutter] - Flutter 강좌 - [Firebase] Cloud Functions 사용법 #1
실제로 Cloud Functions을 이용할 때 가장 불편한 점은 함수의 배포(deploy) 시간이 생각보다 오래 걸린다는 것이다. 실제로 1분 이상 걸리기 때문에 함수를 빈번히 수정/배포해가면서 기능을 테스트하기가 굉장히 불편하다. 로컬에서 기능 테스트를 마친 후에 실제 서버에 반영하는 방법이 없을까 하여 알아보니 당연히 있었다.
이번 강좌에서는 Cloud Functions을 로컬에서 테스트 하는 방법에 대해서 알아본다.
1. 관리자 인증 정보 설정
로컬에서 테스트할 함수가 Firebase에서 제공하는 여러 서비스를 이용하기를 원한다면 관리자 인증 정보 설정이 필요하다.
구글 클라우드 콘솔에 로그인 한 후 IAM 및 관리자의 서비스 계정 항목으로 이동하자. App Engine default service account 항목의 작업을 클릭해서 키 만들기를 선택한다.
키 유형을 JSON으로 선택하면 비공개 키가 JSON 파일로 다운로드된다. 이 파일을 통해 Firebase의 클라우드 리소스에 액세스 할 수 있게 되는 것이다.
이 파일을 미리 설치했던 로컬의 Firebase 프로젝트로 복사한 후 파일 이름을 key.json으로 변경한다.
* Firebase CLI 설치 방법은 Cloud Functions 사용법 #1을 참고한다.
2. Firebse 에뮬레이터 실행
key.json 파일의 경로를 파라미터로 해서 GOGGLE_APPLICATION_CREDENTIALS 변수를 설정한다. json 파일의 절대 경로로 입력해야 한다. 윈도우의 경우 set 명령어를 이용하며 UNIX의 경우는 set 대신 export로 설정한다.
D:\workspace\Firebase\sbt
λ set GOOGLE_APPLICATION_CREDENTIALS=D:\workspace\Firebase\sbt\key.json
에뮬레이터를 실행하려면 다음과 같은 명령어를 이용한다.
$> firebase emulators:start
Cloud Functions만 에뮬레이션하고자 한다면 --only 플래그를 이용한다.
firebase emulators:start --only functions
본인의 실행화면은 다음과 같다.
잠깐 살펴보면, 에뮬레이터 허브라는 것이 로컬의 4400 포트에서 실행되었고, Cloud Functions 에뮬레이터는 로컬의 5001 포트에서 실행되고 있다.
한 가지 주목할 점은, 본인은 --only functions란 플래그를 이용해서 오직 Cloud Functions의 에뮬레이터만 실행시켰다. 그런데 본인이 개발한 7개의 함수 중 하위 4개는 Firestore를 참조하고 있는 함수들인데, Firestore 에뮬레이터는 실행하지 않았으므로 이들 함수들이 호출되면 실제 서버의 Firestore에 영향이 미치게 된다는 뜻이다. 각자 테스트 목적에 따라 Firestore도 로컬에서 에뮬레이션 할 필요가 있을 경우 Firestore의 에뮬레이터도 실행해야 서버에 영향 없이 테스트를 할 수 있을 것이다.
그리고 상단의 3개의 함수들은 로컬주소의 5001 포트를 통해 호출될 수 있는데 호출에 사용될 URL들이 출력되고 있다.
3. 함수 테스트
자 그럼 functions 폴더의 index.js 파일에 테스트용 함수를 추가해보자.
exports.helloWorld = functions.https.onRequest((request, response) => {
response.send("Hello from Firebase!");
});
함수 추가 후 index.js 파일을 저장하면 에뮬레이터는 파일의 변화를 자동으로 감지하고 해당 함수를 자동으로 초기한다.
functions[helloWorld]: http function initialized (http://localhost:5001/shareble-baby-tracker/us-central1/helloWorld).
웹 브라우저에서 해당 URL을 요청해보자.
함수가 정상적으로 호출되는 것을 확인할 수 있다.
이번 강좌에서는 Cloud Functions을 로컬에서 테스트하는 방법에 대해서 알아봤다. 이 방법을 이용하면 로컬에서 함수를 개발하면서 바로바로 기능을 테스트할 수 있고, 테스트가 완료된 후에 배포를 할 수 있기 때문에 개발과 기능 테스트를 위해 빈번히 서버를 멈춰가며 배포하는 부담을 배재할 수 있다.