이 페이지에서는 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에 대한 자세한 내용은 다음 리소스를 참조하세요.
- Dockerfile 참조를 통해 Dockerfile 구문에 대해 알아보세요.
- Dockerfile 작성 권장사항의 도움말을 통해 Dockerfile을 함께 사용하는 방법을 알아보세요.
다음 단계
- 서비스 코드와 Dockerfile이 있으면 컨테이너 이미지를 빌드한 다음 로컬 테스트에서 계속 반복해야 합니다.
- 기존 웹 애플리케이션을 마이그레이션하는 경우 Knative serving으로 서비스 마이그레이션을 참조하세요.
- Knative serving에서 서비스의 설계, 구현, 테스트, 배포에 대한 권장사항은 개발 도움말을 참조하세요.