본문 바로가기
DevOps/Architecture

Serverless아키텍쳐 구성6 - 서버리스 프레임워크 사용

by 카프리썬 2020. 3. 27.
728x90

지금까지 AWS Console로 Serverless 아키텍쳐 구성해서 웹어플리케이션 구축했다. ▼

2020.03.22 - [AWS] [Serverless] 클라우드 컴퓨팅1 - 서버리스 배경(Iaas/Paas/Saas/Faas)

2020.03.23 - [AWS] [Serverless] 클라우드 컴퓨팅2 - 3티어/서버리스아키텍쳐 비교

2020.03.24 - [AWS][Serverless] 클라우드 컴퓨팅3 - Lambda(람다)& API Gateway

2020.03.25 - [AWS] [Serverless] 클라우드 컴퓨팅4 - Lambda(람다) 특징 및 한계

2020.03.26 - [AWS][Serverless] 클라우드 컴퓨팅5 - 서버리스 웹애플리케이션구축

2020.03.27 - [AWS] [Serverless] 클라우드 컴퓨팅6 - 서버리스 프레임워크 사용 (현재글)

 

하지만, 코드를 작성하는 건 둘째치고, 한번 코드를 업로드하고 배포하는데까지 너무 많은 절차가 필요

그래서 직접 aws콘솔에 들어가서 코드를 수정하고 배포를 해야함.

코드 한줄을 수정하더라도 다시 첨부해서 파일을 업로드해야함.

그리고 함수단위라서 종속적이라면 코드 두개를 동시에 다시 업로드해야함.

 

쉽게 배포를 하는 방법은 없을까? 서버리스 프레임워크 사용

 

1. 서버리스 프레임워크

Serverless Application을 보다 쉽게 구현하기 위해 사용하는 도구

AWS나 다른 클라우드 서비스에 서버리스 아키텍쳐 빌드 자동화(AWS CloudFormation)

Serverless Framework : 오픈소스 프레임워크

 

2. 사용하기 전 준비사항

1) IAM 생성

access key id  & secret access key 기록

2) Node.js npm 설치

  1. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
  2. . ~/.nvm/nvm.sh
  3. nvm install node
  4. node-v : 설치버전확인
  5. node -e "console.log('Running Node.js ' + process.version)" : 콘솔테스트

 

 

 

 

 

3. serverless 모듈 설치

1) 디렉토리생성 : mkdir serverless
2)
모듈설치 : npm install –g serverless

3) 템플릿 종류확인

개발언어에 따라서 다양한 템플릿존재(nodejs/python둘다 가능)

Python, nodejs 언어지원하는 템플릿 존재 확인

4) 파이썬 버전의 템플릿 설치 :  serverless create –template aws-python3

추가) Nodejs 사용하는 템플릿 : serverless create –template aws-nodejs

템플릿을 설치하면 만들어지는 디렉토리 구조

4. AWS 계정 설정

이제 내가 가지고 있는 AWS사용자로 접속해서 이 OS에 접근가능

serverless config credentials --provider aws --key {Key ID} --secret {Secret Key}

 

5. 템플릿 코드변경

이게 서버리스 프레임워크를 사용하는 목적

즉, AWS콘솔에서 하던 작업들 모두 '코드'로 할 수 있다.

 

1) Serverelss.yml : 배포할 설정파일

  • Service : 서비스명
  • Provider : 배포할 방식 (name : Aws, runtime : 파이썬버전)
    디폴트가 버지니아라서 추가로 서비스할 리전(ap-northeast-2) 넣기
  • Function : 실행할 함수
  • handler.hello : handler.py 파일에서 hello 함수 호출하라는 의미
    지금 http로 통신하는 방식으로 이벤트 처리함
    그리고 클라이언트가 들어오는 path method 설정
  • Events : Client가 들어올 이벤트
    API 게이트웨이에서 지정한 Method와 들어오는 request URL의 path지정

service, provider 확인
function, 핸들러 : handler.py에서 hello라는 함수로 run한다

2) handler.py : 실제로 구동하는 파이썬코드

hello라는 함수명

http의 상태코드랑, body에 들어갈 내용을 response로 리턴함

 

 

 

 

 

6. 배포하기

Serverless deploy

내부적으로 CloudFormation이 생성되서 AWS 콘솔에서 자동화된 작업 확인가능

 

(추가)

* 서버리스 빌드하는 과정에서 발생하는 로그확인하기

Serverless logs --function 함수명

(ATOM으로 ssh원격접속하여 코드 수정하는 경우 실시간으로 변경사항 적용이 안될 수 있음)

 

* 로컬 서버에서 함수 호출하기
serverless invoke local --function
함수명

 

참고

https://greatjoy.tistory.com/44

 

[AWS ec2] Node.js 설치하기

[AWS ec2] Node.js 설치하기 AWS linux ec2에서 node.js를 설치하는 방법은 아래와 같다. 1. SSH를 이용하여 Linux 인스턴스에 접속한다. 2. nvm 설치 curl -o- https://raw.githubusercontent.com/creationix/nvm..

greatjoy.tistory.com

https://woochan-dev.tistory.com/5

 

aws ec2 linux(리눅스)에 빠르게 node.js(노드) 설치하기

git clone으로 tar파일 받아서 make하면서 장시간 기다리는 뻘짓을 반복하다가 쉬운 방법을 찾아서 공유합니다. 순서대로 커맨드를 입력하세요. $ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0...

woochan-dev.tistory.com

 

반응형