서비스 개발

이 페이지에서는 Knative serving용 서비스 개발을 시작하기 위해 알아야 할 몇 가지 사항을 설명합니다.

코드 요구사항

서비스를 개발할 때 다음 요구사항을 충족해야 합니다.

  • 서비스는 요청을 리슨해야 합니다. 요청이 전송되는 포트를 구성할 수 있습니다. Knative serving 컨테이너 인스턴스 내에서 PORT 환경 변수 값은 항상 요청이 전송되는 포트를 반영합니다. 코드에서는 이 PORT 환경 변수가 있는지 확인해야 하며, 변수가 있으면 이를 리슨하여 이동성을 극대화해야 합니다.
  • 서비스는 스테이트리스(Stateless)여야 하며, 영구 로컬 상태를 사용할 수 없습니다.
  • 서비스는 요청 처리 범위를 벗어난 백그라운드 활동을 수행해서는 안 됩니다.

컨테이너 런타임 계약에서 이러한 제약조건에 대한 자세한 내용을 확인할 수 있습니다.

프로그래밍 언어 지원

Knative serving을 사용하면 원하는 프로그래밍 언어로 코드를 작성할 수 있습니다.

웹 서버 사용

웹 서버를 사용하여 필수 포트에서 리슨하고 수신 요청을 처리하고 라우팅할 수 있습니다. 예를 들어 Node.js 개발자는 Express.js를, Python 개발자는 Flask를, Ruby 개발자는 Sinatra를 사용할 수 있습니다.

코드 컨테이너화

Knative serving에 배포하려면 컨테이너 이미지를 제공해야 합니다. 컨테이너 이미지는 코드와 관련 패키지, 필요한 바이너리 종속 항목, 사용할 운영체제, 서비스를 실행하는 데 필요한 기타 항목을 포함하는 패키징 형식입니다.

Dockerfile이라는 파일은 일반적으로 컨테이너 이미지를 빌드하는 방법을 선언하는 데 사용됩니다.

Dockerfile은 기본 이미지(예: FROM golang:1.11)에서 시작되는 경우가 많습니다. OS 및 언어 작성자가 관리하는 기본 이미지는 Docker Hub에서 확인할 수 있습니다. Cloud Build는 Docker Hub에서 가져오기 전에 캐시된 이미지를 확인합니다. 타사 빌드 도구를 사용하는 경우 동일 캐시의 이미지를 확인하도록 Docker 데몬을 구성할 수 있습니다. 또한 Google Cloud Marketplace에서 Google에서 관리되는 기본 이미지를 찾을 수 있습니다.

자체 바이너리를 사용하는 경우에는 Linux ABI x86_64용으로 컴파일해야 합니다.

Dockerfiles에 대한 자세한 내용은 다음 리소스를 참조하세요.

다음 단계