서버리스 프레임워크 사용을 위해 아래 준비가 필요
- aws, npm
Serverless: Zero-Friction Serverless Apps On AWS Lambda & Beyond.
Easily build auto-scaling, low-overhead applications on AWS Lambda, API Gateway, DynamoDB, and other managed services with the Serverless Framework.
www.serverless.com
서버리스 프레임워크는 말그대로 서버없이 서비스할 수 있는 도구이다.
구동방식은 serverless.yml 파일에 필요한 서비스들을 선언하고 배포하면 AWS CloudFormation에 의해 자동으로 생성/삭제된다.
사전 준비
서버리스 프레임워크는 nodejs, python, java, typescript 등 여러 언어들을 지원한다. 여기선 파이썬으로 진행해보려고 한다.
서버리스 프레임워크를 설치하기 위해선 npm & yarn이 필요하니 각자 편한 방식으로 설치하면 된다.
참고로 버전이 너무 높은 경우 serverless에 에러가 발생할 수도 있으니 안정화된 버전을 사용하는게 좋다. (LTS 버전 권장)
npm i serverless -g
글로벌로 serverless를 설치해주면 된다. 이후 serverless login로 로그인만해주면 된다.
Serverless project 생성
서버리스 프레임워크 설치 후 서버리스 프레임워크 프로젝트 생성을 해주면 된다.
프로젝트 생성 시 여러 템플릿을 지정해서 생성할 수 있다. sls create —template 명령어로 지원되는 템플릿을 확인할 수 있다.

기본 명령어로도 여러 옵션들을 지정해줄 수 있다. AWS / Python / Simple Function 으로 생성해보자
이후 프로젝트 이름을 지정해주면 서버리스 프레임워크 프로젝트가 생성된다.
❯ tree . ─╯
.
├── README.md
├── __pycache__
│ └── handler.cpython-312.pyc
├── handler.py
└── serverless.yml
서버리스 프레임워크 프로젝트의 구조이다. 서비스, 람다 등을 선언할 serverless.yml 파일과 구동할 람다 함수 handler.py가 생성된다.
# handler.py
import json
def hello(event, context):
body = {
"message": "Go Serverless v4.0! Your function executed successfully!"
}
return {"statusCode": 200, "body": json.dumps(body)}
# serverless.yml
# "service" is the name of this project. This will also be added to your AWS resource names.
service: hb-serverless-project
frameworkVersion: '4'
provider:
name: aws
runtime: python3.12
functions:
hello:
handler: handler.hello
provider에 aws로 지정해준다. 런타임 외에도 리전이나 role, 서버리스 프레임워크가 배포될 때 생성되는 s3 등 여러 옵션을 줄 수 있다.
functions에 명시한 함수 하나하나가 모두 람다이다. 람다 로직은 생성된 핸들러를 연결시킨다.
서버리스 프레임워크 배포
이제 생성된 서버리스 프로젝트를 배포해보자.
서버리스 프레임워크에선 생성한 람다 함수가 정상적으로 동작하는지 로컬에서 테스트하기 위한 기능을 제공한다.
sls invoke local --function {function-name}

serverless.yml의 functions 구문에 정의된 함수를 로컬에서 구동시켜보니, handeler.py가 실행되어 값이 리턴된걸 알 수 있다.
이제 aws 환경에 배포해보자
sls deploy (--stage dev) (--region ap-northeast-2) (-v)
배포할 때 환경, 리전 등을 지정해줄 수 있다.

위와 같이 cloudformation에 의해 serverless.yml에 선언된 서비스들이 생성된다.
이제 aws에 배포된 람다가 잘 배포됐는지 확인해보자 위에서 사용한 명령어에서 local만 빼면 된다.

서버리스 프레임워크 배포 삭제
sls remove --stage dev --region ap-northeast-2 -v
마찬가지로 삭제하는 과정도 cloudformation 스택을 삭제하는 것과 동일하다.
리소스들이 일괄로 삭제되기 때문에 추후에 중요한 리소스들은 삭제되지 않게 환경과 yml 파일을 잘 관리해야 한다.