행복한 아빠

Docker로 파이썬 배포 운영하기 본문

Docker

Docker로 파이썬 배포 운영하기

행복한아빠 2016. 9. 22. 19:54

파이썬으로 개발을 하고 보니 운영서버 배포에 대한 고민이 생겼습니다. 물론 Java로 할 경우도 운영서버 구성이 번거롭기는 마찬가지이지만 파이썬을 위한 운영서버는 할 게 더 많네요.

지인의 추천으로 도커를 사용하기로 했습니다.


운영서버 구성

우리의 운영서버(WAS)는 다음과 같은 소프트웨어가 설치 되어야 합니다.
  • Python3, PIP
  • MySQL Lib
  • 파이썬 모듈들...
  • uWSGI 설치 및 구성
  • NginX 설치 및 구성
  • 소스 받기 위한 Git
  • 그리고 우리의 애플리케이션
이것들 설치 가이드 작성해 보니 꽤 길고 실제 설치하는데 넘 오래 걸립니다. 문제는 WAS를 여러 대 띄울라면 이 재미 없는 작업을 매번! 해 줘야 하네요.

간단한 배포/운영 방법

설치 가이드 잘 작성해 놓고 각 서버마다 필요한 소프트웨어 설치하고 Git을 통하여 소스만 pull 하는 방식입니다.

구성은 쉽지만 앞에 이야기 한 것처럼 서버가 늘어날 때마다 왠 종일 걸리는 설치작업을 계속 해줘야 합니다. 모듈 추가 같은 환경변화라도 있으면 서버마다 또 해야 하고 서버가 동일한 환경을 가지게 유지하기가 쉽지 않을 것 같습니다.


VM 이미지를 이용?

우리는 AWS를 이용합니다. AWS에는 VM의 이미지를 만들고 그 이미지로 인스턴스를 구동하는 방법을 제공합니다.
한 서버에 필요한 소프트웨어와 우리의 애플리케이션을 설치하고 그 이미지를 만들어 인스턴스를 만드는 방법도 가능할 것 같습니다.

언뜻 보면 훌륭한 방법인 것 같은데 배포할 때마다 저 큰 이미지를 만들고 인스턴스를 새로 생성한다는 것이 부담입니다.

소스코드 한 줄 바꿨다고 저 짓 하기는 망설여지네요.

그리고 이전 버전의 인스턴스(서버)는 날려야하니 인스턴스 관리도 좀 그렇습니다.

그리고 배포때마다 이미지가 생겨야 하는데 VM 이미지 용량도 그렇고 엄청난 양의 이미지가 생기겠네요.



Docker를 이용한 배포/운영

역시 이런 경우 도커를 이용한 방법이 최고입니다. 


  1. 개발자가 소스를 push 합니다.
  2. 빌드서버는 새로운 소스와 환경으로 빌드를 하고 테스트/확인 후 도커 이미지를 빌드합니다.
  3. 빌드서버는 도커 이미지를 private docker repositoy에 push 합니다.
  4. 빌드서버는 각 운영서버에 새로운 이미지로 다시 가동하라고 합니다.
  5. 각 운영서버들은 기존 컨테이너를 지우고 이미지를 다시 받아 새로운 버전을 가동합니다.
  • 소스형상관리: Gitlab
  • 운영서버: CoreOS (도커를 위한 경량 OS 정도로 생각하세요)
  • Private Docker Repository : Docker Repository or Nexus Repository Manager
  • Build Server : docker-py 모듈로 운영서버 원격 배포 모듈 대충 작성
도커로 운영하면 보통 이 정도로 관리할 것으로 예상되고 우리 규모에서 이 정도면 충분하다고 판단되어 이렇게 구성합니다만....

실제 배포하다보니 또 다른 문제가 발생합니다. 이런 도커 이미지가 너무 커 배포가 넘 느리다는...

그래서 "파이썬 Docker 이미지 관리하기" 부분에서 다시 정리합니다.






'Docker' 카테고리의 다른 글

파이썬 Docker 이미지 관리하기  (1) 2016.09.22
Docker로 파이썬 배포 운영하기  (0) 2016.09.22
0 Comments
댓글쓰기 폼