🔎 Serverless Framework?
All-in-one Development & monitoring of auto-scaling apps on AWS Lamda
![](https://velog.velcdn.com/images/jaehyeon23/post/4411d806-b25c-48c9-9053-d486fa7a5648/image.png)
장점
- AWS 서비스 생성, 수정, 삭제 시 AWS Console을 통해 일일이 환경을 설정해주지 않아도 된다
- 팀 단위로 서비스에 대한 AWS application을 관리해줄 수 있다. (배치, 람다, ... 등)
- 배포 전 간단한 명령어를 통해 테스트를 수행할 수 있다. (YAML 작성된 대로 배포했을 때 잘 동작될지에 대해)
💡 Serverless.yml
- AWS의 인프라와 Serverless Framework로 배포할 Lamda함수의 정보 및 설정을 담은 파일
- CloudFormation 문법 사용 가능(ex. aws:accountId 등)
- 다양한 Serverless Framework 플러그인 사용 가능
- ex) 500개 리소스 제한인 CloudFormation 스택을 Nested Stack으로 만들어주느 플러그인 등
💡 Serverless CLI
- deploy
- --config or -c: 설정 파일을 선택(기본 serverless.yml)
- --function or -f: 특정 함수만을 선택해서 업데이트
- --aws-profile: configure 되어있는 AWS 프로파일 설정
📌 실습 예제: 지진 알람 서비스
(출처: https://www.youtube.com/watch?v=b2mDxu27bxQ&t=132s)
![](https://velog.velcdn.com/images/jaehyeon23/post/c0eeccd2-9559-4152-80be-1267feebf9ec/image.png)
- 다수의 유저가 지진을 느낄 경우 DC인사이드 지진희 갤러리에 글을 게시
- 일정 주기로 갤러리를 크롤링하여 게시글 변동을 확인
- DC 인사이드 갤러리르 글 별로 인덱스가 부여됨
- 주기적으로 최신 글의 인덱스를 저장 후, 크롤링 시점의 최신 인덱스와 비교
- 크롤링한 최신 인덱스 - 기존 저장된 최신 인덱스 = 글 숫자
- 글 숫자가 N개 이상이라면, Amazon SNS를 통해 SMS 알림
💡 아키텍처
![](https://velog.velcdn.com/images/jaehyeon23/post/aca248d4-1746-447a-8c65-43d2d961a427/image.png)
💡 Amazon SNS
- 문자 메시지 발송은 특정 리전(US-East-1 등)만 가능(서울 리전에서는 불가능)
- Amazon SNS의 경우 자신을 제외한 다른 사람에게 문자 메시지를 보낼 경우 Sandbox 해제 필요
💡 AWS Lamda
- AWS Lamda의 크롤링은 Puppeteer를 활용
- 해당 예제에서는 로그인 등 정보 입력이 없지만, 실전이라면 정보 입력 등의 상황 발생 가능
- 추후 웹 UI 테스트 등에 활용 가능
- Puppeteer에서 Chromium 등을 활용하여 브라우저를 모방
- Amazon Eventbridge의 Cron 규칙을 활용해서 일정 단위로 Lamda 함수 호출
- Cron 식을 호출하여 오전 9시에서 오후 12시 까지만 호출
💡 Cron 표현식
- 일정 주기, 원하는 시간을 특정하기 위한 표현 식
![](https://velog.velcdn.com/images/jaehyeon23/post/84b880e3-9331-4011-81c2-7c481d68cc84/image.png)
💡 Puppeteer
- DevTool 프로토콜을 사용해 크롬 브라우저를 제어하는 Node 라이브러리
- 코드 형식으로 크롬 브라우저의 활동을 조종 가능
- Selector 형식으로 아이템을 선택하고 입력/클릭/출력 등 다양한 Action으로 진행
💡 Serverless Framework Local Invoke
- 로컬에서 Lamda 함수를 실행할 수 있는 명령어
Serverless invoke local --function functionName
- AWS 자격증명을 위한 설정 필요