2010-06-17 3 views
1

우리는 계속 논쟁을 벌이고 있습니다.토론 : 타사 라이브러리를 전쟁에 추가하는 것이 좋은 생각입니까?

a. 웹 앱을 조립하는 "표준"방식. 모든 응용 프로그램 아티팩트가있는 WAR를 생성하고 hibernate 및 memcached 등의 다른 모든 구성 요소는 tomcat/shared/lib 영역에 배포됩니다.

b. 포함 된 모든 내용과 tomcat/shared/lib의 내용은 모두 엄청난 전쟁을 만듭니다.

장점 - 모듈화가 유지되고 전쟁이 적습니다. 특히 배포 프로세스에서 공유/lib에 대한 종속성을 관리해야한다는 단점이 있습니다.

장점 - 모든 종속성은 빌드 프로세스에서 제어되어 오류가있는 공간을 제거합니다. b 전쟁에 대한 단점은 정말로, 정말로 큽니다. 대규모 팜에 네트워크를 통해 배포하는 경우 영향을 미칠 수 있습니다.

다른 사람들이 어떤 생각을 갖고 있는지 알고 싶습니다.

답변

1

사실, 난 B 내가 B 거의 모든 시간을 선택

:-) "표준"방법이라고 생각했다. 많은 사람들이 자바 애플리케이션 서버를 관리하는 기술을 가지고 있지 않은 고객들에게 더 간단합니다. 그들은 내가 말하는 곳으로 WAR를 드롭 만하면됩니다.

또한 빌드와 배포에서 잘 작동합니다. WAR는 maven을 사용하여 빌드되므로 필요한 모든 종속성이 포함되며 cargo 플러그인을 사용하여 QA 앱 서버에 배포 할 수도 있습니다.

최대 절전 모드 나 다른 종속성이 필요한 여러 웹 응용 프로그램이 있지만 버전이 다르면 "WAR-hell"을 피할 수도 있습니다.

내가 앱 서버를 완벽하게 제어 할 수있을 때만 A를 선택하고 webapp 당 공통 라이브러리를 복제하는 오버 헤드가 엄청나게 큽니다. 또는 모든 앱이 동일한 버전으로 테스트되도록 보장 할 수 있습니다. 의존성의. 그런 다음 종속성을 앱 서버의 공유 영역으로 안전하게 옮길 수 있다는 것을 알고 있습니다.

+0

흥미 롭습니다. 우리는 서버를 완전히 통제하고 있습니다. 당신은 좋은 점을 만들었지 만, 서로 다른 웹 응용 프로그램에서 동일한 구성 요소의 여러 버전을 사용하지 않으려 고합니다. ops/mgmt 관점에서 바람직한 목표가 아닙니까? 필자는 일상적으로 여러 가지 버전의 XML 파서를 찾는 것이므로 낙심하지 않은 이유가 없습니다. –

+1

나는 당신과 동의한다 - 만약 당신이 앱과 서버를 통제하고 있다면, 제 3 자 라이브러리 버전의 컨버전스를 위해 노력해야한다. 나는 이것으로 많은 도움이되는 maven을 사용한다. 그렇다고하더라도 배포 문제가 아닌 버전 관리 문제로 간주됩니다. 모든 응용 프로그램이 동일한 lib 버전으로 테스트 되었기 때문에 lib를 공유 할 수 있지만 버전 관리가 먼저 공유 라이브러리를 사용할 수있는 길을 열어야합니다. – mdma

+0

그래, 나는 동의한다. Maven을 사용하여 관리합니다. 그러나 단일 전쟁으로 옮겨 가려는 생각이 조금 있지만 우리는 변화의 가치가 있는지 토론하고 다른 사람들이 보았을 수도있는 혜택이 있는지를 토론하고 있습니다. –

관련 문제