유누킴

[AWS][Python] AWS Serverless Framework Chalice 사용하기 본문

Tech/Others

[AWS][Python] AWS Serverless Framework Chalice 사용하기

Yunhoo_kim 2019. 1. 28. 09:49
728x90

현재 초기 스타트업에서 서버 개발자 및 안드로이드 개발자로 일하면서 서버를 혼자 관리하는게 쉽지 않다.

최대한 서버를 가볍게 가져가기 위해서 MSA(Microservices Architecture)를 적용한다.

하지만 Netfilix처럼 관리 인원이 많은 회사에선 MSA 적용해서 전체적인 서버를 분산 처리 할 수 있지만, 초기 스타트업에서는 혼자서 많은 서버를 관리하기가 쉽지않다.

그래서 나는 AWS의 Serverless를 사용해서 최대한 관리하는 리소스 없이 코드를 실행하는 독립적인 서버를 생성해 서버 부하를 분산한다.

일단은 서버에서 부하를 가장 크게 줄일 수 있는 부분은 blocking call 이 들어가는 네트워크 콜, third party call 등이 있는데,

간단하게 이미지 업로딩 및 푸시 메세지, 이메일 전송이 있다.

그래서 Serverless를 통해서 이미지 서버와 api 서버를 분리시켰다.


1. Chalice 설치하기


pip install aws-cli
pip install chalice


2. aws-cli 를 설치한 뒤 aws credential을 설정한다.


$ mkdir ~/.aws
$ cat >> ~/.aws/config
[default]
aws_access_key_id=YOUR_ACCESS_KEY_HERE
aws_secret_access_key=YOUR_SECRET_ACCESS_KEY
region=YOUR_REGION (such as us-west-2, us-west-1, etc)


3. Chalice 앱 생성


chalice new-project 프로젝트이름


프로젝트를 만들면 아래와 같이 파일들이 생긴다.

app.py : 실제 앱을 소스코드를 작성하는 파일.

requirements.txt : 앱을 위해 필요한 의존성 패키지 목록.


__pycache__		app.py			requirements.txt


4. app.py 작성

from chalice import Chalice

app = Chalice(app_name='프로젝트 이름')

@app.route('/')
def index():
    return {'hello': 'world'}


5. 배포하기

chalice deploy

deploy를 실행하면 aws의 lambda와 api gateway를 바로 생성해 사용할 수 있는 url이 나온다.