3부. Serverless Framework 소개 및 개발 환경 설치

JeungJoo Lee
CrocusEnergy
Published in
6 min readOct 26, 2019

지난 편 ▶︎ 2부. 기존 개발 방법에 대한 문제점 및 개선 방안

서버리스 홈페이지를 들어가면 첫 화면을 보면 이 Framework이 어떠한 일을 해주는 지 한번에 이해가 된다. 사람에 따라서 다를 수 있지만… -ㅇ-

좌측 콘솔창 이미지를 보면 serverless.yml 이라는 파일 안에 정의된 function handler, runtime 과 events 인 http path와 method를 설정한다. 그리고 중앙 콘솔에서 CLI 를 입력했을 때 배포가 되고 우측 화면 Dashboard 에서 사용량이나 배포된 API 들을 확인할 수 있다는 것을 알게 된다.

정말 외쿡 사람들은 대단하다.. 한 화면에 자신들이 무엇을 제공하는지 이해 시키니 말이다..

Serverless Framework 의 컨셉

위에서 말한 소개 부분이 사실 Framework 에 컨셉이긴 하지만 부연 설명을 하자면 serverless.yml 야믈 파일에 정의된 옵션이 Deploy 를 하면 CloudFormation 에서 yml 을 기준으로 파바바박~ 만들어준다. 지난 1편에서 봤던 아키텍처에서 덧붙이자면 아래와 같은 그림이라고 머릿속으로 생각하면 편할 듯 싶다.

위의 그림이 적절할 진 모르겠으나 yml 에 정의된 옵션들이 아래 CLI 한방으로 다 알아서 Deploy를 해준다.

> sls deploy

너무 혁신 적이지 않는가 ? 더불어 아래와 같은 IaaS Vendor (Azure, AWS, CloudFare, Google 등)들을 다양하게 지원하고 있으니 말이다. 대단쓰~

그리고 가장 중요한 Pricing 정책을 살펴보자.

기본적으로 CLI는 무료 오픈 소스이다. 그리고 Serverless Framework 에서 사용 되는 플러그 인들도 Github에 등록되어 있고 당연하지만 무료이다.

유료 정책으로 Serverless Framework 부가 기능이 있는데 Dashboard 하고 Alert 메시지 등이다. 뭐 이러한 기능이 있으면 좋지만 없어도 상관없기에 이 Framework을 사용하기로 선정하였다.

물론 이와 같은 다른 Framework도 존재하긴 한다 이름이 뭐였더라…-ㅇ-? TerraForm 이였던 것 같다. 저자가 결정적으로 사용하게 된 계기는 대기업 S사 C 솔루션에서 사용된 Serverless Framework 이라고 하기에 일단 간략한 리서치만 하고 사용하였다! 왜냐하면 그들은 우리보다 Man Power 가 크고 도입하기 위해 사용 가능한지를 많이 분석했을 것이고 검증이 되었다는 뜻이기도 해서 말이다!

Serverless Framework 개발 환경 설치

개발 환경은 특별히 설치해야 할 것들이 많지는 않았다. 기본적으로 NodeJS 6 버전 이상이 설치 되어 있어야 한다. 참고로 저자의 NodeJS 버전은 10 버전 최신이다.

저자의 현재 Node JS 버전

아래와 같이 global로 serverless 를 설치하자.

# Install the serverless cli
npm install -g serverless
# Or, update the serverless cli from a previous version
npm update -g serverless

설치 후 Serverless Framework 에서 제공하는 Dashboard 로 연결을 하는 과정이 필요한데 아래와 같이 명령어를 쳐보자

serverless login

그럼 다음과 같이 브라우저가 열리고 해당 대시보드 쪽으로 연결이 된다. 만약 계정이 없다면 Github 로그인을 지원하고 있으니 간편하게 가입 가능하다.

대시보드 화면은 꽤나 간단하다. 현재 저자의 화면에는 kstarlive 라는 기존에 만든 App 이 존재하지만 처음 만든 사람이라면 아무것도 존재하지 않을 것이다.

해당 앱은 어플리케이션 성격에 맞게 만들면 될 것이고 중요한 부분은 [profiles] 탭이다.

Profiles 설정

프로파일은 실제 AWS 를 Cloud Formation 을 통해서 Lambda, API G/W, Cloud Front 등 Execution 을 할 수 있는 역할/권한을 부여할 수있는 IAM 을 맵핑하여 저장하는 곳이라 생각하면 될 것이다.

기존에 IAM 에서 만든 serverless-enterprise_day34 role 의 arn 이다. [Create a role wizard] 를 통해 간편하게 AWS IAM 을 만들 거나 기존에 있던 role의 arn을 복사하여 사용할 수 있다.

Serverless Framework CLI 작업을 하기 위해 IAM 역할의 각 정책 Permission 이 필요함. Wizard 를 이용하면 간편하게 만들 수 있음. 본인의 계정의 역할을 사용해도 무방하다

Team 설정

Team의 경우 같이 app 을 개발할 수 있는 동료 개발자를 추가할 수 있는데 무료 버전 에선 up to 3 명 까지이다. 물론 이 부분은 CLI 만 사용해서 개발할 경우 문제는 없고 Dashboard 에서 작업하고 같이 프로젝트를 Share 하는 경우 3명까지 제한이라 크게 신경 쓸 건 아니라고 본다.

현재는 우리 34일의 훌륭한 동료 개발자들인 모도리님과 우종님을 추가한 상황이다. 우종님은 아직 초대를 수락하지 않은 것 같다 -ㅇ-…

자 이제 개발할 준비가 완료되었다!! 정말 심플 하지 않은가? 다음 편에서는 실제 sample 프로젝트를 생성해서 개발하는 과정을 본격적으로 소개하도록 하겠다!

다음 편 ▶︎ 4부. 처음부터 끝까지 CRUD 만들어 보기 (1)

--

--