타사 라이브러리를 소스 제어에 저장해야 할까요?

소프트웨어 프로젝트에서 타사 라이브러리를 관리하는 것은 종종 줄타기를 하는 느낌이 들 수 있습니다. 한쪽에서는 애플리케이션이 기능을 계속 유지하도록 하고 싶지만, 다른 한쪽에서는 무거운 라이브러리 파일로 버전 관리 저장소를 부풀리는 것을 피하고 싶습니다. 이 딜레마는 많은 개발자들에게 공통적입니다: 애플리케이션이 의존하는 라이브러리를 소스 제어에 저장해야 할까요? 이 상황을 처리하는 방법의 장단점을 살펴보고 모범 사례에 대해 논의해보겠습니다.

딜레마 이해하기

애플리케이션을 개발할 때 외부 라이브러리에 대한 의존성은 거의 피할 수 없습니다. 그러나 이러한 라이브러리를 버전 관리 시스템에 포함시키는 것에는 몇 가지 질문이 따릅니다:

  • 크기 문제: 많은 라이브러리, 특히 광범위한 기능을 포함하는 경우, 상당히 클 수 있습니다 — 가끔은 애플리케이션 전체보다 클 수도 있습니다.
  • 버전 관리 문제: 애플리케이션이 필요한 라이브러리의 버전을 추적하는 것이 복잡해지며, 빌드 간의 불일치 가능성을 초래할 수 있습니다.
  • 장기 유지 관리: 10년 후에 애플리케이션을 참조해야 한다면, 모든 필요한 구성 요소가 쉽게 이용 가능하다는 것을 어떻게 보장할 수 있습니까?

이러한 문제들은 많은 개발자들이 소스 제어의 맥락에서 타사 라이브러리를 저장하는 최선의 관행이 무엇인지 묻게 만듭니다.

권장 사항

1. 필요한 모든 것 저장하기

가장 간단한 방법 중 하나는 프로젝트를 빌드하는 데 필요한 모든 것을 저장하는 것입니다. 이 방법은 미래의 여러분(또는 다른 개발자들)이 마지막으로 빌드될 당시와 정확히 동일한 프로젝트를 복제할 수 있도록 보장합니다. 다음 사항을 고려해보세요:

  • 전체 배포판 포함: 일부 개발자들은 타사 라이브러리의 전체 zip 배포판을 저장할 것을 권장합니다. 이는 프로젝트가 올바르게 실행되기 위해 필요한 모든 파일을 포함하여, 라이브러리의 향후 이용 불가능에 대비합니다.
  • 장기적인 계획: 10년 후에 프로젝트를 빌드해야 한다고 상상해 보세요. 필요한 것은 무엇인가요? 나중에 골치 아프지 않도록 지금 그 의존성을 저장하세요.

2. 현대적 의존성 관리 도구 활용하기

2017년부터 의존성 관리에 관한 환경은 크게 변화했습니다. 라이브러리를 수동으로 관리하는 대신, 이 프로세스를 간소화하는 특수 도구를 사용하는 것을 고려하세요:

  • 의존성 관리 서버 사용: Maven이나 Gradle과 같은 현대적 빌드 도구를 사용하고 있다면, 의존성 관리 서버를 설정하는 것이 중요합니다. 인기 있는 옵션은 다음과 같습니다:

이러한 서비스들은 불필요한 비대화 없이 의존성을 조직적으로 관리할 수 있도록 도와줍니다.

3. 정기적인 백업 및 유지 관리

어떤 방법을 선택하든 강력한 백업 시스템을 확보하는 것이 중요합니다. 주요 사항은 다음과 같습니다:

  • 버전 관리 백업: 의존성이 저장된 저장소를 포함하여, 여러분의 저장소를 일관되게 백업하세요.
  • 이전 의존성 유지: 의존성 관리 도구를 신중하게 선택하세요. 향후 필요한 경우 되돌릴 수 있도록 이전 버전을 보존해야 합니다.

결론

타사 라이브러리 관리는 모든 개발자가 탐색해야 하는 균형 잡기입니다. 대규모 라이브러리를 소스 제어에 직접 저장하는 것은 귀찮아 보일 수 있지만, 이는 미래의 빌드를 위해 필요한 모든 것이 있음을 보장합니다. 반면, 의존성 관리 시스템을 통해 보다 현대적인 접근 방식을 채택하면 작업 흐름을 간소화하고 더 깔끔한 저장소를 유지할 수 있습니다.

요약하자면:

  • 장기 빌드에 필요한 것을 저장하세요.
  • 의존성 관리를 위한 현대적 도구를 고려하세요.
  • 항상 백업하고 이전 버전을 보존하세요.

이 가이드라인을 따르면, 여러분은 타사 라이브러리를 자신 있게 관리하고 프로젝트를 장기적인 성공을 위해 준비할 수 있습니다.