▼▼▼ 지금까지 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 설치
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
- . ~/.nvm/nvm.sh
- nvm install node
- node-v : 설치버전확인
- node -e "console.log('Running Node.js ' + process.version)" : 콘솔테스트
3. serverless 모듈 설치
1) 디렉토리생성 : mkdir serverless
2) 모듈설치 : npm install –g serverless
3) 템플릿 종류확인
개발언어에 따라서 다양한 템플릿존재(nodejs/python둘다 가능)
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지정
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
https://woochan-dev.tistory.com/5
'🌴 DevOps > Architecture' 카테고리의 다른 글
Serverless아키텍쳐 구성5 - 챗봇 애플리케이션구축 (0) | 2020.03.26 |
---|---|
Serverless아키텍쳐 구성4 - Lambda(람다) 특징 및 한계 (0) | 2020.03.25 |
Serverless아키텍쳐 구성3 - Lambda(람다)& API Gateway (0) | 2020.03.24 |
Serverless아키텍쳐 구성2 - 3티어/서버리스아키텍쳐 비교 (0) | 2020.03.23 |
Serverless아키텍쳐 구성1 - 서버리스 배경(Iaas/Paas/Saas/Faas) (0) | 2020.03.22 |
3tier아키텍쳐 구성9 - 전체 요약 및 총정리 (0) | 2020.02.24 |