maven-2 repository - Maven Repo에 Nexus 또는 Artifactory를 사용해야합니까?




documentation oss (11)

대규모 빌드 프로세스 (> 100 개 모듈)에 Maven을 사용하고 있습니다. 우리는 소스 컨트롤에 외부 종속성을 저장하고이를 사용하여 로컬 repo를 업데이트했습니다.

그러나 우리는 모든 타사를 사전에 다운로드 할 필요가 없도록 중앙 집중식으로 캐시 할 수있는 로컬 저장소로 졸업 할 준비가되어 있습니다 (하지만 여전히 로컬 저장소를 사용할 수는 있습니다). 또한 야간 빌드의 내부 빌드 아티팩트를 게시하여 개발자가 세상을 만들 필요가 없도록하고 싶습니다.

Nexus와 Artifactory를 고려 중입니다. 다른 하나를 선호하는 이유는 무엇입니까? 우리가 고려해야 할 다른 것들이 있습니까?


Answers

Artifcatory 사용이 일반적으로 평평하게 유지되는 동안 Nexus 사용이 증가하는 것을 볼 수 있습니다.

사진은 http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/ 에서 가져옵니다.

매트릭스 비교 http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix


Artifactory는 파일 시스템 및 데이터베이스 스토리지 백엔드를 모두 지원 합니다 . 저장소는 체크섬 기반이며 동일 바이너리는 repo에 표시되는 횟수에 관계없이 단 한 번만 저장되므로 Artifactory를보다 효율적으로 저장소로 만들 수 있습니다. 이 아키텍처 덕분에 이동 및 복사도 매우 저렴합니다 (Nexus에는 이동 / 복사를위한 REST가 없습니다. 파일 시스템에서 물건을 이동 한 다음 저장소에서 수정 된 작업을 실행하여 내용이 변경되었음을 알립니다).

또 다른 중요한 차별화 요소는 Artifactory가 배포 된 아티팩트, 해결 된 종속성 및 빌드 실행과 관련된 환경 데이터에 대한 정보를 캡처하기위한 Hudson 및 TeamCity와의 고유 한 통합 기능을 갖추고있어 완전한 빌드 추적 기능을 제공합니다.


Artifactory를 사용해야합니다. 최신 버전은 실제 점프였습니다. 저장소를 점진적으로 백업 할 수 있습니다. 즉, 모든 유물을 저장하고 유지할 수 있습니다. 웹 UI를 사용하기 쉽고 설치하기 쉽습니다. 많은 것을 즐겼습니다. 그것의 새로운 버전 2.0 밖으로


Artifactory는 데이터베이스에 아티팩트를 저장합니다. 즉, 문제가 발생하면 모든 아티팩트가 사라집니다. Nexus는 귀중한 아티팩트에 플랫 파일을 사용하므로 모두 잃어버린 것에 대해 걱정할 필요가 없습니다.


