개념: 분배 패턴
주제
프로세서 및 장치는 노드의 공통 스테레오타입니다.
현재 많은 장치가 자체 CPU를 포함하고 있기 때문에
둘 사이의 차이를 평가하기가 힘들어 보일 수도 있습니다.
그러나 프로세서와 장치의 차이는 그 위에서 실행되는 소프트웨어 유형에
달려 있습니다.
프로세서는 명백하게 전개되는 시스템용으로 작성된 프로그램/소프트웨어를 실행합니다.
프로세서는 컴퓨팅 성능, 메모리 및 실행 성능을 가지는
다목적 컴퓨팅 장치입니다.
장치는 장치 자체의 기능을 제어하는 작성된 소프트웨어를 실행합니다.
일반적으로 장치는 장치를 제어하는 프로세서에 연결됩니다.
장치는 보통 임베드된 소프트웨어를 실행하고 다목적 프로그램을 실행할 수 없습니다.
일반적으로 장치의 기능은 장치 드라이버 소프트웨어를 통해 제어됩니다.
시스템의 기능성 및 어플리케이션 유형에 따라 전형적인 분배 패턴이
시스템에 다양하게 있습니다. 많은 경우, 분배 패턴을 사용하여 이것 뿐만 아니라 더 많은 것을 포함하는
전체 구조에서 시스템 '구조'를 설명합니다.
예를 들어, 단지 구조의 분배 측면만 있는 경우에도 시스템은 종종 '클라이언트-서버 구조'가
있는 것으로 설명됩니다. 이는 시스템 분배 측면 및 시스템 분배가 다른 구조 결정에
영향을 주는 범위의 중요성을 강조합니다.
아래 설명된 분배 패턴은 일부 시스템 특성, 성능 특성 및 프로세스 구조를 내포합니다.
이들 모두는 일부 문제점을 해결하지만 고유한 어려움 또한 발생시킵니다.
이른바 "클라이언트/서버 구조"에는
클라이언트 및 서버라고 하는
특수화된 네트워크 프로세스 노드가 있습니다.
클라이언트는 서버에서 제공되는 서비스의 소비자입니다.
대개 클라이언트는 단일 사용자를 서비스하고
일반 사용자 프리젠테이션 서비스(GUI)를 처리하는 반면
서버는 보통 동시에 여러 클라이언트에게 서비스를 제공합니다.
제공되는 서비스는 일반적으로 데이터베이스, 보안 또는 인쇄 서비스입니다.
이러한 시스템의 "어플리케이션 논리" 또는
비즈니스 논리가 일반적으로 클라이언트 및 서버 모두에
분배됩니다. 비즈니스 논리의 분배를 어플리케이션 분할이라고 합니다.
다음 그림에서 클라이언트 A는 서버에 있는 대부분의 어플리케이션
논리와 함께 2층 구조의 예를 표시합니다.
클라이언트 B는 비즈니스 객체 서버에서 구현된 비즈니스 서비스를 포함한
전형적인 3층 구조를 표시합니다.
클라이언트 C는 전형적인 웹 기반 어플리케이션입니다.

클라이언트-서버 구조의 변형
전통적인 클라이언트/서버 시스템에서
대부분의 비즈니스 논리는 클라이언트에서 구현되지만,
서버에 저장된 데이터에 빈번히 액세스하는 기능과 같은
일부 기능은 서버에 위치하는 것이 더 적합합니다.
이를 수행하면 대부분의 경우 매우 고가인 네트워크 트래픽을
감소시킬 수 있습니다(이는 크기 순서이거나 프로세스 간 의사소통보다 느림).
다음과 같은 일부 특성이 있습니다.
- 시스템은 몇몇 다른 유형의 클라이언트로 구성될 수 있습니다.
예를 들면, 다음을 포함합니다.
- 클라이언트 및 서버는 CORBA/IDL 또는 RPC) 기술과 같이
다양한 기술을 사용하여 통신합니다.
- 시스템은 몇 가지 다른 유형의 서버로 구성됩니다.
예를 들어, 다음이 포함됩니다.
- 데이터베이스 서버 - Sybase, Ingres, Oracle, Informix와 같은 데이터베이스 시스템 처리
- 프린터 서버 - 특정 프린터용 드라이어버 논리(큐잉 등) 처리
- 통신 서버(TCP/IP, ISDN, X.25)
- Window Manager 서버(X)
- 파일 서버(UNIX의 NFS)
'3층 구조'는 시스템의 기능성이 3개의 논리 파티션(어플리케이션 서비스,
비즈니스 서비스 및 데이터 서비스)으로 나누어지는
'클라이언트/서버 구조'의 특수한 경우입니다.
'논리 파티션'은 사실 3개 이상의 실제 노드로 맵핑될 것입니다.

