로컬 개발
Cloud Functions는 표준 배포 환경 외부에서 함수를 실행하는 여러 가지 방법을 지원합니다. 이는 반복 개발과 배포 전에 함수를 테스트하려는 경우에 특히 유용합니다.
사용 사례
함수를 배포하지 않고 실행할 수 있는 기능으로 로컬 테스트, 데이터 지역 제한 규정 준수, 멀티 클라우드 배포를 단순화할 수 있습니다.
로컬 테스트
변경할 때마다 함수를 다시 배포하여 매번 테스트하려면 대기해야 합니다. 반면에 개발 환경에서 함수를 직접 테스트하면 반복 테스트 주기를 단축할 수 있습니다.
테스트에 대한 자세한 내용은 배포 전 Cloud 함수 테스트 페이지를 참조하세요.
데이터 지역 제한
규제 또는 정책에 의해 Cloud Functions 자체에서 액세스할 수 없는 특정한 지리적, 조직적 또는 네트워크상의 경계 안에 데이터를 보관해야 하는 경우가 있습니다.
데이터 지역 제한을 준수하는 플랫폼이 Cloud Functions의 추상화 계층 중 하나와 호환되는 경우 이러한 계층 중 하나를 기반으로 해당 플랫폼에서 직접 함수를 실행할 수 있습니다.
멀티 클라우드 배포
멀티 클라우드 함수 배포는 안정성이 중요한 환경에서 다운타임 위험을 완화하기 위해 확립된 패턴입니다. 함수를 Cloud Functions 외의 환경에 배포하는 것만으로도 애플리케이션에 예상치 못한 다운타임이 발생할 위험이 줄어듭니다.
구현 선택
자체 함수 호스팅 환경을 설정하려면 먼저 다음 2가지 사항을 선택해야 합니다.
- 사용할 추상화 계층
- 실행할 함수 유형
추상화 계층
Cloud Functions 자체가 멀티 레이어 아키텍처를 사용하며 대부분의 아키텍처는 오픈소스로 제공됩니다. 이러한 오픈소스 구성요소를 사용하면 다른 플랫폼에서 Cloud Functions용으로 설계된 코드를 실행할 수 있습니다.
Cloud Functions 인프라 외부에서 실행할 수 있는 이 아키텍처의 두 가지 구성요소는 함수 프레임워크 및 Google Cloud CLI 함수 에뮬레이터입니다. 이 문서에서는 각 계층의 용도와 계층이 서로 연결된 방식을 설명합니다.
이 다이어그램은 Cloud Functions, Cloud Run, 기타 컨테이너 기반 플랫폼에서의 일반적인 함수 배포 레이아웃을 보여줍니다.
이벤트 유형
Cloud Functions에는 2가지 주요 함수 유형이 있습니다.
HTTP 함수는 웹훅과 같은 임의의 HTTP 요청으로 트리거될 수 있는 반면, 이벤트 기반 함수는 다른 Google Cloud 제품에서 생성된 이벤트를 수신합니다.
추상화 계층 선택
함수 프레임워크 또는 Functions 에뮬레이터를 사용하여 로컬에서 함수를 실행할 수 있습니다.
함수 프레임워크는 Cloud Functions 내에서 수신 HTTP 요청을 언어별 함수 호출로 마샬링 취소하기 위해 사용되는 오픈소스 라이브러리 집합입니다. 이를 사용하여 함수를 로컬에서 실행 가능한 HTTP 서비스로 변환할 수 있습니다.
Functions 에뮬레이터는 Cloud Native Buildpack 및 Docker를 사용하여 함수 프레임워크에서 만든 HTTP 서비스를 래핑하고 실행 가능한 컨테이너에 빌드하고 Cloud Functions 컨테이너 기반 아키텍처에서 실행합니다.
두 옵션 모두 장단점이 있습니다.
- 함수 프레임워크 기반 환경은 보통 리소스 수요가 더 적습니다.
- 함수 프레임워크에는 기본 컨테이너화 소프트웨어(예: Docker)가 필요하지 않습니다.
- 함수 프레임워크 기반 환경에는 기본 언어 인프라(예: 패키지 관리자 및 언어 런타임)가 필요합니다.
- Functions 에뮬레이터는 호출 및 배포와 같은 프로덕션 명령어를 미러링합니다.
- Functions 에뮬레이터는 프로덕션에 배포될 때 함수가 실행되는 방식에 대해 높은 품질을 제공합니다.
로컬에서 함수 실행
함수 프레임워크 및 Functions 에뮬레이터는 모두 HTTP 요청을 함수로 전달하여 작동합니다.
함수 프레임워크를 사용하여 함수를 로컬에서 실행하는 방법에 대한 자세한 내용은 함수 프레임워크 실행을 참조하세요.
Functions 에뮬레이터를 사용하여 함수를 로컬에서 실행하는 방법에 대한 자세한 내용은 Functions 에뮬레이터를 사용하여 함수 실행을 참조하세요.