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-a가 shared-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 애플리케이션 개발을 체계적으로 관리하는 방법을 도입할 수 있습니다.