프로세서 및 장치는 노드의 공통 스테레오타입입니다. 이제는 많은 장치에 자체 CPU가 포함되므로 장치와 프로세스 사이의 구별을 평가하기가 어렵습니다. 그러나 장치와 프로세서를 실행하는 소프트웨어 유형에 따라 둘을
구별할 수 있습니다. 프로세서는 개발하는 시스템에 대해 명시적으로 작성된 프로그램/소프트웨어를 실행합니다. 프로세서는 용량, 메모리 및 실행 기능을 계산하는 범용 계산 장치입니다.
장치는 장치 자체의 기능을 제어하는 작성된 소프트웨어입니다. 장치는 일반적으로 장치를 제어하는 프로세서에 접속됩니다. 일반적으로 임베디드 소프트웨어를 실행하고 범용 프로그램을 실행할 수 없습니다. 장치의 기능은
일반적으로 장치 드라이버 소프트웨어가 제어합니다.
시스템에는 시스템 기능과 응용프로그램 유형에 따라 여러 가지의 전형적 분배 패턴이 있습니다. 전체 아키텍처에 분배 패턴 뿐만 아니라 더 많은 사항이 포함되어 있지만, 많은 경우에 시스템의 '아키텍처'를 설명하는 데
분배 패턴이 비공식적으로 사용됩니다. 예를 들어, 여러 번 시스템이 '클라이언트-서버 아키텍처'를 가지고 있는 것으로 설명되는데, 이는 아키텍처의 유일한 분배 측면입니다. 이는 다른 아키텍처 결정에 영향을 주는
범위와 시스템 분배 측면의 중요성을 강조하기 위한 것입니다.
아래에 설명된 분배 패턴에는 특정의 시스템 특성, 성능 특성 및 프로세스 아키텍처가 내포되어 있습니다. 각각은 특정 문제점을 해결하며 고유한 요구도 내포하고 있습니다.
소위 "클라이언트/서버 아키텍처"에는 클라이언트라고 하는 전문화된 네트워크 프로세서 노드와 서버라고 하는 노드가 있습니다. 클라이언트는 서버가 제공하는 서비스 이용자입니다. 클라이언트는
종종 단일 사용자에게 서비스를 제공하고 종종 일반 사용자 표시 서비스(GUI의)를 처리하는 반면, 서버는 일반적으로 몇몇 클라이언트에 동시에 서비스를 제공합니다. 제공되는 서비스는 일반적으로 데이터베이스, 보안 및
인쇄 서비스입니다. 이와 같은 시스템에서 "응용프로그램 로직" 또는 "비즈니스 로직"은 일반적으로 클라이언트와 서버 모두 사이에 분배됩니다. 비즈니스 로직 분배를 응용프로그램 파티션이라고 합니다.
다음 그림에서, 클라이언트 A는 대부분의 응용프로그램 로직이 서버에 있는 2층 아키텍처의 예제를 보여줍니다. 클라이언트 B는 비즈니스 오브젝트 서버에서 비즈니스 서비스가 구현되는 전형적인 3층 아키텍처를
보여줍니다. 클라이언트 C는 전형적인 웹 기반 응용프로그램을 표시합니다.
클라이언트-서버 아키텍처 변형
전형적인 클라이언트/서버 시스템에서는 대부분의 비즈니스 로직이 클라이언트에서 구현되지만, 일부 기능(예: 종종 서버에 저장된 데이터에 액세스하는 기능)은 서버에 위치되도록 하는 것이 좋습니다. 이와 같이 하면
대부분의 경우에 많은 비용이 들지만(프로세스 간 통신보다 1-2 크기 정도 느림) 네트워크 통신량이 감소할 수 있습니다.
일부 특성:
-
시스템은 몇몇 서로 다른 유형의 클라이언트로 구성할 수 있습니다. 클라이언트 예는 다음과 같습니다.
-
클라이언트 및 서버는 CORBA/IDL 또는 원격 프로시저 호출(RPC) 기술과 같은 다양한 기술을 사용하여 통신합니다.
-
시스템은 몇몇 서로 다른 유형의 서버로 구성할 수 있습니다. 서버 예는 다음과 같습니다.
-
Sybase, Ingres, Oracle, Informix와 같은 데이터베이스 시스템을 처리하는 데이터베이스 서버
-
특정 프린터의 대기열 넣기와 같은 드라이버 로직을 처리하는 프린터 서버
-
통신 서버(TCP/IP, ISDN, X.25)
-
창 관리자 서버(X)
-
파일 서버(UNIX의 NFS)
'3층 아키텍처'는 시스템의 기능이 세 개의 논리 파티션인 응용프로그램 서비스, 비즈니스 서비스, 데이터 서비스로 구분되는 '클라이언트/서버 아키텍처'의 특수 경우입니다. '논리 파티션'은 사실상 세 개 이상의
실제 노드에 맵핑될 수 있습니다.
3층 아키텍처 예제
3'층'으로 파티션되는 로직은 전형적인 사무 응용프로그램의 기능이 어떤 추세로 구현되며 어떻게 변경되는지 반영합니다. 기본적으로 GUI 표시 문제를 다루는 응용프로그램 서비스는 전용 데스크탑 워크스테이션에서 그래픽
형식의 윈도윙 운영 환경을 사용하여 실행되는 경향이 있습니다. 기능에서의 변경사항은 종종 사용 용이성이나 미적 고려사항(특히, 인적 요소 문제)을 지시하는 경향이 있습니다.
데이터 서비스는 데이터베이스 서버 기술을 사용하여 구현되는데, 이는 네트워크를 통해 연결된 수백 또는 수천 명의 사용자에게 서비스를 제공하는 하나 이상의 고성능, 높은 대역폭의 노드에서 실행되는 경향이 있습니다.
저장된 정보 사이의 관계 및 표시가 변경될 때 데이터 서비스도 변경되는 경향이 있습니다.
비즈니스 서비스는 비즈니스 프로세스의 인코드화된 지식을 반영합니다. 데이터 서비스에서 확보된 정보를 조작하여 종합적으로 다루고 이 정보를 응용프로그램 서비스에 제공합니다. 비즈니스 서비스는 보통 많은 사용자들이
공통적으로 사용하므로, 데이터 서비스와 같은 노드에 상주할 수도 있지만 전문화된 서버에 위치하는 경향이 있습니다.
이와 같은 경향에 따라 기능을 파티션하면 확장성에 대해 비교적 신뢰할 수 있는 패턴이 제공됩니다. 서버를 추가하고 데이터 및 비즈니스 서버 사이에 처리 밸런스를 다시 맞추면 많은 확장성을 얻을 수 있습니다.
클라이언트는 "Fat" 상태입니다. 거의 모든 것이 이 위에서 실행되기 때문입니다(데이터 서비스가 별도의 노드에 위치되는 '2층 아키텍처' 변형의 경우 제외). 응용프로그램 서비스, 비즈니스 서비스 및 데이터
서비스는 모두 클라이언트 시스템에 상주합니다. 데이터베이스 서버는 보통 다른 시스템에 상주합니다.
전형적인 2층 또는 "Fat 클라이언트" 아키텍처
'Fat 클라이언트'의 경우 디자인 및 빌드는 비교적 단순하지만 분배(더 커지고 단일체가 되기 쉬움) 및 유지보수는 더 어렵습니다. 클라이언트 시스템은 성능을 위해 데이터를 로컬로 캐시하는 경향이 있고 로컬 캐시
결합 긴밀성 및 일관성이 특수한 주의를 요구하는 문제 및 영역이 되고 있기 때문입니다. 여러 로컬 캐시에 위치된 공유 오브젝트의 변경은 어렵고 조정하는 데 많은 비용이 듭니다. 공유 오브젝트가 변경사항을
네트워크에서 브로드캐스트하기 때문입니다.
'Fat 클라이언트'로부터 시작되는 범위의 다른 끝에는 'Fat 서버'나 'Thin 클라이언트'가 있습니다. 전형적인 예로는 HTML 페이지 세트를 실행하는 웹 브라우저 응용프로그램이 있습니다. 클라이언트에는 거의
응용프로그램이 없습니다. 거의 모든 작업이 하나 이상의 웹 서버와 데이터 서버에서 발생합니다.
웹 응용프로그램
웹 응용프로그램은 분배하고 변경하기에 쉽습니다. 개발 및 지원을 위해 비교적 적은 비용이 소비됩니다(브라우저와 웹 서버에서 많은 응용프로그램 하부 구조가 제공되기 때문임). 그러나 응용프로그램에 대해 원하는 제어
정도를 제공하지 않을 수 있으며 제대로 디자인되지 않은 경우(그리고 간혹 반대로 잘 디자인된 경우) 빠른 속도로 네트워크를 포화시키는 경향이 있습니다.
이 아키텍처에서는 응용프로그램, 비즈니스 및 데이터 서비스가 다른 노드에 상주하며 비즈니스 서비스 및 데이터 서비스 층에서는 서버를 전문화할 수 있습니다. 3층 아키텍처의 전체 실현(realization)입니다.
피어 투 피어 아키텍처에서는 시스템의 프로세스나 노드가 클라이언트 및 서버 둘 다 가능합니다. 기능 분배는 처리량 및 시스템 활용은 최대화하면서 네트워크 통신량은 최소화하기 위해 상호 관련 서비스
사이에 함께 그룹화하여 수행합니다. 이와 같은 시스템은 복잡하게 되기 쉬우므로 교착 상태, 프로세스 간 부족 및 결함 처리와 같은 문제를 더 많이 인식해야 합니다.
|