Classic 환경에서 이용 가능합니다 .
서버리스 프레임워크는 다양한 Cloud Provider의 Function-as-a-Service와 연동하여 서버리스 애플리케이션을 개발, 배포, 테스트할 수 있는 오픈소스 웹 프레임워크입니다. 네이버클라우드 Cloud Functions는 서버리스 프레임워크 Provider를 지원하며 서버리스 프레임워크를 활용하여 Cloud Functions를 손쉽게 구성하고 관리할 수 있습니다.
주요 개념
서버리스 프레임워크에서 제공하는 주요 개념과 각 항목별 Cloud Functions와 연관 관계는 다음과 같습니다. 자세한 내용은 Serverless Framework Concepts에서 확인할 수 있습니다.
Functions
서버리스 프레임워크의 Function은 Cloud Functions의 액션과 동일합니다. 배포에 있어서 제일 가장 기본적인 단위이며, 보통 하나의 액션은 하나의 작업을 수행합니다.
Events
서버리스 프레임워크의 Event는 Function을 실행시키는 주체로서 Cloud Functions의 트리거와 동일합니다.
Services
서버리스 프레임워크의 조직 단위 또는 프로젝트 단위입니다. serverless.yml 파일에 Functions, Events 등 서비스에 필요한 내용들을 작성합니다.
구성 요소
Functions
배포/관리할 액션 정보를 정의합니다.
설정 | 설명 | 필수 여부 | 기본값 | 제약사항 |
---|---|---|---|---|
handler | 액션의 main 함수가 정의된 파일 이름과 함수 이름. <파일이름>.<함수이름> | O | - | - |
runtime | 액션의 런타임 | O | - | nodejs, python만 제공 |
name | 액션 이름 | X | <서비스명>-<스테이지>-<FUNCTION_KEY> | - |
memory | 액션 메모리 | X | 256 (MB) | 128, 256, 512 |
timeout | 액션이 실행될 수 있는 최대 시간 | X | 60000 (ms) | MIN 500 MAX 300000 |
- 예시
Packages
Cloud Functions는 액션을 관리하는 패키지 리소스를 제공합니다. 패키지를 지정하지 않을 수 있고 정의한 패키지가 없을 경우, 자동으로 생성됩니다.
명시적으로 패키지를 배포하고 액션에서 지정할 경우, resource/packages
에 배포할 패키지를 정의해야 합니다.
Events
배포/관리할 트리거 정보를 정의합니다. 배포 시, events 정보가 트리거 리소스로 변환됩니다. events가 지정된 액션의 플랫폼에 따라 트리거의 플랫폼이 결정됩니다.
Cron 트리거
Github 트리거
사용법
서버리스 프레임워크 CLI를 이용하여 빌드, 배포 등 명령어를 실행하는 방법을 설명합니다.
Package
서비스 구성을 클라우드 상에 배포하지 않고 파일로 패키징 합니다. 패키징 파일을 이용하여 형상 관리에 이용하거나 CI/CD 워크플로와 연동할 수 있습니다. Cloud Functions의 리소스 타입별로 3가지 파일이 생성됩니다.
- functions.json (액션)
- packages.json (패키지)
- triggers.json (트리거)
Deploy
serverless.yml 파일 내용에 변경이 있을 경우, 변경 사항을 클라우드에 배포합니다. 기본적으로 Package
과정을 포함하며, --package
옵션을 이용하면 별도 빌드 없이 기존 생성된 패키지를 배포할 수 있습니다.
Invoke
클라우드 상에 배포되어 있는 액션을 실행합니다. 실행 결과로 액션 코드 리턴 값을 출력하며 상세 실행 결과가 필요한 경우, verbose
옵션을 추가해야 합니다. 배포되지 않은 액션은 실행할 수 없습니다.
Logs
액션의 실행 이력과 결과를 조회합니다.
튜토리얼
서버리스 프레임워크에서 Cloud Functions 액션, 트리거를 구성하는 방법을 소개합니다. 각 구성 요소의 자세한 설명은 구성 요소를 참고해 주십시오.
환경 구성
서버리스 프레임워크 설치
- NPM을 이용하여 서버리스 프레임워크 패키지를 설치합니다.
- Serverless Framework v4 이상은 지원하지 않습니다.
- --global 또는 -g 옵션이 반드시 포함되어야 합니다.
- Node.js >= 16.0 이 필요합니다.
Ncloud SDK Crendentials 등록
serverless-navercloud는 ncloud-sdk를 이용합니다. 환경 변수에 NCLOUD_ACCESS_KEY
(또는 NCLOUD_ACCESS_KEY_ID
)와 NCLOUD_SECRET_KEY
(또는 NCLOUD_SECRET_ACCESS_KEY
)가 등록되어 있어야 합니다.
Service 생성
아래의 명령어를 통해서 sls-tutorial이라는 이름의 서비스 디렉토리를 생성합니다.
서비스 구성 파일인 serverless.yml
을 생성합니다. provider
와 plugins
을 다음과 같이 설정해야 합니다.
지원 region: gov
네이버 클라우드 플랫폼의 Cloud Functions를 구성할 수 있도록 serverless-navercloud 플러그인을 설치합니다.
서비스에서 참조할 액션 코드를 작성합니다.
액션 배포
serverless.yml에 정의된 액션을 Cloud Functions에 배포합니다. functions의 events 속성이 정의된 경우, Cloud Functions의 트리거도 배포되며 액션과 연결됩니다.
액션 실행
클라우드 상에서 액션을 실행할 수 있습니다.
액션 로그 확인
특정 액션의 실행 이력과 로그를 확인할 수 있습니다.
액션/트리거 구성 상세 예시
Cloud Functions에서 제공하는 다양한 타입들의 리소스를 serverless.yml에 등록하는 예시입니다.
아래 serverless.yml 예제에서 하기의 항목들은 사용자의 리소스 정보로 대체되어야 합니다.
- Github Trigger 외부 연결 주소 생성을 위한 productId, apiName, stageName
- Github Trigger의 Github Access Information
제약사항
- Serverless Framework v4 이상은 지원하지 않습니다.
- 액션 외부 연결 생성 지원하지 않습니다.
- Node.js, Python 런타임을 제공하며 추후 전체 런타임 지원 예정입니다.
- 로컬 디버그 기능은 지원하지 않습니다.