Cloud Functions 시작하기

1. 개요

Cloud-Functions.png

Cloud Functions를 사용하면 클라우드 인프라와 서비스에서 발생하는 이벤트에 연결되는 단일 목적의 간단한 함수를 작성할 수 있습니다. Cloud 함수는 감시 중인 이벤트가 발생할 때 트리거됩니다. 코드는 완전 관리형 환경에서 실행되므로 인프라를 프로비저닝하거나 서버를 관리할 필요가 없습니다.

Cloud Functions는 현재 JavaScript, Python 또는 Go로 작성할 수 있습니다. JavaScript의 경우 Google Cloud Platform의 Node.js 환경에서 실행됩니다. Cloud 함수를 표준 Node.js 런타임에서 실행할 수 있으므로 이동성과 로컬 테스트가 모두 간편합니다.

클라우드 서비스 연결 및 확장

Cloud Functions는 클라우드 서비스의 연결 및 확장을 위한 코드를 작성할 수 있도록 하는 로직의 연결 레이어를 제공합니다. Cloud Storage로의 파일 업로드, 로그 변경 또는 Cloud Pub/Sub 주제의 수신 메시지를 확인하고 응답하세요. Cloud Functions를 사용하면 기존의 클라우드 서비스를 보완하고 임의의 프로그래밍 로직으로 점점 늘어나는 사용 사례를 처리할 수 있습니다. Cloud Functions는 Google 서비스 계정 사용자 인증 정보에 액세스할 수 있으므로 Datastore, Cloud Spanner, Cloud Translation API, Cloud Vision API 등과 같은 대부분의 Google Cloud Platform 서비스를 통해 원활하게 인증됩니다.

907ffb96feada611.png

이벤트 및 트리거

클라우드 이벤트는 클라우드 환경에서 발생하는 이벤트입니다.데이터베이스의 데이터 변경, 스토리지 시스템에 파일 추가, 새로운 가상 머신 인스턴스 생성 등이 포함될 수 있습니다.

이벤트는 응답 여부와 관계없이 발생합니다. 사용자는 트리거를 사용하여 이벤트에 대한 응답을 만들 수 있습니다. 트리거란 특정 이벤트 또는 이벤트 모음에 관심이 있음을 나타내는 선언입니다. 함수와 트리거를 결합하면 이벤트를 포착하여 조치를 취할 수 있습니다. 트리거를 만들고 함수에 연결하는 방법에 대한 자세한 내용은 이벤트 및 트리거를 참조하세요.

서버리스

Cloud Functions를 사용하면 서버 관리, 소프트웨어 구성, 프레임워크 업데이트, 운영 체제 패치 적용 등을 신경 쓸 필요가 없습니다. 소프트웨어와 인프라를 Google에서 모두 관리하므로 사용자는 코드만 추가하면 됩니다. 또한 리소스는 이벤트 발생 시 자동으로 프로비저닝됩니다. 즉, 별도의 작업 없이 함수를 하루 몇 번에서 수백만 번까지 호출할 수 있습니다.

사용 사례

경량형 ETL과 같은 비동기식 워크로드 또는 애플리케이션 빌드 트리거와 같은 클라우드 자동화 작업에 이제는 더 이상 자체적인 서버나 개발자의 연결 작업이 필요하지 않습니다. 원하는 이벤트에 연결된 Cloud 함수를 배포하기만 하면 됩니다.

또한 세분화된 주문형 Cloud Functions의 특성상 경량형 API 및 웹훅에 가장 적합합니다. 또한 HTTP 함수 배포 시 HTTP 엔드포인트를 자동으로 프로비저닝하므로 다른 일부 서비스와 같은 복잡한 구성이 필요하지 않습니다.

이 실습에서는 Google Cloud 콘솔을 사용하여 Cloud 함수를 만들고 배포하고 테스트하는 방법을 살펴봅니다. 다음을 수행합니다.

  • Cloud 함수 만들기
  • 함수 배포 및 테스트
  • 로그 보기

2. 설정 및 요구사항

