분산된 엔터프라이즈 응용 프로그램의 상호 작용하는 소프트웨어 구성 요소는 여러 논리적 계층에 상주하는 것으로 표시될 수 있습니다. 이 계층은 소프트웨어 구성 요소가 제공하는 서비스의 특성에 따라 소프트웨어 구성 요소의 논리적/물리적 독립성을 나타냅니다.
다음 그림에서는 솔루션 구조의 논리적 계층 차원을 표시합니다.
대개 논리적 계층 구조는 그림 1–1의 분산된 엔터프라이즈 응용 프로그램 계층을 표현합니다. 인프라 서비스 수준에서 설명한 Java ES 시스템 서비스 구성 요소는 그림 2–4에 표시된 모든 논리적 계층에서 응용 프로그램 구성 요소를 지원합니다. 그러나 논리 계층 개념은 Messaging Server 및 Calendar Server 등의 응용 프로그램 수준 서비스를 제공하는 시스템 서비스 구성 요소에도 적용됩니다.
이 절에서는 그림 2–4에 표시된 네 가지 논리적 계층에 대해 간략하게 설명합니다. Java 2 Platform, Enterprise Edition( J2EETM 플랫폼) 구성 요소 모델을 사용하여 구현한 응용 프로그램 구성 요소를 설명합니다. 그러나 CORBA와 같은 다른 분산된 구성 요소 모델에서도 이 구조를 지원합니다.
클라이언트 계층. 클라이언트 계층은 최종 사용자가 사용자 인터페이스를 통해 직접 액세스하는 응용 프로그램 논리로 구성됩니다. 클라이언트 계층의 논리에는 브라우저 기반 클라이언트, 데스크탑 컴퓨터에서 실행하는 Java 구성 요소 또는 휴대용 장치에서 실행하는 Java 2 Platform, Micro Edition(J2METM 플랫폼) 모바일 클라이언트가 포함될 수 있습니다.
프리젠테이션 계층. 클라이언트 계층에 전달할 데이터를 준비하는 응용 프로그램 논리로 구성되며 백엔드 비즈니스 논리로 전달할 클라이언트 계층의 요청을 처리합니다. 표현 계층의 논리는 일반적으로다음과 같은 J2EE 구성 요소Java Servlet 구성 요소 또는HTML 또는 XML 포맷으로 전달하기 위해 데이터를 준비하거나 또는 처리를 위해 요청을 수신하는 JSP 구성 요소로 구성됩니다. 이 계층은 비즈니스 서비스 계층의 비즈니스 서비스에 대한 개인화되고 보안된 사용자 정의 액세스를 제공할 수 있는 포털 서비스를 포함할 수도 있습니다.
비즈니스 서비스 계층. 비즈니스 서비스 계층은 비즈니스 처리, 비즈니스 규칙 구현, 여러 사용자 조정, 외부 자원(예: 데이터베이스, 레거시 시스템) 관리 등과 같은 응용 프로그램 기본 기능을 수행하는 논리로 구성됩니다. 일반적으로 이 계층은 J2EE 분산 구성 요소 모델을 따르는 밀접하게 연결된 구성 요소(예: EJB구성 요소 또는 Message-Driven Bean으로 구성됩니다. 개별 J2EE 구성 요소를 어셈블하여 인벤토리 서비스 또는 세금 계산 서비스와 같은 복잡한 비즈니스 서비스를 전달할 수 있습니다. 개별 구성 요소 및 서비스 어셈블리를 서비스 지향 구조 모델 내에서 SOAP(Simple Object Access Protocol) 인터페이스 표준을 따르는 느슨하게 연결된 웹 서비스로 캡슐화할 수 있습니다. 또한, 비즈니스 서비스를 엔터프라이즈 Calendar Server 또는 메시징 서버와 같은 독립 실행형 서버로 빌드할 수 있습니다.
데이터 계층. 데이터 계층은 비즈니스 논리에서 사용하는 지속성 있는 데이터를 제공하는 서비스로 구성됩니다. 데이터는 데이터 관리 시스템에 저장된 응용 프로그램 데이터이거나 LDAP(Lightweight Directory Access Protocol) 데이터 저장소에 저장된 자원 및 디렉토리 정보일 수 있습니다. 또한 데이터 서비스에는 외부 소스에서 공급되는 데이터나 레거시 컴퓨팅 시스템에서 액세스 가능한 데이터가 포함될 수도 있습니다.
그림 2–4에 표시된 구조적 차원은 구성 요소의 논리적 및 물리적 독립성을 강조하며 개별적인 4개의 계층으로 표시합니다. 이 계층은 네트워크 환경에 있는 다양한 컴퓨터들에 대한 응용 프로그램 논리의 분할을 나타냅니다.
논리적 독립성. 구조 모델의 네 계층은 논리적 독립성을 나타냅니다. 한 계층(예: 비즈니스 서비스 계층)의 응용 프로그램 논리를 다른 계층의 논리와 관계 없이 수정할 수 있습니다. 표현 계층 또는 클라이언트 계층에서 논리를 변경하거나 업그레이드할 필요 없이 비즈니스 논리 구현을 변경할 수 있습니다. 예를 들어 이러한 독립성은 비즈니스 서비스 구성 요소를 변경할 필요 없이 새로운 유형의 클라이언트 구성 요소를 도입할 수 있음을 의미합니다.
물리적 독립성. 네 계층은 물리적 독립성을 나타내기도 합니다. 일반적으로 다른 하드웨어 플랫폼(즉, 상이한 프로세서 구성, 칩셋 및 운영 체제)에서 다른 계층에 논리를 배포할 수 있습니다. 이 독립성은 개별 컴퓨팅 요구 사항에 가장 적합하고 네트워크 대역폭을 최대화하는 데 가장 알맞은 컴퓨터에서 분산 응용 프로그램 구성 요소를 실행할 수 있도록 합니다.
응용 프로그램 구성 요소 또는 인프라 구성 요소를 하드웨어 환경(즉, 배포 구조)에 매핑하는 방법은 많은 요소에 의해 좌우되며, 해당 소프트웨어 솔루션의 크기 및 복잡도에 따라 다릅니다. 배포 규모가 매우 작은 경우 배포 구조에는 단지 몇 대의 컴퓨터만 포함될 수 있습니다. 배포 규모가 큰 경우 서로 다른 컴퓨터의 속도 및 파워, 네트워크 링크의 속도 및 대역폭, 보안 및 방화벽 고려사항, 고가용성 및 확장성을 위한 구성 요소 복제 전략 등과 같은 요소들이 하드웨어 환경에 대한 구성 요소 매핑을 위해 고려됩니다.
그림 2–3에 표시된 것처럼 Java ES 인프라 서비스 구성 요소는 분산된 소프트웨어 솔루션에 대한 기초 인프라 지원을 제공합니다. 그러나 이러한 솔루션 가운데 일부에는 Java ES 구성 요소에서 직접 제공하는 응용 프로그램 수준의 서비스가 포함됩니다. 이 솔루션에서는 논리 계층 설계 접근 방법을 사용합니다.
예를 들어 Messaging Server에서 제공하는 전자 메일 통신 서비스는 Messaging Server의 여러 논리적인 구성을 사용하여 구현됩니다. 이러한 특정 구성에서 각각의 특정 서비스 세트를 제공합니다. 다음 그림에 표시된 것처럼 메시징 솔루션 설계 시에 이러한 특정 구성이 서로 다른 논리 계층에 있는 개별 구성 요소로 표현됩니다.
그림 2–5는 완전한 논리적 구조를 나타내는 것은 아니며 여러 Java ES 구성 요소를 생략하여 단순화한 것입니다. 줄로 연결된 구성 요소는 상호 작용을 나타냅니다.
Messaging Server 기능을 상이한 계층으로 논리적으로 분할하면 Messaging Server의 논리적인 구성이 물리적 환경의 서로 다른 컴퓨터에 배포되도록 할 수 있습니다. 물리적인 분할을 통해 서비스 품질 요구 사항( 3차원: 서비스 품질 참조)을 충족시키기 위한 유연성이 허용됩니다. 예를 들어, 인스턴스마다 서로 다른 가용성 솔루션을 제공하며 Messaging Server 기능마다 서로 다른 보안 구현을 제공합니다.