메뉴

문서정보

개요

사내에서 Git, Docker Image Registry, Maven Repository, PyPI, Gem, YUM, DEB등의 저장소를 운영하려면 격리된 환경에 각 목적에 맞는 소프트웨어를 설치해서 운영해야 한다. 엄청나게 귀찮은 작업이 아닐 수 없다.

하지만 이런 저런 이유로 Private Repository 시스템을 구성이 필요한 경우가 있다. 금융 망 분리 환경은 아직은 변하지 않았고, 금융 망 분리 환경이 아니더라도 Private Repository 시스템은 필요 할 것이기 때문이다. 사내 자원을 저장하기 위한 Private Git Repository, Docker Image Registry 등의 수요는 앞으로도 계속 있을 것이다.

Nexus 3는 Pepository Manager Software로 20 개 이상의 저장소를 지원한다. Nexus를 이용해서 다양한 개발환경을 지원하는 통합 저장소를 구성해 보기로 했다.

 Nexus Repository OSS

설치

Docker로 설치했다. 실제 운영에는 패키지를 직접 설치하는 방법을 사용 할 수 있을 것이다.
# docker pull sonatype/nexus3
# docker run -d -p 8081:8081 --name nexus sonatype/nexus3 
설치 끝.. 여기에서는 세부적인 사용법을 설명하지는 않을 것이다. 몇 번 사용해보면 되니까. Spring boot 애플리케이션 개발을 위한 Private maven repository의 구성을 테스트해볼 것이다.

구조

Private maven repository의 구성은 아래와 같다.

 Private Repository 구성

Spring boot 애플리케이션을 개발한다고 가정해보자. 개발자는 인터넷에 직접 접근 할 수 없으므로 회사에서 제공하는 Maven Repository를 사용해야 한다. 이 Maven Repository에는 Spring boot 개발을 위한 모든 패키지들이 저장돼 있어야 한다. 안드로이드 애플리케이션 개발이 필요하다면 여기에 필요한 모든 패키지들을 업로드해야 할 것이다. 엄청난 노가다가 될 건데, Nexus의 Proxy 모드를 이용해서 노가다 작업을 효율화 할 수 있다.

Spring boot 애플리케이션을 개발한다면, 개발에 필요한 패키지들에 대한 수요를 받아서 Proxy Network 에서 패키지를 다운로드 한다. 이 작업은 관리자가 수행 할 것이다. 이때 자바 IDE가 바라보는 maven Repository를 Nexus Maven Proxy로 설정한다. 그러면 Nexus Maven Proxy는 public Maven Proxy로 부터 패키지들을 다운로드해서 Nexus 서버에 Cache를 한다.

Resource Network 에 Nexus Maven Repository는 Proxy와 Private Repository(Hosted 방식이라고 한다.) 두개 타입으로 구축된다.

굳이 이렇게 까지 해야 하나 ? 대부분의 경우에는 Resource Network에 Private Repository 정도를 구축하면 될 것이다. 하지만 금융산업과 같이 "망 분리"를 해야 하는 환경이라면 Proxy 모드를 고민해야 할 것이다.

... 계속