본문

170816(수) - Cloud Functions

Cloud Functions


Cloud Functions

- Firebase 기능 및 HTTPS 요청에 의해 trigger 된 이벤트에 대한 응답으로 backend code를 자동으로 실행 가능

- code는 Google cloud에 저장되고 관리되는 환경에서 실행된다.

- 자체 서버를 관리하고 확장할 필요가 없음


- Beta

Beta version 이므로 API가 변경 및 삭제될 수 있다.



주요 기능

- Firebase platform 통합

ㆍ작성된 functions는 다른 Firebase와 Google Cloud features에 의해 생성된 이벤트에 응답 가능

ㆍ자체 webhook 을 사용하여 third-party service와 통합 가능

ㆍboilerplate code를 줄이고 Firebase와 Google Cloud를 사용하기 쉬워짐


- 불필요한 유지보수

ㆍcode를 서버에 배포하고 나면 Firebase가 자동으로 사용자의 사용 패턴에 맞게 리소스를 자동으로 확장

ㆍcredentials, server configuration, provisioning new server, decommissioning old server 에 대해서 걱정할 필요가 없다.


- Logic을 private & secure하게 유지

Cloud 기능은 client와 완전히 분리되어 있으므로 private 한 기능이며 항상원하는 기능 수행 가능



동작 방식

- functions를 작성하고 배포 후, Google server는 event를 수신하고 trigger될때 함수를 실행하면서 즉시 함수를 manage 하기 시작한다.

- load가 증가하거나 감소함에 따라서 Google server가 자동으로 virtual server instances의 수를 빠르게 늘려 응답한다.


- function의 Lifecycle

1. Developer는 새로운 function code를 작성하고 event provider(ex: Realtime Database) 를 선택하고, function를 실행할 조건을 정의한다.


2. Developer가 function를 배치하면, Firebase가 선택된 event provider와 연결

3. Event provider가 function 조건과 일치하는 event를 생성하면 code가 invoke

4. 만약 function이 많은 event를 handling 한다면 Google server는 더 많은 instance를 생성하여 빠르게 처리.

5. functions이 idle 상태이면 instance가 빠르게 정리된다.



구현 방법

- set up Cloud Functions

- Functions 작성

- 배포 및 monitor



일반적인 사용 사례

- Interesting 한 일이 발생할 때 사용자에게 알림

ㆍDeveloper는 Cloud Functions를 사용하여 user의 관심을 유지하고, app 관련 정보를 최신으로 유지할 수 있다.

ㆍex) App에서 user가 다른 사람의 follower를 수락

Realtime Database가 새로운 follower를 저장하기 위해 FCM 알림으로 new follower가 있음을 알리는 functions triggered.

1. function은 Realtime Database write를 trigger 한다.

2. function은 FCM을 통해 보낼 message를 작성한다.

3. FCM은 notification을 device로 보낸다.


- Realtime Database에 대한 sanitizations & maintenance 수행

ㆍuesr 동작을 Realtime Database에 바로 수정하여 system을 최신상태로 유지하고 clean할 수 있다.

ㆍex) Realtime Database에 구축된 chat room app에서 write event를 모니터링 하고 부적절한 text를 제거할 수 있다.

1. specific path의 write event를 수신하고 모든 chat message의 text를 포함하는 event data를 검색

2. text를 처리하여 부적절한 language를 차단.

3. function은 update된 text를 다시 database에 write한다.

 Text Moderation


- App이 아닌 cloud 에서의 작업

ㆍCloud 기능을 활용하여 사용자의 기기에서 실행하기에 적합하지 않은 Clouding 작업 (CPU or network)을 줄일 수 있다.

ㆍStorage에 image를 upload를 listening하는 function을 작성하고, functions을 실행하는 instance로 image를 download하고 수정한 다음, 다시 Storage에 upload할 수 있다.


ㆍImageMagick command line tools 는 cloud 기능과 함께 사용하여 resizing, cropping 등의 작업을 쉽게 할 수 있도록 한다.


1. Image file이 upload 될 때, function이 trigger

2. Function은 image를 download하고 thumbnail을 만든다.

3. Function은 thumbnail 위치를 DB에 기록하므로 App이 찾아서 사용 가능

4. Function은 thumbnail을 new location Storage로 다시 upload

5. App에서 thumbnail image link를 download.

 image processing example, see Handle Storage Events.


- Third-party services and APIs 통합

ㆍCloud Function은 web API를 호출하고 노출하여 다른 service와 더 잘 동작하도록 도와준다.

1. User가 GitHub repo로 push, commit

2. HTTPS function이 GitHub webhook API를 통해 trigger

3. function이 team Slack channel로 commit을 알린다.


'Mobile > Firebase' 카테고리의 다른 글

170816(수) - Firebase Authentication  (0) 2017.08.16
170816(수) - Firebase Cloud Messaging  (0) 2017.08.16
140816(수) - Firebase Analytics  (0) 2017.08.16
170814(월) - Start Firebase  (0) 2017.08.14

공유

댓글