최근 Python을 주 언어로 하는 프로젝트를 완료하고, 진행 중 정리를 해야겠다는 내용을 오늘에서야 정리합니다.
개인적으로 약 20년 넘게 개발을 하면서, 프로젝트의 특성에 따라 적절한 개발 언어, 기술, 그리고 툴을 선택 또는 학습하고 진행하고 있습니다.(C/C++,C#, JAVA, Javascript, Python, PHP, Solidity etc)
하지만, 언제 부터인지는 기억이 나지 않지만(개인적인 경험에는 java가 처음이었던 것 기억됨), 최근 언어마다 다양한 pakage manager가 지원되고 있어, 협업을 위해서 패키지 관리자 부분도 프로젝트 초기에 가볍게(?) 이야기 되고 있습니다. 그래서, 간단하게 해당 내용을 정리하였습니다.
1. Pakage manager란?
- 프로그래밍 언어적인 측면에서는 프로젝트(개발)의 환경을 쉽게 만들어주고, 편리하게 관리하기 위한 도구라고 보면됩니다. (이러한 도구(?)가 없다면, 프로젝트 시작전에 각 모듈의 유효한 dependecy등을 수작업으로 해주어야 함)
- 시스템 어드민 측면에서는 시스템에 패키지(소프트웨어)의 다운로드, 설치 그리고 관리를 의미하였습니다.
2. 각 언어별 Pakage manager
1) Java - Maven, Gradle 이 있지만, 현재는 Maven이 주를 이루고 있음
2) JavaScript - npm
3) C# - nuget
4) C/C++ - vcpkg(https://choiwonwoo.tistory.com/entry/vcpkg-Please-install-the-English-language-pack?category=267468)
5) PHP - Composer
6) Python - pip, pypi, poetry
3. OS 별 Pakage manager
1) Mac: Homebrew
2) Debian: dbpkg, apt
3) Redhat: rpm, yum
4) Window: winget(https://docs.microsoft.com/ko-kr/windows/package-manager/winget/)
4. 정리
- 아주 초기에는 일일이 라이브러리를 다운받아 설치를 하여, 테스트하고 패스등의 설정을 하였지만, 근래 개발에서는 가능한 패키지 관리자를 통해서, 일관되게 관리 하여 생산성과 효율을 높이고자 합니다. 하지만, 너무 편해지다 보면 기초적인 라이브러리의 설정을 어려워하는 쥬니어 개발자를 가끔 보게 되면서 놀라곤 합니다. 아주 가끔은 한땀, 한땀 설정및 빌드를 하면서 테스트 코드 및 library version dependency 문제등을 경험하다 보면, 예상치 못한 가치와 경험이 쌓이곤합니다.