serverless-stack
서버리스 스택(SST)은 서버리스 앱을 쉽게 구축할 수 있는 프레임워크라고 소개되어 있다.
2021-10-24
일 기준으로 현재 SST는 JavaScript, TypeScript, Python, Golang 및 C#을 지원하고 있다.
Language | CDK | Lambda |
---|---|---|
JavaScript | ✓ | ✓ |
TypeScript | ✓ | ✓ |
Go | Coming soon | ✓ |
Python | Coming soon | ✓ |
C# | Coming soon | ✓ |
F# | Coming soon | ✓ |
SST 프레임워크를 사용하면 앱에서 필요한 인프라스트럭쳐를 코드로(AWS CDK 사용) 정의하고, AWS Lambda 함수를 보다 간편하게 구성할 수 있다.
디자인 원리
SST는 몇가지 핵심 원리를 가지고 설계된 프레임워크이다.
- 점진적 공개
- 구조의 설정
- 권한 부여
- 제로베이스 구성
점진적 공개
서버리스 앱을 구축하기 위해 SST가 제공 하는 구성은 점진적 공개 라는 아이디어를 기반으로 한다.
기본 구성이 간단하고 이해하기 쉬우며 환경파악에 용이하며, 더 복잡한 사용 사례에 대해 점진적으로 사용자가 쉽게 지정할 수 있는 장점이 있다.
구조의 설정
Api Routes에 간단한 예시
1 | new Api(this, "Api", { |
이러한 형태는 정의한것을 쉽게 이해할 수 있다. 만약 커스텀한 함수 속성이 필요하다면 아래와 같이 추가할 수 있다.
1 | new Api(this, "Api", { |
권한 부여
SST는 attaching function을 통해 권한을 부여한다.
아래 cronjob 설정에 대한 예를 살펴보자
1 | const cron = new Cron(this, "Cron", { |
cronjob에 대한 접근권한을 부여에 대한 예시
1 | // cronjob 함수에 모든 접근권한 부여 |
제로베이스 구성
SST를 프레임워크가 탄생한 가장 큰 이유 중 하나는 서버리스 개발 환경이 항상 부족하다고 느꼈기 때문이라고 한다.
- 부족한 점
- Live Lambda Development 가 해결하려고 하는 긴밀한 피드백 루프가 부족
- 여러 플러그인, Webpack, Babel, TypeScript, 테스트 프레임워크, 린터 등을 구성해야 함
- 설정은 종종 깨지기 쉽고 최신 상태를 유지하기 위해 별도의 프로젝트 유지 관리자에 의존
위에 부족한 점들로 인해 Serverless 환경에 많은 경험이 있는 개인 개발자라면 괜찮겠지만 더 큰 팀의 일원이거나 이제 막 서버리스를 시작하는 경우 개발 환경을 시작하고 실행하는 것이 매우 어려운 점 발생한다.
SST의 설계 원칙 중 하나는 개발 환경이 기본적으로 작동하는지 확인하는 것이며, 구성이 거의 또는 전혀 필요하지 않는것이 핵심 원칙이다.
Quick Start
Node 환경에서 아래 명령어로 빠르게 SST 프로젝트를 생성할 수 있다.
1 | # Create your app |