Artifactory와 Nexus는 비슷한 기능 집합을 가지고 있지만 Artifactory의 LDAP 지원은 Nexus보다 매력적입니다. Nexus에도 LDAP가 지원되지만 유료 버전 :-(


" mvn deploy "의 바이너리 저장에 관해서 만 이야기한다면 두 가지 모두 괜찮을 것이라고 확신합니다.

우리는 모든 업그레이드 과정에서 Artifactory를 매우 광범위하게 사용합니다. 많은 프로젝트, 많은 스냅 샷 배포 및 외부 repos proxied. 하나의 문제는 아닙니다. 다른 사람들이 DB, 색인 또는 다른 어떤 문제를 어떻게 경험하는지 설명하기가 어렵습니다. 그런 일은 우리에게 아무 일도 없었습니다. 또한 Artifactory는 디스크에 데이터를 저장하고 메타 데이터를 저장하기 위해 DB 만 사용하므로 매우 유연합니다 ( 자세한 내용은 여기 참조 ).

이러한 응용 프로그램을 매우 다른 용도로 만드는 것은 다른 빌드 도구 및 기술과의 통합에 대한 접근 방식입니다. Nexus와 Sonatype은 Maven과 m2eclipse에서 잠겨 있습니다. 그들은 다른 것을 무시하고 최근에는 독점적 인 허드슨 통합 작업을 시작했습니다 ( Maven 3 웹 세미나 참조). 편집 : 이것은 2017 년부터 더 이상 사실이 아닙니다. Nexus는 다른 빌드 도구를 훨씬 더 크게 지원합니다. 편집 끝

Artifactory는 멋진 Hudson, TeamCity 및 Bamboo 통합Gradle / Ivy 지원을 제공합니다. 따라서 Nexus는 Sonatype "comfort zone"(Maven, m2eclipse)에서 벗어나기 만하면 아무 것도 제공하지 않지만 Artifactory는 모든 주요 제작 도구를 채택하고 공동 작업합니다.

사실, 허드슨으로부터 빌드 아티팩트를 배포 할 수있는 것은, " mvn deploy "가 아니라, " mvn deploy "가 아니라, 큰 차이가 있습니다. Artifactory Hudson 플러그인은 빌드 작업이 끝날 때만 한 번 에 모든 아티팩트 원자 적으로 배포합니다 성공적으로 " mvn deploy "는 각 모듈 다음에 실행되며 빌드 작업이 중간에 실패하면 부분적인 아티팩트 세트를 배포 할 수 있습니다. 모듈 완료시 Maven에서 배포하고 작업 완료시 빌드 서버에서 배포하는 것은 정말 나쁜 일입니다.

알 수 있듯이, Artifactory는 "상자 밖"이라고 생각하지만 Nexus는 "상자 내부"라고 생각하고 Maven 및 Maven 유물에만 관심이 있습니다.

Artifactory를보다 쉽게 ​​사용할 수있게 해주는 또 다른 요소는 클라우드 기반 Artifactory Online 솔루션 입니다. 한 달에 약 80 달러에 대해 Artifactory 인스턴스가 있으며, 서버를 위해 전용 서버가 필요하지 않습니다.

Artifactory에는 간단하고 직접적인 REST API가 있으며 Nexus에서 작동하는 방식을 알지 못합니다. Nexus 에는 쉽게 사용할 수 있는 REST API 도 있습니다.

요약하면 Maven 아티팩트의 기본 저장을 위해 두 가지 모두 괜찮다고 생각합니다. 그러나 Nexus가 엄격하게 "Maven 저장소 관리자"가되는 동안, Artifactory는 어떤 빌드 도구와 CI 서버에서든 어떤 종류의 바이너리 파일이라도 일반적으로 "바이너리 저장소"가됩니다.


학습자의 관점에서 필자는 두 사람 사이의 몇 가지 구체적인 차이점을 주목한다.

  1. Sonatype .war 배포는 당시 Jboss 응용 프로그램 서버에서 지원되지 않지만 Tomcat에서 실행됩니다.
  2. Sonatype은 현재 Amazon Machine Image (AMI)를 제공하지 않고 있으며, 신속하게 일어 서서 테스트 할 수 있습니다.
  3. Artifactory AMI는 Bitnami에서 제공하며 몇 분만 기다려야하고 구성하는 데 몇 분이 걸립니다. 달성하려는 목표에 따라 수십 분이 걸릴 수도 있습니다.
  4. Artifactory는 SaaS 버전의 Artifactory를 클라우드에 제공하므로 인프라가 아닌 일을 처리하는 데 집중할 수 있습니다.
  5. Nexus에 대한 경험이 없지만 처음에는 Artifactory를 매우 직관적이고 쉽게 구성 할 수있었습니다.
  6. 덧붙여서 - 숙련 된 프로에게는 괜찮을지도 모르는 Artifactory User Guide가 깊이있는 설명을 좀 더 밝히고 있습니다. 예를 들어, 시작, 하나의 압축을 푼 다음 저장소를 추가합니다. 예를 들어 RedHat의 Jboss EAP Enterprise Repo를 말하십시오. 모든 것이 잘되었지만 가져온 아티팩트를 보려고 시도했을 때 Artifactory가 0 개의 아티팩트를보고 했습니까? 오류나 경고가 없으므로 지금 설명을 찾고 있습니다. 이것은 정상인가 아닌가? doco에서 간단한 설명을하면 올바른 방향을 가리킬 수 있습니다. 훌륭한 기고자이기 때문에 다른 선발의 이익을 위해 프로젝트에 이러한 주석을 추가하고 있습니다.

흠 ... 인공물에 대한 나의 경험은 끔찍하다.하지만 나는 상대적으로 초보자 다. 내 전반적인 불만은 최근에 Artifactory에 업로드 된 jar 파일이 즉시 인덱싱되지 않는 것 같고 몇 시간 동안과 같이 강제로 적용 할 수있는 좋은 방법이 아닌 것 같습니다. 나는 그들이 일해야만하는 것처럼 보이는 다양한 것들을 시도했지만, 그렇지 않았다. 나는 m2eclipse로 작업 중이며, ant에서 변환하는 프로젝트에 종속성을 추가합니다. 방금 artifactory에 추가 한 항아리를 추가하려고하면 선택기에 선택 항목으로 나타나기를 기대하지만 그렇게하지는 않습니다.

직장 동료가 넥서스를 설치했다는 말을하고 지금까지는 좋아하지만 ... 아직 보증 할 수는 없습니다. IT 부서에서 저를 찾을 수있게 되 자마자 리눅스 상자에 설치하려고합니다.


둘 중 하나의 "프로"기능 (예 : 스테이징 레포지, 유물 프로모션, NuGet)이 필요한 경우 웹 사이트에 표시되는 다양한 가격 모델을 고려해야합니다.

요약하자면:

  • Artifactory Pro
    • 당신 은 서버 당 지불한다.
    • 서비스 시간 연장을 위해 더 많은 금액을 지불 할 수 있습니다.
  • Nexus Pro
    • 좌석 당 비용을 지불합니다. 즉, 아티팩트를 다운로드하는 개발자 수
    • 지원 서비스는 월 - 금 0800-2000 동부 표준시, 당신이 뭘 지불 상관없이

사용자 수에 관계없이 Nexus Pro는 Artifactory의 7,450 달러 / 년 "Silver Value Pack"과 동일한 수준의 지원 서비스를 제공합니다.

$ 7,450 / 연으로 약 67 개의 넥서스 프로 좌석 (1-50 @ $ 108, 나머지 @ $ 120)을 구매할 수 있습니다.

혼자서 가격과 지원을받는다면 Nexus Pro는 67 명의 사용자가 될 때까지 의미가 있습니다.이 시점에서 Artifactory는 더 저렴한 옵션이됩니다.

사내에서 모든 지원을하고 있다면 그러나 마술 포인트는 약 23 명입니다 (Artifactory의 가장 기본적인 지원은 2,750 달러 / 년입니다).


Artifactory 2와 Nexus 1.3에 대한 연구를했습니다. 내가 찾은 주요 차이점을 여기에 열거 해 놓았습니다.

  • Artifactory는 메타 데이터와 선택적으로 DB에 파일을 저장하며 Nexus는 파일 시스템에 직접 씁니다. 찬성이있다. 단점. 각 접근법에 대해. DB는 트랜잭션을 지원하지만 FS 저장 파일은 직접 액세스 할 수 있습니다.
  • Artifactory는 디스크 공간 특히 시스템 요구 사항이 높습니다.
  • Artifactory에는 LDAP가 지원되며 Nexus에는 유료 버전 만 있습니다. 반면 Nexus 용 무료 LDAP 플러그인은 Google 코드에서 사용할 수 있습니다.

가장 완벽한 비교 : http://binary-repositories-comparison.github.io/


이것이 Artifactory vs. Nexus의 NuGet 지원을 비교 한 마지막 사례입니다 (면책 조항 - 저는 JFrog에 있습니다).

  1. Artifactory에서 NuGet 지원은 자연스럽게 제품에 통합되어 관리가 훨씬 쉬워졌습니다. 로컬 저장소를 NuGet을 사용하도록 설정하거나 원격 저장소의 원격 URL을 설정하기 만하면됩니다. 여러 개의 NuGet 저장소는 Artifactory의 다른 저장소와 함께 사용되는 단일 가상 NuGet 저장소 아래에서 쉽게 집계 될 수 있습니다. Nexus에서는 새로운 유형의 저장소를 정의하고 새로운 전용 보안 영역을 설정해야하며 NuGet 요청에도 응답 할 수있는 기존 저장소가 필요한 경우 특수한 외관을 추가해야합니다. 이것은 새로운 유형의 저장소 (예 : P2)에 여러 수준의 구성 변경이 필요한 Nexus의 일반적인 접근 방식입니다.

  2. Nexus UI에는 NuGet 패키지가 전혀 통합되어 있지 않습니다. 관리 및 유지 관리에서 중요한 NUGet 아티팩트도 검색 할 수 없습니다 (Visual Studio에서만 검색하는 것만으로는 충분하지 않습니다). 이것은 넥서스가 Maven과 Maven 레이아웃에 대해 높은 지향점을 가지고 있기 때문입니다. Artifactory에서는 다른 아티팩트와 마찬가지로 NuGet 패키지를 검색하고 관리 할 수 ​​있습니다. UI 의 nuspec 메타 데이터 에서 정보를 확인하고 NuPkg 패키지의 개별 파일 내용을 자세히 살펴보고 내용을 검사 할 수도 있습니다.

  3. Artifactory에서도 보안 통합이 더 쉽습니다. 수동으로 특수 키를 생성 할 필요는 없지만 핵심은 사용자 이름과 암호 또는 보안 암호의 조합입니다. 사용자 NuGet 암호를 Artifactory의 MS-AD / LDAP 통합과 동기화하려면이 기능이 유용합니다. Nexus에서는 NuGet이 격리 된 보안 영역을 사용합니다.

  4. Artifactory는 난해하지만 유용한 유스 케이스를 포함하여 NuGet 검색의 전체 범위를 구현하며 기본 구현은 메모리 내 캐시와 영구적 인 사전 계산 된 검색 가능 속성의 조합을 사용하여 NuGet 쿼리가 매우 빠르고 확장 가능한지 확인합니다 심지어 거대한 저장소를 위해; Nexus가 유사한 최적화를 사용하는지 잘 모르겠습니다.

도움이되기를 바랍니다.

추신. NuGet 지원은 Artifactory의 Pro 버전에 속하며 2014 년 9 월 이후 Nexus OSS에서 무료로 제공됩니다.





maven-2 nexus artifactory