Search

Poetry를 이용한 멀티 프로젝트 Python 애플리케이션 개발 방법

Poetry를 이용한 멀티 프로젝트 Python 애플리케이션 개발 방법

Lycorp 기술 블로그 글은 Poetry를 사용하여 Python의 멀티 프로젝트 애플리케이션을 구성하고 관리하는 방법에 대해 설명하고 있습니다. 글의 주요 내용을 요약하면 다음과 같습니다:

1. Poetry와 멀티 프로젝트

Python 프로젝트에서 Poetry는 의존성 관리와 패키지 배포를 간소화하는 도구입니다.
멀티 프로젝트 환경에서는 모놀리틱 구조(한 코드베이스에 모든 기능 포함)보다, 각 프로젝트를 독립적인 모듈이나 패키지로 분리하는 방식이 선호됩니다.
이를 통해 각 프로젝트가 별도의 의존성을 관리할 수 있고, 재사용성과 테스트 용이성이 높아집니다.

2. 구성 방법

프로젝트 디렉토리 구조

멀티 프로젝트 구조를 설정하기 위해 다음과 같은 디렉토리 구성을 제안합니다:
my-app/ ├── pyproject.toml # 루트 설정 파일 ├── project-a/ # 첫 번째 프로젝트 │ ├── pyproject.toml │ └── ... ├── project-b/ # 두 번째 프로젝트 │ ├── pyproject.toml │ └── ... └── shared-library/ # 공유 라이브러리 ├── pyproject.toml └── ...
Plain Text
복사

주요 포인트:

1.
각 서브 프로젝트(예: project-a, project-b)와 공유 라이브러리(shared-library)는 독립적인 Poetry 프로젝트로 관리됩니다.
2.
루트 디렉토리에는 전체 프로젝트를 관리하는 pyproject.toml 파일이 존재합니다.

3. Poetry를 사용한 서브 프로젝트 간 참조

멀티 프로젝트 환경에서는 한 프로젝트가 다른 프로젝트를 참조하는 경우가 빈번합니다.
이를 관리하기 위해 path dependency 기능을 활용합니다.
예를 들어, project-ashared-library를 참조하려면, project-a/pyproject.toml에 다음과 같이 설정합니다:
ool.poetry.dependencies] shared-library = { path = "../shared-library" }
TOML
복사

4. 개발 워크플로

설치: 루트 디렉토리에서 poetry install을 실행하면, 모든 서브 프로젝트와 의존성이 설치됩니다.
테스트: 각 프로젝트는 독립적으로 테스트할 수 있으며, 전체 프로젝트 수준에서도 통합 테스트를 수행할 수 있습니다.
빌드 및 배포: 서브 프로젝트별로 패키지를 빌드하거나, 루트 프로젝트로 통합 배포를 진행할 수 있습니다.

5. CI/CD에서의 활용

멀티 프로젝트의 CI/CD에서는 각 서브 프로젝트에 대해 분리된 테스트배포 파이프라인을 구성하는 것이 일반적입니다.
예를 들어, GitHub Actions를 사용해 프로젝트별로 워크플로를 정의하거나, 전체 프로젝트를 테스트 및 배포하는 방식을 조합할 수 있습니다.

6. 장점과 유의점

장점:

프로젝트 간 모듈화와 의존성 관리가 간편해집니다.
프로젝트별 독립적인 개발이 가능하며, 특정 모듈만 수정하거나 배포할 수 있습니다.

유의점:

초기 구성 및 디렉토리 설정이 다소 복잡할 수 있습니다.
각 프로젝트의 pyproject.toml 파일을 정확히 관리해야 합니다.

결론

Poetry를 사용하여 멀티 프로젝트 애플리케이션을 관리하면, 대규모 프로젝트에서 유지보수성, 재사용성, 효율성을 크게 향상시킬 수 있습니다. 이를 통해 Python 애플리케이션 개발을 체계적으로 관리하는 방법을 도입할 수 있습니다.