기능 워크로드
함수는 HTTP 요청에 의해 호출될 때마다 작업을 수행하는 상태 비보유 코드 조각입니다. IBM Code Engine 의 기능을 활용하면 확장성이 뛰어나고 서버리스 방식으로 비즈니스 로직을 실행할 수 있습니다. IBM Code Engine 이 기능들은 저지연 및 신속한 수평 확장 시나리오를 지원하기 위해 최적화된 런타임 환경을 제공합니다. 함수 코드는 특정 버전의 Node.js 또는 Python 이 포함된 관리형 런타임에서 작성할 수 있습니다.
코드 번들은 기능 코드를 나타내는 파일의 콜렉션입니다. 이 코드 번들은 런타임 컨테이너에 삽입됩니다. 코드 번들은 Code Engine 에 의해 작성되며 컨테이너 레지스트리에 저장되거나 함수와 함께 인라인으로 저장됩니다. 코드 번들은 OCI (Open Container Initiative) 표준 컨테이너 이미지가 아닙니다.
함수 인스턴스의 라이프사이클
함수가 호출 (시작) 되면 해당 함수 인스턴스는 구성된 런타임 컨테이너 및 자원 매개변수를 사용하여 초기화됩니다. 첫 번째 초기화 프로세스를 콜드 스타트라고 합니다.
콜드 스타트 대기 시간을 줄이기 위해 Code Engine 는 특정 CPU및 메모리 구성으로 특정 런타임을 사전에 준비하여 호출을 최적화합니다. 함수에 대한 사전 예열된 조합에는 Node.js 및 Python 런타임과 함수에 대한 기본 CPU 및 메모리 조합( 0.25 vCPU x 1GB 메모리)이 있습니다. 또한 시스템은 이미 초기화된 기능 인스턴스의 재사용을 개선하도록 설계되었습니다. 따라서 동일한 인스턴스를 다시 사용하고 마지막 호출이 완료되었을 때 인스턴스의 상태를 다시 사용하여 후속 호출을 허용하기 위해 호출이 완료된 후에도 함수 인스턴스가 활성 상태로 유지됩니다. 함수 인스턴스의 재사용은 보장되지 않습니다.
기능에 대한 작업의 주요 기능은 무엇입니까?
IBM Code Engine 기능 관련 작업에 대한 자세한 정보는 다음 주제를 검토하십시오.
격리
Code Engine은 테넌트가 동일한 네트워크 및 컴퓨팅 인프라를 공유하는 다중 테넌트 지역 서비스입니다. 특히 네트워크 및 컴퓨팅 인프라는 공유 리소스이며 일부 관리 컴포넌트는 모든 테넌트에 공통입니다. 그러나 테넌트 및 해당 워크로드는 Code Engine 프로젝트를 사용하여 서로 격리됩니다. Code Engine 는 프로젝트 간의 통신을 방지하여 애플리케이션, 일괄처리 작업 및 기능을 포함할 수 있는 다중 테넌트 환경 내의 애플리케이션에 대한 격리를 제공합니다. 또한 권한이 부여된 사용자만 기능 또는 기타 Code Engine 워크로드와 같은 프로젝트 자원에 대해 특정 조작을 수행할 수 있도록 자원 레벨에서 수행되는 액세스 제어가 있습니다.
워크로드 격리에 대한 자세한 정보는 Code Engine 워크로드 격리 를 참조하십시오.
로깅
함수 코드는 ' stdout ' 및 ' stderr 로그를 작성하여 캡처한 후 IBM Cloud Logs 인스턴스로 전달할 수 있습니다. { IBM Cloud Logs 로그를 인덱싱하도록 설정할 수 있는 플랫폼 로깅 인스턴스입니다. 자세한 정보는 로그 보기를 참조하십시오.
런타임
Code Engine 에는 함수에 사용할 수 있는 관리 런타임 이 포함되어 있습니다.
관리 런타임에는 Node.js 및 Python 버전과 특정 CPU및 메모리 조합이 포함됩니다. 이러한 런타임은 빠른 시작을 위해 최적화되어 있습니다. 이러한 런타임은 사전에 준비되어 컨테이너 이미지를 가져오고 컨테이너 및 프로세스를 시작하는 오버헤드를 방지합니다. 코드가 이미 실행 중인 컨테이너에 삽입됩니다.
자세한 정보는 런타임 을 참조하십시오.
함수 실행
코드가 로컬 파일이나 Git 저장소에 소스 형태로 존재하든, 공개 또는 비공개 레지스트리에 있는 컨테이너 이미지 형태이든 상관없이, Code Engine 는 코드를 함수 형태로 실행할 수 있는 간편한 방법을 제공합니다.
다음 방법으로 Code Engine 에서 함수를 작성하고 호출할 수 있습니다.
-
기존 코드 번들에서 실행합니다.
-
기존 소스 코드에서 실행합니다. Git 저장소 또는 로컬 워크스테이션에 있는 소스 코드로 시작하는 경우 소스의 위치를 가리킬 수 있으며 Code Engine 가 이미지 빌드를 처리합니다.
함수 작성 및 호출에 대한 자세한 정보는 Code Engine의 함수에 대한 작업 을 참조하십시오.
보안
Code Engine 사용자 함수에 대한 즉각적인 DDoS 보호 기능을 제공합니다. Code Engine 의 DDoS 보호 기능은 Cloud Internet Services (CIS) 에서 제공되며, 사용자에게는 추가 비용이 발생하지 않습니다. DDoS 이 보호 기능은 OSI 계층 3 및 계층 4( TCP/IP ) 프로토콜 공격을 차단하지만, 계층 7( HTTP ) 공격은 차단하지 않습니다. DDoS 보호 기능을 참조하십시오.
Code Engine 또한 네트워킹 계층을 활용할 수 있는 서비스 메시를 제공하며, 이를 통해 함수 간에 상호 TLS( TLS ) 트래픽을 지원함으로써 서비스 간 및 사용자-서비스 간 통신을 안전하게 보호합니다.
보안에 대한 자세한 정보는 Code Engine 및 보안 을 참조하십시오.
함수 인스턴스의 호출 동시성 및 스케일링
여러 함수가 동시에 호출되는 경우, Code Engine 는 각 호출에 대해 새 함수 인스턴스를 초기화하지만 동시에 재사용을 최대화하려고 합니다. 하나의 함수 호출만 단일 시점에 함수 인스턴스에 의해 처리됩니다. Node.js의 경우 단일 함수 인스턴스에서 다중 호출을 처리할 수 있도록 concurrency > 0 를 사용하여 함수를 구성할 수 있습니다.
함수에 대한 소스 코드 패키징
기능은 세 가지 다른 방법으로 패키지할 수 있습니다.
- 단일 파일로
- 여러 파일로 (폴더 구조 및 종속 모듈 포함)
- 컨테이너 이미지로
기능을 시작하는 방법은 무엇입니까?
hello-world 샘플 이미지를 사용하여 단순 Code Engine 애플리케이션을 배치하려면 IBM Code Engine 기능 실행 튜토리얼을 참조하십시오.
함수에 대한 작업을 자세히 수행하려면 Code Engine 을 참조하십시오.