Serverless 프레임워크

박재현·2023년 6월 17일
0

🔎 Serverless Framework?

All-in-one Development & monitoring of auto-scaling apps on AWS Lamda

  • Serverless 아키텍처를 쉽게 구현할 수 있는 오픈 소스 프레임워크

    • AWS Lamda의 배포 및 관리
    • AWS Lamda 이벤트 타입이 HTTP일 경우 API Gateway 자동 생성
    • CloudFormation 기반 AWS 인프라 생성
  • YAML파일로 AWS Service의 실행 환경 등을 설정하여 배포
    (유사한 서비스로 AWS SAM(Serverless Application Model)이 있음)

장점

  • 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)

  • 다수의 유저가 지진을 느낄 경우 DC인사이드 지진희 갤러리에 글을 게시
  • 일정 주기로 갤러리를 크롤링하여 게시글 변동을 확인
    • DC 인사이드 갤러리르 글 별로 인덱스가 부여됨
    • 주기적으로 최신 글의 인덱스를 저장 후, 크롤링 시점의 최신 인덱스와 비교
      • 크롤링한 최신 인덱스 - 기존 저장된 최신 인덱스 = 글 숫자
    • 글 숫자가 N개 이상이라면, Amazon SNS를 통해 SMS 알림

💡 아키텍처

💡 Amazon SNS

  • 문자 메시지 발송은 특정 리전(US-East-1 등)만 가능(서울 리전에서는 불가능)
  • Amazon SNS의 경우 자신을 제외한 다른 사람에게 문자 메시지를 보낼 경우 Sandbox 해제 필요

💡 AWS Lamda

  • AWS Lamda의 크롤링은 Puppeteer를 활용
    • 해당 예제에서는 로그인 등 정보 입력이 없지만, 실전이라면 정보 입력 등의 상황 발생 가능
    • 추후 웹 UI 테스트 등에 활용 가능
  • Puppeteer에서 Chromium 등을 활용하여 브라우저를 모방
  • Amazon Eventbridge의 Cron 규칙을 활용해서 일정 단위로 Lamda 함수 호출
    • Cron 식을 호출하여 오전 9시에서 오후 12시 까지만 호출

💡 Cron 표현식

  • 일정 주기, 원하는 시간을 특정하기 위한 표현 식

💡 Puppeteer

  • DevTool 프로토콜을 사용해 크롬 브라우저를 제어하는 Node 라이브러리
    • 코드 형식으로 크롬 브라우저의 활동을 조종 가능
  • Selector 형식으로 아이템을 선택하고 입력/클릭/출력 등 다양한 Action으로 진행

💡 Serverless Framework Local Invoke

  • 로컬에서 Lamda 함수를 실행할 수 있는 명령어
  • Serverless invoke local --function functionName
  • AWS 자격증명을 위한 설정 필요

0개의 댓글

관련 채용 정보