2010-01-05 3 views
2

모범 사례 질문 - Java로 구조화 된 매우 큰 웹 사이트는 어떻습니까?매우 큰 Java EE 웹 사이트는 어떻게 구조화되어 있습니까?

나는 배치 자체가 구조화되는 방법을 아는에 관심이 있어요 -

몇 가지 가능한 답 :

  • 하나의 귀를 -와/ 전쟁 구성 사이에 공유 세션 없이?
  • 복수 전쟁 - 세션 공유가 있거나 없습니까?
  • 배포 시간에 하나의 커다란 War 으로 조립되는 복수 모듈 ?

문서화 된 모범 사례가 있습니까?

+0

답변에 만족하지 못하셨습니까? –

답변

1

"매우 큰 웹 사이트"라고 말하면 너무 많은 모듈과 하위 모듈이있는 웹 사이트라고 가정합니다. 트래픽이 많은 사이트가 아닙니다. 교통량이 많은 사이트에서 체포 된 경우 다른 질문을 다시 말하고 게시하거나 업데이트하십시오.

여러 개의 EAR/WAR를 모듈화하여 보관하십시오. 이 모듈을 사용하면 모듈 인터페이스가 변경되지 않는 한 각 모듈이 다른 모듈과 독립적으로 발전 할 수 있습니다. 인터페이스가 변경되면 종속 모듈도 업데이트해야합니다. 웹 사이트는 아니지만 그러한 예 중 하나는 Eclipse IDE입니다. 각각의 모듈은 독립적으로 개발되고 유지 관리되며 자체 버전이 있습니다. 웹 사이트 모듈을 사용하면 별도의 시스템/서버에 개별 모듈을 배치 할 수 있으므로 개별적으로 확장 할 수 있습니다.

EAR의/WAR를 통한 세션 공유는 좋지 않은 아이디어로 간주됩니다. 그것은 서버를위한 너무 많은 작업입니다. 또한 전역 변수처럼 디버깅하기 어려운 버그를 도입 할 수 있습니다. 그러나 각 모듈에 대해 사용자가 몇 번이고 다시 로그인하는 것은 정말 안좋은 일입니다. 이를 위해 "SSO (Single Sign On)"솔루션을 구현해야합니다. 예를 들어 www.google.com, www.gmail.com, www.orkut.com 등은 모두 Google 서비스이며 각 서비스는 개별 모듈과 같습니다. 그러나 서비스 중 하나에 로그인하고 로그 아웃하지 않고 다른 모듈을 열면 자동으로 로그인됩니다.

하나의 커다란 전쟁으로 모여 든 모듈 모듈은 좋지 않습니다. 일년에 한 번 모든 모듈 함께 배포되고 (단 하나의 WAR가 아닌 개별적으로) 이름을 지정하십시오. 비슷한 일식 볼 수 있습니다. Eclipse는 각 개별 모듈에 대한 시간 업데이트를 제공하지만 1 년에 모든 모듈이 업그레이드되는 주요 릴리즈 (유로파, 가니메데, 갈릴레오 ...)가 있습니다.

모든 응용 프로그램이 다르며 요구 사항이 다릅니다. 개발중인 웹 사이트에 따라 대형 웹 사이트에 대한 구체적인 모범 사례는 없습니다. 예를 들어 세션 공유가 좋은 방법은 아니지만 비즈니스 요구 사항으로 인해 그렇게 할 수 있습니다. 또는 일부 대체 방법을 사용하여 모듈간에 정보를 공유 할 수 있습니다.

2

데이터를 찾을 수 있다면 각각의 예가있을 것이라고 생각합니다.

일관되게 뒤 따르는 "우수 사례"가 있다는 것을 나는 모른다.

가장 큰 관심사는 세션 공유 및 배포로 보입니다. 그것이 어떻게 수행되었는지에 관계없이, 나는 세션 데이터가 최소화되어야하고, WAR들 사이에서 공유되어야한다고 말하고 싶습니다. 아뇨. 데이터 소유자 한 명주세요. 공유하면 단일 유스 케이스의 기능을 여러 모듈에 분산 시켰습니다. 언젠가는 슬픔으로 이어질 것입니다.

패키징이 진행되는 동안 패키지가 커질수록 변경 사항에 더 많은 코드가 영향을받습니다. 무언가를 두 개의 독립적 인 WAR로 파티션 할 수 있다면, 다른 WAR를 변경하지 않고 변경할 수 있습니다. 유지 관리가 더 좋습니다.

관련 문제