• yundream
  • 2019-12-25 14:28:23
  • 2019-12-25 14:28:23
  • 17830

개요

사내에서 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 구성

  • Proxy Network에 Nexus 3 Proxy 서버를 둔다. 여기에서는 Public Maven Repository를 Proxy 한다.
  • Resource Network에 통합 Nexus 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 방식이라고 한다.) 두개 타입으로 구축된다.

  • 개발자가 spring boot 애플리케이션을 개발할 때 필요한 spring boot는 maven proxy를 통해서 cache된 spring boot 패미지를 다운로드 받는다.
  • 개발자가 프로젝트를 위해서 만든 패키지들은 Private nexus Repository에 저장한다.
굳이 이렇게 까지 해야 하나 ? 대부분의 경우에는 Resource Network에 Private Repository 정도를 구축하면 될 것이다. 하지만 금융산업과 같이 "망 분리"를 해야 하는 환경이라면 Proxy 모드를 고민해야 할 것이다.

... 계속