3층 구조의 예
세 개의 '층'으로 논리 파티션하는 것은 일반 사무실 어플리케이션의 기능성을 구현하는 데 도움이 되는 방법 및
변경되는 방법에 대한 관측을 반영합니다. 주로 GUI 프리젠테이션 실행을 다루는
어플리케이션 서비스는 그래픽 윈도 운영 환경의 전용 데스크탑 워크스테이션에서
실행하는 경향이 있습니다. 기능성 변경은 본래 인적 요소 문제인
사용 편의성 또는 미적 고려사항에 의해 지시되는 경향이 종종 있습니다.
데이터 서비스는 네트워크에서 연결된 수많은 사용자에게 서비스를 제공하는
하나 이상의 고성능, 높은 대역폭 노드에서 실행하는 데 도움이 되는 데이터베이스
서버 기술을 사용하여 구현되기 쉽습니다.
저장된 정보 간의 관계 및 표현이 변경되면 데이터 서비스가 변경되기 쉽습니다.
비즈니스 서비스는 인코드된 비즈니스 프로세스에 관한 지식을 반영합니다.
이 서비스에서는 데이터 서비스에서 가져온 정보를 처리하고 종합하며
어플리케이션 서비스에 이를 제공합니다.
비즈니스 서비스는 일반적으로 많은 사용자가 공통적으로 사용하므로
데이터 서비스와 같은 노드에 상주하기도 하지만 특수화된 서버에 있는
경향이 있습니다.
이러한 종류에 있는 파티션 기능은 비교적 신뢰성이 높은 확장성 패턴을 제공합니다.
데이터 및 비즈니스 서버에서 서버 추가 및 재평형 처리를 통해 탁월한 확장성을
획득합니다.
거의 모든 것이 클라이언트에서 실행되므로(데이터 서비스가 별도 노드에 위치하는
'2층 구조'라고 하는 변형은 제외) 클라이언트는 "팻"입니다.
어플리케이션 서비스, 비즈니스 서비스 및 데이터 서비스 모두가 클라이언트 시스템에 상주합니다.
일반적으로, 데이터베이스 서버는 다른 시스템에 있습니다.

일반적인 2층 또는 "팻 클라이언트" 구조
'팻 클라이언트'는 설계하고 빌드하기에 비교적 간단하지만
분배(크고 단일적인 경향이 있음) 및 유지보수는 더 어렵습니다.
클라이언트 시스템은 성능을 위해 데이터를 로컬에 캐시하는 경향이 있으므로
로컬 캐시 통일성 및 일관성이 특별한 주의를 요하는 문제와 영역이 될 수 있습니다.
다중 로컬 캐시에 있는 공유 객체에 대한 변경은 변경의 네트워크 브로드캐스트
수행에 수반되어 조정하기 어려우며 비용이 많이 듭니다.
'팻 클라이언트'의 다른 스펙트럼 끝에는 '팻 서버' 또는 'Anorexic 클라이언트'가 있습니다.
전형적인 예는 HTML 페이지 세트를
실행 중인 웹 브라우저 어플리케이션입니다.
클라이언트에는 어플리케이션이 거의 없습니다.
거의 모든 작업이 하나 이상의 웹 서버 및 데이터 서버에서 이루어집니다.

웹 어플리케이션
웹 어플리케이션은 분배하기 쉬우며 변경하기 쉽습니다.
웹 어플리케이션을 개발하고 지원하는 데 비교적 많은 비용이
듭니다(상당량의 어플리케이션 인프라스트럭처가
브라우저 및 웹 서버에서 제공되므로).
그러나 웹 어플리케이션은 원하는 정도의 어플리케이션 제어를 제공하지 않을 수 있고
잘 설계되지 않으면(때때로 잘 설계되었어도)
네트워크를 빨리 포화시킬 수 있습니다.
이 구조에서 어플리케이션, 비즈니스 및 데이터 서비스는
비즈니스 서비스 및 데이터 서비스 계층의 서버를
잠재적으로 특수화하여 다른 노드에 상주합니다. 완전한 3층 구조를 구현합니다.
피어 투 피어 구조에서 시스템의 모든 프로세스 또는 노드는
클라이언트 및 서버 모두가 될 수 있습니다.
기능의 분배는 처리량 및 시스템 사용 효율을 최대화하면서
네트워크 트래픽을 최소화하기 위해 상호 관련 서비스를 함께 그룹화하여 이루어집니다.
이러한 시스템은 복잡해지기 쉬우며
교착 상태, 프로세스 간 기아 및 결함 처리와 같은
문제에 대한 더 많은 인식이 필요합니다.
|