1990년대 초, 파이썬이 처음 배포되었을 때는 인터프리터에 스크립트를 지정해 파이썬 애플리케이션을 실행했다. 파이썬 프로젝트의 패키지, 릴리즈, 배포와 관련된 모든 것은 이렇다 할 표준 없이 수동으로 처리했으며, 종속성 설치 방법을 설명하는 장황한 README 파일을 갖고 있었다.

규모가 큰 프로젝트는 데비안 패키지, 레드햇 리눅스 배포판의 RPM 패키지, 또는 윈도우의 MSI 패키지 같은 시스템 패키징 도구를 사용해서 릴리즈했다. 이런 프로젝트의 파이썬 모듈은 모두 파이썬이 설치된 site-packages 디렉터리에 들어가며, C 확장이 있다면 컴파일 단계 후에 설치된다.

파이썬 패키징 생태계는 이후로 많은 발전을 이루었다. 1998년, 파이썬 프로젝트를 설치 가능한 배포판으로 만들어주는 Distutils 가 표준 라이브러리에 추가되었으며, 파이썬 프로젝트의 패키징, 릴리즈, 배포 방법을 향상시키기 위한 새로운 도구가 연이어 등장하기 시작했다.

9장에서는 마이크로서비스에서 사용할 수 있는 최근의 파이썬 패키징 도구 사용법을 알아본다.

“패키징이 일상적인 업무에 어떻게 도움을 줄 수 있는가?”는 또 다른 뜨거운 주제이다. 마이크로서비스 기반의 소프트웨어를 개발할 때는 많은 유동적인 부분을 다뤄야 한다. 특정 마이크로서비스에서만 작업할 때는 3장에서 설명한 TDD와 모방하기(mocking) 접근법을 사용해서 많은 시간을 절약할 수 있다.

하지만 좀 더 현실에 맞는 테스트를 할 때는 각 서비스들을 활용해야 한다. 이렇게 하려면 단일 머신에서 전체 서비스를 쉽게 실행할 수 있어야 한다. 테스트할 때마다 새 버전의 마이크로서비스를 재설치해야 한다면 개발 과정이 지루할 수밖에 없다.

어떻게 하면 전체 서비스를 올바르게 설치해서 개발할 수 있을까?

애플리케이션을 사용하려면 모든 마이크로서비스를 실행해야 한다. Runnerly의 경우 6개의 마이크로서비스를 모두 실행해야 하는데, 이를 위해 6개의 shell을 각각 열어야 하는 상황은 어느 누구라도 피하고 싶을 것이다.

9장에서는 패키징 도구를 활용해 동일 환경에서 모든 마이크로서비스를 실행하는 방법을 알아본다. 다음으로 전용 프로세스 매니저(process manager)를 사용해 단일 커맨드라인 인터페이스로 모두를 실행하는 방법도 살펴본다.

먼저 프로젝트를 어떻게 패키징하는지, 도구는 어떤 것을 사용해야 하는지부터 알아보자.