자습형 환경 설정

  1. Cloud Console에 로그인하고 새 프로젝트를 만들거나 기존 프로젝트를 다시 사용합니다. (Gmail 또는 G Suite 계정이 없으면 만들어야 합니다.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

모든 Google Cloud 프로젝트에서 고유한 이름인 프로젝트 ID를 기억하세요(위의 이름은 이미 사용되었으므로 사용할 수 없습니다). 이 ID는 나중에 이 Codelab에서 PROJECT_ID라고 부릅니다.

  1. 그런 후 Google Cloud 리소스를 사용할 수 있도록 Cloud Console에서 결제를 사용 설정해야 합니다.

이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 가이드를 마친 후 비용이 결제되지 않도록 리소스 종료 방법을 알려주는 '삭제' 섹션의 안내를 따르세요. Google Cloud 새 사용자에게는 미화 $300 상당의 무료 체험판 프로그램에 참여할 수 있는 자격이 부여됩니다.

Google Cloud Shell

Google Cloud 및 Cloud Functions는 노트북에서 원격으로 조작할 수 있지만 이 Codelab에서는 Cloud에서 실행되는 명령줄 환경인 Google Cloud Shell을 사용합니다.

이 Debian 기반 가상 머신에는 필요한 모든 개발 도구가 로드되어 있습니다. 영구적인 5GB 홈 디렉터리를 제공하고 Google Cloud에서 실행되므로 네트워크 성능과 인증이 크게 개선됩니다. 즉, 이 Codelab에 필요한 것은 브라우저뿐입니다(Chromebook에서도 작동 가능).

  1. Cloud Console에서 Cloud Shell을 활성화하려면 단순히 Cloud Shell 활성화fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q를 클릭합니다. 환경을 프로비저닝하고 연결하는 데 몇 정도만 소요됩니다.

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 2017-06-14 at 10.13.43 PM.png

Cloud Shell에 연결되면 사용자 인증이 이미 완료되었고 프로젝트가 내 PROJECT_ID에 설정되어 있음을 확인할 수 있습니다.

gcloud auth list

명령어 결과

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

명령어 결과

[core]
project = <PROJECT_ID>

어떤 이유로든 프로젝트가 설정되지 않았으면 다음 명령어를 실행하면 됩니다.

gcloud config set project <PROJECT_ID>

PROJECT_ID를 찾고 계신가요? 설정 단계에서 사용한 ID를 확인하거나 Cloud Console 대시보드에서 확인하세요.

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

또한 Cloud Shell은 기본적으로 이후 명령어를 실행할 때 유용할 수 있는 몇 가지 환경 변수를 설정합니다.

echo $GOOGLE_CLOUD_PROJECT

명령어 결과

<PROJECT_ID>
  1. 마지막으로 기본 영역 및 프로젝트 구성을 설정합니다.
gcloud config set compute/zone us-central1-f

다양한 영역을 선택할 수 있습니다. 자세한 내용은 리전 및 영역을 참조하세요.

3. 함수 만들기

이 단계에서는 콘솔을 사용하여 클라우드 함수를 생성합니다.

  • 콘솔에서 탐색 메뉴 > Cloud Functions가 있습니다

fe64222954f5f372.png

  • '함수 만들기'를 클릭합니다. :

7adca9640ca2e5a6.png

  • 함수 이름을 GCFunction로 지정하고 다른 기본값(메모리 할당, HTTP 트리거, 인라인 편집기, 기본 런타임, 기본 샘플 코드)은 그대로 유지합니다.

795f1fedc0f039bb.png

  • 'create 함수' 내에서 대화상자 하단의 '만들기'를 클릭합니다. 함수를 배포합니다.

b68c3647b771e6f9.png

'만들기'를 클릭하면 콘솔에서 Cloud Functions 개요 페이지로 리디렉션됩니다.

배포 중인 함수 옆에 작은 스피너가 나타납니다. 배포가 완료되면 스피너가 녹색 체크표시로 바뀝니다. 문제가 있는 경우 문제를 파악할 수 있도록 빨간색 아이콘과 로그 링크가 포함된 알림이 표시됩니다.

3ec684b1b4906657.png

작업이 끝났습니다. 이제 함수가 활성 상태이며 HTTP를 통해 트리거할 수 있습니다.

4. 함수 테스트

Cloud Functions 개요 페이지에서 함수 메뉴를 표시하고 함수 테스트를 클릭합니다.

74e310ee6663bb3c.png

트리거 이벤트 필드에서 중괄호 {} 사이에 다음 텍스트를 입력하고 함수 테스트를 클릭합니다.

출력 필드에 성공: Hello World! 메시지가 표시됩니다.

로그 필드에서 상태 코드 200은 성공을 나타냅니다. 로그가 표시되는 데 1분 정도 걸릴 수 있습니다.

a876def9cbf24a45.png

5. 함수 로그 보기

파란색 화살표를 클릭하여 Cloud Functions 개요 페이지로 돌아갑니다.

8917a2bfa4fb9502.png

함수 관련 메뉴를 표시하고 로그 보기를 클릭합니다.

e97e6ec1fc17dfd7.png

다음은 로그 기록의 예입니다.

d91a00cf4457fa84.png

로그를 함수 및 심각도별로 필터링하고 라벨 또는 자유 형식 텍스트로 검색할 수 있습니다.

애플리케이션을 배포 및 테스트하고 로그를 볼 수 있었습니다.

6. 리소스 삭제

서버리스 컴퓨팅이므로 리소스를 정리할 필요가 없습니다. Scale-to-zero는 비용을 0으로 조정합니다. 따라서 함수에 트래픽이 발생하지 않으면 비용이 발생하지 않습니다. 또한 매월 200만 개의 Cloud 함수 호출은 무료입니다. 자세한 내용은 가격 책정 페이지를 참조하세요.

함수를 삭제하려면 개요 페이지로 이동하여 함수를 선택하고 삭제 를 클릭합니다.

4fe11e1b41b32ba2.png

7. 다음 단계

Cloud Functions에는 훨씬 더 많은 기능이 준비되어 있습니다. 다른 Codelab과 제품 페이지 및 관련 문서를 확인하세요.

또한 다음 사항도 확인해야 합니다.