티스토리 뷰
Cloud Functions이란?
Google Cloud Functions는 클라우드 서비스를 빌드 및 연결하기 위한 서버리스 실행 환경입니다. Cloud Functions를 사용하면 클라우드 인프라와 서비스에서 발생하는 이벤트에 연결되는 단일 목적의 간단한 함수를 작성할 수 있습니다. 함수는 감시 중인 이벤트 발생 시에 트리거 됩니다. 코드는 완전 관리형 환경에서 실행되므로, 인프라를 프로비저닝 하거나 서버를 관리할 필요가 없습니다. 또한 표준 Node.js, python3, Go, Java 환경에서 실행할 수 있습니다.
서버리스
Cloud Functions는 서버 관리, 소프트웨어 구성, 프레임워크 업데이트, 운영 체제 패치 적용 등의 작업을 하지 않아도 됩니다. 소프트웨어 인프라가 Google에서 모두 관리되므로, 사용자는 코드만 추가하면 됩니다. 또한 리소스는 이벤트 발생 시 자동으로 프로비저닝 됩니다. 즉, 별도의 작업 없이 함수를 하루 몇 번에서 수백만 번까지 호출할 수 있습니다.
요약하자면 다음의 과정을 모두 처리합니다.
-
인프라
-
운영체제
-
런타임 환경
이벤트 및 트리거
Cloud 이벤트란 클라우드 환경에서 발생하는 모든 상황을 의미합니다. 여기서는 데이터베이스의 데이터 변경, 스토리지 시스템에 파일 추가, 새로운 가상머신 인스턴스 생성이 될 수 있습니다.
이벤트는 응답 여부와 관계없이 발생합니다. 또한 트리거를 사용하여 이벤트에 대한 응답을 생성합니다. 트리거는 특정 이벤트 또는 이벤트 집합에 관심이 있다는 선언입니다. 함수를 트리거에 바인딩하면 이벤트를 캡처하고 조치를 취할 수 있습니다.
다음은 이벤트의 종류입니다.
-
Pub/Sub 메시지 큐에서 들어오는 메시지
-
Firebase 모바일 SDK에 의해서 발생되는 이벤트
-
Google Cloud Storage 서비스에 의해서 파일이 생성, 수정, 삭제되었을 때
-
HTTP로 들어오는 요청(REST API)
이용 사례
실행 보장
일반적으로 함수는 수신 이벤트가 있을 때마다 한 번씩 호출됩니다. 그러나 오류 시나리오가 다양하기 때문에 Cloud Functions는 항상 단일 호출을 보장하지 않습니다.
단일 이벤트에 대한 함수의 최대 또는 최소 호출 횟수는 함수 유형에 따라 다릅니다. 다음의 두 가지 유형이 있습니다.
-
HTTP 함수 : 최대 한 번만 호출됩니다. 이는 HTTP 호출의 동기식 특성 때문이며 함수 호출을 처리하는 도중 발생하는 모든 오류는 재시도 없이 반환됩니다. HTTP 함수 호출자는 필요한 경우 오류를 처리하고 재시도합니다.(req, res)
-
백그라운드 함수 : 최소 한 번 이상 호출됩니다. 이는 응답을 기다리는 호출자가 없는 이벤트 처리의 비동기적인 특성 때문입니다. 이벤트 전달을 위해 시스템에서 백그라운드 함수를 두 번 이상 호출하는 경우도 있습니다. 백그라운드 함수 호출이 오류로 인해 실패하는 경우 해당 함수에 실패 시 재시도가 사용 설정되어 있지 않으면 다시 호출되지 않습니다.( 백그라운드 펑션은 GCS, Pub/Sub 등의 이벤트로 트리거 되는 함수로 fucntion 함수 이름(event, callback) 형태로 정의됩니다. event 객체 안에, GCS나 Pub/Sub 에서 발생된 이벤트 정보가 전송됩니다. )
함수들 간 특징
배포된 각 함수는 동일한 소스 파일에서 배포된 함수를 포함하여 다른 모든 함수와 격리됩니다. 특히 메모리, 전역 변수, 파일 시스템 또는 다른 상태를 공유하지 않습니다.
배포된 함수 간의 데이터를 공유하기 위해 Datastore, Firebase, Cloud Storage와 같은 스토리지 서비스를 사용할 수 있습니다. 또는 적절한 트리거를 사용하여 한 함수에서 다른 함수를 호출할 수 있습니다.