장점
- 자원 공유
- 개방성
- 병행성
- 확장성
- 결함 내성
단점
- 복잡성
- 보안성
- 관리 가능성
- 예측 불가능성
두 가지 유형
- 클라이언트 서버 아키텍처
- 분산 객체 아키텍처
조직 간 분산에 적합한 유형
- P2P 시스템 아키텍처
- 서비스 지향 아키텍처
미들웨어
- 시스템의 상이한 분산 컴포넌트 사이의 중간에 위치하는 소프트웨어
멀티 프로세서 아키텍처
- 분산 시스템의 가장 단순한 모델
- 소프트웨어 시스템은 별도의 프로세서에서 실행될 수도 있는 다수의 프로세스들로 구성
- 대규모 실시간 시스템에서 이용
- 예) 교통 통제 시스템 등
클라이언트-서버 아키텍처
- 논리적 프로세스
- 유형 (2단 클라이언트-서버 아키텍처의 경우)
. thin-client model : 모든 응용 시스템의 처리와 데이터 관리가 서버에서 수행, 클라이언트는 단순히 표현 소프트웨어의 실행 책임
. thick-client model : 서버는 오직 데이터 관리만 책임, 클라이언트 상의 소프트웨어가 응용 논리와 시스템 사용자와의 상호 작용 구현
. thick-client 모델이 thin-client 모델에 비해 처리를 보다 효율적으로 분산시키는 반면, 시스템 관리는 더욱 복잡
- 3단 클라이언트-서버 아키텍처
. 클라이언트 <-> 서버(응용처리) <-> 서버(데이터관리)
분산 객체 아키텍처
- 클라이언트-서버의 구분을 제거하고 객체로 시스템을 구성
- 객체는 자신이 제공하는 서비스 집합의 인터페이스 제공
- 다른 객체들은 클라이언트와 서버 사이의 논리적 구분 없이 서비스 호출
객체 요청 중개자(object request broker, ORB)
- 네트워크 상의 다수의 컴퓨터에 분산되어 있는 객체가 통신할 수 있는 수단
- 객체들 사이의 seamless한 인터페이스 제공
- 장점
. 시스템 설계자가 서비스가 어디에서 어떻게 제공되어야 하는지에 관한 결정을 미루는 것을 가능하게 함
. 새로운 자원이 요청되는 대로 추가할 수 있는 매우 개방된 구조임
. 시스템이 융통성이 있고 확장 가능함
. 객체들을 네트워크 상에 요청대로 이동시키면서 시스템을 동적으로 재구성 할 수 있음
CORBA (Common ORB Architecture)
- 논리적 통신 수준에서, 미들웨어는 상이한 컴퓨터 상의 객체들이 데이터와 제어 정보를 교환하는 것을 허용하는 기능을 제공
- 비슷한 기능을 하는 COM 표준 있음 (MS)
- 컴포넌트 수준에서, 미들웨어는 호환성 있는 컴포넌트들을 개발하기 위한 기초를 제공
- OMG(Object Management Group)에서 정의
- 구성요소
. 응용 객체 : CORBA 객체는 IDL(Interface Definition Language)로 기술된 잘 정의되고 언어 중립적인 인터페이스를 가지는 상태의 캡슐화
. ORB : 서비스 요청 객체 찾고, 요청 대비 준비, 서비스 요청 보내고, 결과 리턴
. 객체 서비스 집합
. 공통 컴포넌트 집합
조직 간의 분산 컴퓨팅
- 보안성과 상호 운영성의 이유로 분산 컴퓨팅은 주로 조직 수준에서 구현
- 두 가지 기법
. 피어 투 피어 아키텍처 (p2p) : 계산이 네트워크 상의 임의의 노드에서 수행되고, 원칙적으로 최소한의 클라이언트와 서버 사이의 구분이 존재하지 않는 분산된 시스템
.. 비집중 아키텍처 (장점 : 높은 중복성에 기인하는 결함 내성 및 네트워크 상 단절된 노드들의 내성, 단점 : 상이한 노드에 의한 동일 처리 오버헤드 및 피어 통신 중복 오버헤드)
.. 반집중 아키텍처
서비스 지향 시스템 아키텍처
- 서비스를 이용하는 응용 프로그램에 독립적인 서비스의 제공이 핵심
- 서비스 지향 시스템의 개념적 아키텍처
서비스 레지스트리
Find <-> <-> publish
서비스 요청자 <-> 서비스 제공자
Bind
- SOAP(Simple Object Access Protocol) : 웹 서비스 간 구조적 데이터 교환에 관한 구조 정의
WSDL(Web Services Description Language) : 웹 서비스의 인터페이스가 표현될 수 있는 방식을 정의
UDDI(Universal Description, Discovery and Integration) : 서비스 요청자가 서비스를 발견하기 위해 사용하는 서비스 기술 정보를 어떻게 구성할 수 있는지 정의하는 디스커버리 표준