IBM Cloud Code Engine 시작하기
IBM Cloud® Code Engine은 웹 앱, 마이크로서비스, 이벤트 기반 함수 또는 일괄처리 작업을 포함하여 컨테이너화된 워크로드를 실행하는 완전 관리형 서버리스 플랫폼입니다. Code Engine은 소스 코드에서 컨테이너 이미지도 빌드합니다. 이러한 모든 워크로드는 모두 동일한 Kubernetes 인프라 내에서 호스팅되므로 함께 완벽하게 작동될 수 있습니다. Code Engine 환경은 호스팅에 필요한 인프라가 아닌 코드 작성에 집중할 수 있도록 설계되었습니다.
먼저 Code Engine의 몇 가지 주요 용어에 대해 알아보고 다음 옵션 중 하나를 시작하십시오.
Code Engine 프로젝트, 애플리케이션, 직무, 기능 및 플릿이란 무엇인가요?
시작하기 전에 Code Engine에 대한 몇 가지 주요 용어를 잘 알고 있어야 합니다.
| 기간 | 설명 |
|---|---|
| 프로젝트 | 프로젝트는 애플리케이션, 작업 및 빌드와 같은 Code Engine 엔티티의 그룹입니다. 프로젝트는 리소스를 관리하고 해당 엔티티에 대한 액세스를 제공하는 데 사용됩니다. |
| 애플리케이션 | 애플리케이션 또는 앱은 코드를 실행하여 HTTP 요청을 제공합니다. 애플리케이션은 수신 요청에 대한 URL을 제공합니다. 애플리케이션의 실행 중인 인스턴스 수는 수신 워크로드에 따라 자동으로 확장 또는 축소(최소 0)됩니다. |
| 빌드 | 빌드 또는 이미지 빌드는 소스 코드에서 컨테이너 이미지를 작성하는 데 사용할 수 있는 메커니즘입니다. Code Engine은 Dockerfile 또는 클라우드 네이티브 빌드팩에서의 빌드를 지원합니다. |
| 기능 | 함수는 HTTP 요청에 대한 응답으로 작업을 수행하는 상태 비저장 코드 스니펫입니다. |
| 작업 | 작업은 실행 가능 코드의 하나 이상의 인스턴스를 병렬로 실행합니다. 수신 요청을 처리할 HTTP 서버가 포함되어 있는 애플리케이션과 달리, 작업은 한 번 실행되고 종료되도록 설계되었습니다. |
| Fleet | 서버리스 플릿이라고도 하는 플릿은 지정된 일련의 작업을 완료하기 위해 하나 이상의 사용자 코드 인스턴스를 실행합니다. 플릿은 컴퓨팅 부하가 많은 대규모 작업을 처리하도록 설계되었습니다. 작업과 달리 플릿은 단일 테넌트이며 동적 작업 대기열을 구현하고 머신 프로필 구성을 완벽하게 제어할 수 있습니다. 자세한 내용은 작업과 플릿의 차이점은 무엇인가 요? |
용어에 대한 자세한 정보는 Code Engine 용어를 참조하십시오.
무엇을 선택해야 할지 잘 모르시겠어요? Code Engine 플랜을 참조하십시오.
앱, 직무, 기능 및 차량은 어떻게 비교하나요?
| 특성 | 애플리케이션 | 작업 | 기능 | Fleet |
|---|---|---|---|---|
| 실행 시간(지속 시간) | 장기 실행(요청당 10분) | 장기 실행(최대 24시간) | 단기 실행(2분 이하) | 장기 실행(몇 분~몇 주) |
| 시작 지연 시간 | 중간 | 예정 시작 | 낮음 | 낮음 |
| 종료 | 연속 실행 | 실행에서 완료까지 | 실행에서 완료까지 | 실행에서 완료까지 |
| 호출 | 요청 시 또는 영구적으로 실행 | 스케줄됨 | 요청 시 즉시 | 스케줄됨 |
| 프로그래밍 모델 | 컨테이너 기반 빌드 및 실행 | 컨테이너 기반 빌드 및 실행 | 언어별 소스 코드 파일 및 종속성 메타데이터 | 컨테이너 기반 빌드 및 실행 |
| 병렬 처리 | 병렬 실행, 유연성 | 중저속 병렬 실행 | 높은 병렬 실행 | 높은 병렬 실행 및 대기열 |
| Scale-out | 요청 수 기준 | 작업 워크로드 정의 기준 | 이벤트 또는 직접 호출 기반 | 작업 및 동시 인스턴스 수 기준 |
| 격리 | 다중 테넌트 | 다중 테넌트 | 다중 테넌트 | 싱글 테넌트 |
| GPU 지원 | 아니오 | 아니오 | 아니오 | 예 |
| 기계 구성에 대한 제어 | 제어 없음 | 제어 없음 | 제어 없음 | 전체 제어 |
| VPC 연결 | ‘사적인 길’을 통해 | ‘사적인 길’을 통해 | ‘사적인 길’을 통해 | 네이티브 (서브넷 풀을 통해) |
| 다음 대상에 최적화 | 장기 실행, 매우 복잡한 워크로드 및 온디맨드 스케일아웃 | 리소스 수요가 많은 예약 또는 계획된 워크로드 | 시작 시간 및 신속한 확장 | 대규모의 연산 집약적 워크로드 |
자세한 내용은 Code Engine 을 참조하세요.
첫 번째 Code Engine 앱 배포
icr.io/codeengine/helloworld 이미지를 사용하여 첫 번째 Code Engine 앱을 작성하십시오.
- 콘솔을 엽니다 Code Engine 콘솔을 엽니다.
- 만들기 시작을 선택합니다.
- 사용 가능한 프로젝트 목록에서 프로젝트를 선택하십시오. 프로젝트를 새로 작성할 수도 있습니다. 앱을 배치하려면 선택한 프로젝트가 있어야 합니다.
- 애플리케이션을 선택하십시오.
- 응용 프로그램의 이름을 입력하십시오(예:
myapp). 프로젝트 내에서 고유한 애플리케이션 이름을 사용하십시오. - ‘기존 컨테이너 이미지 사용 ’을 선택하고 이미지 참조로
icr.io/codeengine/helloworld을 지정하십시오. 이 예제에서는 기본값을 수정할 필요가 없습니다. 이 예제에 사용된 코드에 대한 자세한 내용은helloworld. - 작성을 클릭하십시오.
- 애플리케이션 상태가 준비로 변경되면 애플리케이션을 테스트할 수 있습니다. 애플리케이션 테스트를 클릭한 후 애플리케이션 테스트 분할창에서 요청 전송을 클릭하십시오. 애플리케이션을 웹 페이지에서 열려면 애플리케이션 URL을 클릭하십시오.
출력 예
Hello World from:
. ___ __ ____ ____
./ __)/ \( \( __)
( (__( O )) D ( ) _)
.\___)\__/(____/(____)
.____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
.) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_API_BASE_URL=https://api.private.us-south.codeengine.cloud.ibm.com
CE_APP=myapp
CE_DOMAIN=us-south.codeengine.appdomain.cloud
CE_PROJECT_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_REGION=us-south
CE_SUBDOMAIN=abcdabcdab
HOME=/root
HOSTNAME=myapp-00001-deployment-5b5895fdf7-abcd
K_REVISION=myapp-00001
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PORT=8080
PWD=/
SHLVL=1
z=Set env var 'SHOW' to see all variables
첫 번째 애플리케이션을 Code Engine에 배치하고 테스트했습니다. 튜토리얼: 애플리케이션 배포 또는 다음에서 앱으로 작업 Code Engine 에서 더 많은 애플리케이션 옵션을 사용해 보세요.
첫 번째 Code Engine 작업 실행
icr.io/codeengine/helloworld 이미지를 사용하여 첫 번째 Code Engine 작업을 작성하고 실행하십시오.
- 콘솔을 엽니다 Code Engine 콘솔을 엽니다.
- 만들기 시작을 선택합니다.
- 사용 가능한 프로젝트 목록에서 프로젝트를 선택하십시오. 프로젝트를 새로 작성할 수도 있습니다. 작업을 작성하려면 선택한 프로젝트가 있어야 합니다.
- 작업을 선택하십시오.
- 작업 이름을 입력하세요. 예를 들어, ‘
myjob’과 같이 입력합니다. 프로젝트 내에서 고유한 작업 이름을 사용하십시오. - 이미지 참조로
icr.io/codeengine/helloworld을 지정하십시오. 이 예제에서는 기본값을 수정할 필요가 없습니다. 이 예제에 사용된 코드에 대한 자세한 내용은helloworld. - 작성을 클릭하십시오.
- 작업 페이지에서 작업 제출을 클릭하여 현재 구성을 기반으로 하는 작업을 제출하십시오.
- 작업 제출 분할창에서 모든 기본값을 그대로 적용하고 작업 제출을 다시 클릭하여 작업을 실행하십시오.
로깅이 활성화되면 로그에 다음 예시와 같은 내용이 표시됩니다. 로깅이 사용으로 설정된 작업 실행에 대해 알아보려면 로그 보기를 참조하십시오.
로깅 인스턴스의 출력 예시
Hello World from:
. ___ __ ____ ____
./ __)/ \( \( __)
( (__( O )) D ( ) _)
.\___)\__/(____/(____)
.____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
.) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_DOMAIN=us-east.codeengine.appdomain.cloud
CE_JOB=myjob
CE_JOBRUN=myjob-jobrun-xgpmz
CE_SUBDOMAIN=abcdabcdab
HOME=/root
HOSTNAME=myjob-jobrun-abcde-0-0
JOB_INDEX=0
...
z=Set env var 'SHOW' to see all variables
콘솔에서 작업을 작성하고 실행했습니다. 튜토리얼: 작업 실행 또는 코드 엔진에서 작업 실행으로 이동하여 추가 작업 옵션을 사용해 보십시오.
첫 번째 함수 실행
샘플 함수 코드를 사용하여 첫 번째 Code Engine 함수를 만들고 실행합니다.
- 콘솔을 엽니다 Code Engine 콘솔을 엽니다.
- 만들기 시작을 선택합니다.
- 사용 가능한 프로젝트 목록에서 프로젝트를 선택하십시오. 프로젝트를 새로 작성할 수도 있습니다. 함수를 생성하려면 프로젝트가 선택되어 있어야 한다는 점에 유의하십시오.
- ‘함수’를 선택하세요.
- 함수 이름을 입력하세요. 프로젝트 내에서 고유한 함수 이름을 사용하십시오.
- Node.js 22를 선택하세요
- 작성을 클릭하십시오. 샘플 코드를 사용하여 함수를 생성합니다. 이 코드는 기능 -> 구성 페이지에서 편집할 수 있습니다.
- '함수 테스트'를 클릭한 다음, '함수 테스트' 창에서 '요청 보내기'를 클릭합니다. 웹 페이지에서 이 함수를 실행하려면 ‘함수’ URL 를 클릭하세요.
출력 예
{
"args": {
"__ce_headers": {
"Accept-Encoding": "gzip, deflate, br",
"User-Agent": "got (https://github.com/sindresorhus/got)",
"X-Request-Id": "12340a7b-11c0-4de3-f16b-a6abc27f4146"
},
"__ce_method": "GET",
"__ce_path": "/"
},
"env": {
"HOME": "/root",
"PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/lib/nodejs/bin",
"PWD": "/nodejsAction",
"SHLVL": "1",
"_": "/usr/local/lib/nodejs/bin/node",
"__OW_ALLOW_CONCURRENT": "true",
"container": "oci"
}
}
Code Engine 에 첫 번째 함수를 배포하고 테스트해 보았습니다. 로컬 소스에서 함수 실행 또는 함수 작업으로 이동하여 함수에 대한 더 많은 옵션을 사용해 보세요.
첫 번째 함대 운영
icr.io/codeengine/helloworld 이미지를 사용하여 첫 번째 Code Engine 플릿을 생성하고 실행해 보세요.
- 차량 운영에 필요한 준비 단계를 완료했는지 확인하세요.
- 콘솔을 엽니다 Code Engine 콘솔을 엽니다.
- 만들기 시작을 선택합니다.
- 사용 가능한 프로젝트 목록에서 프로젝트를 선택하십시오. 프로젝트를 새로 작성할 수도 있습니다. 플릿을 실행하려면 프로젝트가 선택되어 있어야 한다는 점에 유의하십시오.
- 함대를 선택합니다.
- 함대의 이름을 입력하세요. 프로젝트 내 모든 함대에서 고유한 이름을 사용하십시오.
- 이미지 참조로
icr.io/codeengine/helloworld을 지정하십시오. 이 예제에서는 기본값을 수정할 필요가 없습니다. 이 예제에 사용된 코드에 대한 자세한 내용은helloworld. - 작성을 클릭하십시오.
로깅이 활성화되면 로그에 다음 예시와 같은 내용이 표시됩니다. 로깅을 활성화한 상태에서 플릿을 운영하는 방법에 대해 알아보려면 플릿 로그 보기를 참조하세요.
로깅 인스턴스의 출력 예시
Hello from helloworld! I'm a task of fleet: fleet-abcdef1234! Task Index: 4, Task ID: 2b2b2b2b-3c3c-4d4d-5e5e-6f6f6f6f6f6f
Hello World from:
. ___ __ ____ ____
./ __)/ \( \( __)
( (__( O )) D ( ) _)
.\___)\__/(____/(____)
.____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
.) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_API_BASE_URL=https://api.private.eu-de.codeengine.cloud.ibm.com
CE_CPU=1
CE_DOMAIN=eu-de.codeengine.appdomain.cloud
CE_FLEET_ID=1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e
CE_FLEET_NAME=fleet-abcdef1234
...
z=Set env var 'SHOW' to see all variables
콘솔에서 함대를 구성하고 운영했습니다. 플릿 운영으로 이동하여 플릿에 대한 더 많은 옵션을 사용해 보세요.
소스 코드에서 첫 번째 컨테이너 이미지 빌드
첫 번째 Code Engine 빌드를 작성하고 실행한 후 컨테이너 이미지를 애플리케이션에 배치하십시오.
Code Engine은 계정에 있는 Container Registry 네임스페이스에 이미지를 자동으로 푸시할 수 있습니다. 사용자 대신 네임스페이스를 작성할 수도 있습니다. 이미지를 다른 Container Registry 계정 또는 개인용 Docker Hub 계정에 푸시하려면 개인용 컨테이너 레지스트리에 대한 액세스 추가를 참조하십시오.
- 콘솔을 엽니다 Code Engine 콘솔을 엽니다.
- 만들기 시작을 선택합니다.
- 사용 가능한 프로젝트 목록에서 프로젝트를 선택하십시오. 프로젝트를 새로 작성할 수도 있습니다. 앱을 배치하려면 선택한 프로젝트가 있어야 합니다.
- 애플리케이션을 선택하십시오.
- 애플리케이션 이름을 입력하십시오. 프로젝트 내에서 고유한 애플리케이션 이름을 사용하십시오.
- '소스 코드에서 컨테이너 이미지 빌드'를 선택합니다.
- 빌드 세부사항 지정을 클릭하십시오.
- 각 페이지의 기본값을 수락하고 다음을 클릭한 후 완료를 클릭합니다.
- 작성을 클릭하십시오.
빌드 실행이 제출되면 빌드된 컨테이너 이미지가 Container Registry로 전송되고 애플리케이션이 이미지를 가져와서 자동으로 배치합니다. 애플리케이션 상태가 준비로 변경되면 시도해 볼 수 있습니다. 애플리케이션 테스트를 클릭한 후 애플리케이션 테스트 분할창에서 요청 전송을 클릭하십시오. 애플리케이션을 웹 페이지에서 열려면 애플리케이션 URL을 클릭하십시오.
출력 예
Hello World from:
___ __ ____ ____
/ __)/ \( \( __)
( (__( O )) D ( ) _)
\___)\__/(____/(____)
____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_API_BASE_URL=https://api.private.us-south.codeengine.cloud.ibm.com
CE_APP=myapp
CE_DOMAIN=us-south.codeengine.appdomain.cloud
CE_PROJECT_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_REGION=us-south
CE_SUBDOMAIN=abcdabcdab
HOME=/root
HOSTNAME=myapp-00001-deployment-6db6d89dc7-k6qc7
K_REVISION=myapp-00001
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PORT=8080
PWD=/
SHLVL=1
소스 코드를 Code Engine에 제출하고 컨테이너 이미지를 작성한 다음 애플리케이션에 배치했습니다. 이 모든 작업은 한 개의 인터페이스에서 가능합니다.
컨테이너 이미지 빌드로 이동하여 빌드에 대한 추가 옵션을 탐색하고 사용해 보십시오.
Code Engine의 다음 단계
콘솔 또는 Code Engine CLI에서 이러한 Code Engine 태스크를 수행하는 방법에 대해 자세히 알아보십시오.
더 많은 코드 예를 찾고 계십니까? 샘플은 IBM Cloud Code Engine GitHub 리포지토리에서 확인하세요.