9부. Serverless Framework에서 제공하는 Dashboard 살펴보기

JeungJoo Lee
CrocusEnergy
Published in
5 min readOct 29, 2019

지난 편 ▶︎ 8부. Lambda 함수 하나로 운영과 개발을 같이 나누어 쓸 수 있다고?

이번 시간에는 Serverless Framework 에 Dashboard 기능을 살펴보도록 하겠다. test 라는 서비스를 하나 더 만들어서 간단한 메시지를 호출하는 람다 함수를 ap-northeast-1(일본)에 배포하였다. ap-northeast-2(서울) 이 아니라 왜 일본 Region 에 배포 했냐 하면 서울 Region 은 지원이 되지 않기 때문이다 ㅠ_ㅠ

https://serverless.com/framework/docs/dashboard/

아쉬운 마음을 뒤로하고 간단한 람다 함수를 가까운 일본 Region 에 배포 해보도록 하겠다.

test/serverless.yml

service: test
app: kstarlive
org: day34
provider:
name: aws
runtime: nodejs10.x
stage: dev
region: ap-northeast-1 # 일본리전
functions:
hello:
handler: handler.hello
events:
- http:
path: hello
method: get
cors: true

test/handler.js

module.exports.hello = async event => {
return {
statusCode: 200,
body: JSON.stringify({
message: 'Say Hello!',
}),
}
}

위의 코드를 토대로 일본 Region 에 아래와 같은 명령어로 배포하였다! 배포한 이후에 Serverless Dashboard 에 가서 Service 쪽에 보면 test 라는 서비스가 생긴것을 확인할 수 있다.

그렇다면 실제로 이 API Endpoint 를 호출 하면서 모니터링이 어떻게 되는지 확인 해보자. API Endpoint 주소는 API Gateway 스테이지로 가서 아래처럼 확인하면 된다.

Curl 로 실행하기

curl -X GET <https://lbsrdj1al6.execute-api.ap-northeast-1.amazonaws.com/dev/hello>

여러 번 실행 해보자~ 그리고 모니터링을 통해 몇 번이 호출 되었는 지 확인할 수 있다

더 재미 있는 것은 호출만 알 수 있는 것이 아니라 Cold Start 횟수도 알 수 있다. Cold Start 라는 것은 한동안 호출 되지 않았던 람다가 다시 Stage에 올라 오기까지의 시간을 말한다. 쓰이지도 않는 람다 함수를 AWS 입장에서 계속 Stage 에 올려 상주 시키는 것은 자원 적으로 큰 낭비이고 호출을 베이스로 과금을 하는 서비스이다 보니 아무래도 생길 수 밖에 없는 Side Effect 이다. 물론 Cold Start를 피할 수 있는 여러가지 방법이 존재한다.

아래와 같이 ColdStart 횟수도 확인 가능하다.

그 다음 람다 함수 코드에서 강제적으로 에러를 발생 시키도록 하고 다시 배포해 보도록 하자

test/handler.js

module.exports.hello = async event => {
throw "강제 에러 발생!"
return {
statusCode: 200,
body: JSON.stringify({
message: 'Say Hello!',
}),
}
}

배포가 완료되면 몇 번 호출 해보도록 하자. 아마 error message 가 request 할 때마다 나올 테고 Dashboard 에서는 해당 오류를 통계로 보여줄 것이다. 해당 에러는 람다와 api endpoint 에서 난 오류이다. api endpoint 만 에러를 발생시키기 위해선 response 되는 statusCode를 변경 해주면 된다. 어디까지나 이 과정은 테스트이다. 실제로 통계가 어떻게 보여 주는지 보기 위함이라는 것을 명심하자!~

그 외 Setting 에 보면 알림 기능이 있다. slack 이나 Amazon SNS 나 email 등 다양하게 지원되고 있다. 실제로 이 기능을 이용해 보고자 Setup 을 했는데도 작동이 되지 않아 이 부분은 Skip 하도록 하겠다.

다음 편에서는 Serverless 글의 마지막으로 Day34 가 Serverless Framework 을 이용해서 어떻게 구조화를 할 것 인지와 해당 Boilerplate 에 대한 소스를 Github 에 공유하고자 한다.

다음 편 ▶︎ 10부. Day34 Serverless 프로그램 구조잡기 예제

--

--