AWS에서 Python 애플리케이션을 개발하고 배포하려면 몇 가지 필수 도구를 먼저 준비해야 합니다. 이 글에서는 Elastic Beanstalk(EB) 환경을 기준으로 Python 개발 환경을 구축하는 전체 과정을 단계별로 살펴봅니다.
1. 사전 준비 사항
Python 개발 환경을 설정하기 위해서는 다음 도구들이 시스템에 설치되어 있어야 합니다.
- Python – 개발에 사용할 인터프리터
- pip – Python 패키지 관리자
- virtualenv – 독립적인 가상 환경 생성 도구
- AWS EB CLI – Elastic Beanstalk 명령줄 인터페이스
- SSH 클라이언트 – EC2 인스턴스 원격 접속용
설치 방법은 AWS 공식 문서(EB CLI 설치 가이드)를 참고하면 됩니다.
2. 가상 환경(Virtual Environment) 생성
모든 도구가 준비되었다면, 전역 패키지가 오염되지 않도록 프로젝트별 가상 환경을 만드는 것이 좋습니다. 다음 명령어로 가상 환경을 생성합니다.
$ virtualenv -p python2.7 /tmp/hello-world
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in /tmp/hello-world/bin/python2.7
Also creating executable in /tmp/hello-world/bin/python
Installing setuptools, pip...done.
가상 환경 생성이 완료되면, 해당 환경의 bin 디렉터리에 있는 activate 스크립트를 실행하여 활성화합니다. 예를 들어 앞서 만든 hello-world 환경을 시작하려면 다음과 같이 입력합니다.
$ . /tmp/hello-world/bin/activate
한 번 생성된 가상 환경은 언제든지 activate 스크립트를 다시 실행하여 재사용할 수 있습니다.
3. requirements.txt 파일 작성
애플리케이션을 배포용으로 구성하려면, 가상 환경이 활성화된 상태에서 프로젝트 최상위 디렉터리로 이동한 뒤 requirements.txt 파일을 생성해야 합니다. 이 파일에는 앱이 사용하는 서드파티 모듈과 버전 정보를 기록합니다.
Flask==0.8
Jinja2==2.6
Werkzeug==0.8.3
certifi==0.0.8
chardet==1.0.1
...
일일이 목록을 작성하기 어렵다면, pip의 freeze 기능을 사용해 현재 머신에 설치된 모든 패키지를 자동으로 추출할 수 있습니다.
$ pip freeze >requirements.txt
이렇게 하면 AWS가 개발·테스트에 사용한 것과 동일한 패키지 및 버전으로 애플리케이션의 Python 환경을 그대로 복제할 수 있습니다.
4. EB CLI 초기화(eb init)
이제 eb init 명령어로 AWS EB CLI 저장소를 구성합니다.
$ eb init -p python2.7 hello-world
Application hello-world has been created.
이 명령은 hello-world라는 새 애플리케이션을 생성하고, 로컬 저장소가 최신 Python 2.7 플랫폼 구성으로 환경을 만들도록 설정합니다.
이후 SSH로 애플리케이션이 실행 중인 EC2 인스턴스에 접속할 수 있도록 기본 키페어(keypair)를 구성하려면 eb init을 한 번 더 실행합니다.
$ eb init
Do you want to set up SSH for your instances?
(y/n): y
Select a keypair.
1) my-keypair
2) [ Create new KeyPair ]
기존 키페어가 있다면 선택하고, 없으면 안내에 따라 새로 생성합니다. 프롬프트가 나타나지 않거나 나중에 설정을 변경해야 하는 경우에는 eb init -i 옵션을 사용하세요.
5. 환경 생성 및 애플리케이션 배포(eb create)
마지막으로 eb create 명령어로 환경을 만들고 애플리케이션을 배포합니다.
$ eb create hello-env
이 명령은 hello-env라는 이름의 로드 밸런싱이 적용된 Elastic Beanstalk 환경을 생성합니다.
마무리
여기까지 진행하면 AWS에서 Python 애플리케이션을 개발·배포할 수 있는 환경이 완성됩니다. 진행 중 문제가 발생한다면 AWS 공식 문서(Python Django 배포 가이드)에서 더 자세한 내용을 확인할 수 있습니다.