[대학원] 분산시스템아키텍처 |
|
Software Engineering | 2007/06/16 (토) 17:35 |
| |||
학습 목표
- 분산 시스템 아키텍쳐의 장·단점에 대해 이해할 수 있다.
- 분산 시스템 아키텍쳐를 위한 중요 모델인 클라이언트-서버와 분산 객체 아키텍쳐를 학습한다.
- 조직간 분산시스템 구축을 위한 피어투피어(peer-to-peer)와 서비스 지향 아키텍쳐에 대해 학습한다.
학습 개요
분산 시스템에 대한 설명
- 규모가 상당히 큰 컴퓨터 기반 시스템은 사실상 모두 분산시스템이라고 볼 수 있다.
- 정보 처리(information processing)가 하나의 컴퓨터에 의존하기 보다는 분산되어 있는 많은 수의 컴퓨터에서 이루어진다.
- 최근 들어, 분산 소프트웨어 공학의 중요성이 커지고 있다.
분산 시스템의 특징
분산 시스템의 단점
분산 시스템의 설계 이슈
실시간 분산 시스템의 아키텍쳐에 관한 장·단점을 이해하면, 어떠한 성질을 가져야 바람직한 분산 시스템을 설계할 수 있는지를 알 수 있습니다.
실시간 시스템은 다음 주차에서 다룰 것입니다.
멀티 프로세서 아키텍처란?
- 가장 간단한 분산 시스템 모델
- 서로 다른 프로세서(Processor)에서 실행되는 복수개의 프로세스(Processes)로 구성된 시스템
- 큰 규모의 실시간 시스템(Large real-time systems)에서 흔함.
멀티프로세서 아키텍쳐의 개념을 바탕으로 멀티프로세서 아키텍쳐의 예를 살펴보도록 하겠습니다.
l Sensor control process : 교통 흐름에 관한 정보를 수집하여 처리함.
l Operator consoles : 조작수는 처리된 정보를 이용하여 신호등 제어 프로세스에 명령함.
다중 프로세스라 하여 반드시 분산 시스템일 필요는 없으며, 설계 과정에서 distribution issues를 항상 고려해야 하는 것은 아닙니다.
Q1. 멀티프로세서 아키텍쳐에 대한 설명이 아닌 것은?
① 가장 간단한 분산 시스템 모델
② 서로 다른 프로세서에서 실행되는 복수개의 프로세스로 구성
③ 큰 규모의 실시간 시스템에서 흔하다.
④ 클라이언트와 서버로 구성되어 있다. <- 클라이언트-서버 아키텍처에 대한 설명임.
클라이언트-서버 아키텍쳐(Client-server architectures)의 특징
응용 구조의 3계층
클라이언트 서버 시스템을 설계할 때는 응용(application)의 논리적 구조를 반영해야 하는데, 응용의 구조는 다음 그림에서와 같이 3계층으로 나눕니다.
표현 계층 응용 처리 계층
데이터 관리 계층
클라이언트-서버 모델 중 가장 간단한 것이 2-Tier 클라이언트-서버 아키텍쳐 입니다.
2-Tier 클라이언트-서버 아키텍쳐는 다음과 같이 Thin/Fat client의 2가지 형태를 가지게 됩니다.
1) Thin Client Model
- 모든 응용 처리(application processing) 및 데이터 관리(data management)가 서버에서 수행되고, 클라이언트는 표현(presentation) 계층만 구현하게 된다.
- 레거시 시스템(legacy systems)을 클라이언트-서버 아키텍쳐로 바꿀 때 사용된다.
- 단점
; 서버와 네트워크에 걸리는 부하가 큼.
2) Fat Client Model
- 서버는 데이터 관리(data management)에만 관여하고, 클라이언트상의 소프트웨어에 응용 로직(application logic)과 표현(presentation) 부분이 구현된다.
- 응용 처리가 클라이언트에 넘겨져서 로컬(local)에서 실행되기 때문에 클라이언트에 더 많은 부하가 걸린다. (서버의 부하가 클라이언트에 넘겨진다.)
- 클라이언트 컴퓨터의 사양이 응용 처리를 하기에 충분할 경우 많이 사용된다.
- 단점
; 관리적인 면에 있어서는 thin client model 보다 복잡.
; 새로운 버전의 애플리케이션이 출시된다면 모든 클라이언트에 배포되어 설치되어야 함.
- 예 : Banking ATM 시스템, 여기서 ATM은 클라이언트이며 서버는 mainframe
2-Tier 클라이언트-서버의 문제점은 논리적인 3개의 계층을 2개의 컴퓨터 시스템에 분배했다는 것으로 이는 확장성(scalability)이나 성능(performance) 또는 관리상의 문제(fat client)를 일으킬 수 있습니다. 이에 대한 대안으로 3-Tier 클라이언트-서버 아키텍쳐를 사용하며, 3-Tier 클라이언트-서버 아키텍쳐의 특징으로는 다음 3가지를 들 수 있습니다.
3-Tier 클라이언트-서버 아키텍쳐의 특징
- 각각의 응용 아키텍쳐 계층은 서로 다른 프로세서(processor)상에서 수행된다.
- thin-client보다 높은 성능을 제공하며, fat-client의 경우보다 쉽게 관리할 수 있다.
- 서버의 부하가 커지거나 요구가 증가할 경우, 여분의 서버를 추가하기만 하면 되므로 아키텍쳐 확장성이 우수하다.
(예)사용자가 증가하면 웹 서버를 추가한다. 특히 애플리케이션 처리 부분은 가장 자주 바뀌기 쉬운 부분이다.
3-Tier 클라이언트-서버 아키텍처
인터넷 뱅킹 시스템에서의 분산 아키텍처
Web server 와 database server 간에는 internet standards가 필요 없으므로 faster & lower-level communication protocol을 사용하여 transfer를 optimize 할 수 있습니다. 데이터베이스 쿼리 처리를 위한 efficient middleware인 SQL을 사용합니다.
Thin client를 이용한 2-Tier 클라이언트 서버 아키텍쳐
- 응용 처리(application processing) 부분과 데이터 관리 (data management) 부분을 분리시키는 것이 어려운 레거시 시스템 애플리케이션
- 데이터 관리(data management)가 거의 필요하지 않은 컴파일러(compiler) 같은 계산 중심의 애플리케이션
- 응용 처리가 거의 필요하지 않은 데이터 중심(data-intensive)의 애플리케이션(웹 검색, 쿼리 등)
Fat Client를 이용한 2-Tier 클라이언트 서버 아키텍쳐
- 응용 처리(application processing)가 클라이언트 상에서 COTS(예 : Microsoft Excel)로 제공되는 애플리케이션
- 데이터를 계산하거나 처리하는 것의 비중이 큰 애플리케이션
- 잘 구성된 시스템 환경에서 안정화 된 애플리케이션
3-Tier 클라이언트 서버 아키텍쳐
- 클라이언트의 수가 많은 대규모 애플리케이션
- 데이터와 응용 로직이 자주 바뀌는 경우의 애플리케이션
- 다양한 소스로부터 구해진 데이터가 통합되어야 하는 애플리케이션
l Use of different client-server architectures
Q1. 다음 설명이 Fat-client에 대한 설명이면 Fat, Thin-client에 대한 설명이면 Thin이라고 입력하세요.
[thin]① 모든 응용 처리(application processing) 및 데이터 관리(data management)가 서버에서 수행된다. 클라이언트는 표현(presentation) 계층만 구현하게 된다.
[thin]② 서버와 네트워크에 걸리는 부하가 크다.
[fat]③ 서버는 데이터 관리(data management)에만 관여하고, 클라이언트상의 소프트웨어에 응용 로직(application logic)과 표현(presentation) 부분이 구현된다.
[fat]④ 클라이언트의 사양이 응용 처리를 하기에 충분할 경우 많이 사용된다.
분산 객체 아키텍쳐(Distributed object architectures)의 특징
- 분산 객체 아키텍쳐에서는 클라이언트와 서버간의 차이점이 거의 없다.
- 각각의 분산 요소는 다른 객체들에게 서비스를 제공하기도 하고, 반대로 다른 객체들로부터 서비스를 받기도 한다.
- 객체간의 통신은 ORB(Object request broker)라고 불리는 미들웨어(middleware) 시스템을 이용하게 된다. ( software bus )
- 클라이언트-서버 시스템보다 설계하기가 어렵다.
클라이언트-서버 모델은 서버와 클라이언트를 미리 정해야 한다는 점에서 시스템 설계상 유연성이 많이 떨어집니다. 분산 객체 아키텍쳐에서는 클라이언트와 서버간의 차이를 없애고, 동일하게 분산시킨 객체로써 아키텍쳐를 구성할 수 있습니다.
4가지 클라이언트-서버 모델의 장점
- 시스템 설계자가 어디서(where), 어떻게(how) 서비스가 제공되어야 하는지에 대한 판단을 뒤로 미룰 수 있다. 즉, 시스템 설계자에게 유연성을 제공한다.
- 새로운 리소스(resource)가 추가되기 쉬운 열린 시스템(open system) 이다. 예를 들어 다른 언어로 작성된 객체끼리 통신할 수 있다.
- 시스템이 유연하며(flexible), 확장성(scalable)이 좋다. 예를 들어 시스템 부하에 대비하기 위해 같은 서비스를 다른 객체가 제공할 수 있고 새로운 객체를 추가시킬 수도 있다.
- 네트웍을 통해 객체를 주고 받으면서 시스템을 동적으로 재구성하는 것이 가능하다. 예를 들어 성능 때문이라면 서비스 제공 객체를 서비스 요구 객체와 같이 둘 수 있다.
논리적인 모델로 사용 가능
유연성 있는 접근법으로 사용가능
[그림설명]
- 여러 데이타베이스에 저장된 데이터간의 관계를 찾아야 한다.
- 예를 들어 여러 종류의 상점을 운영할 때, baby food를 사는 사람은 특정 wallpaper를 찾는다.
- 각각의 데이타베이스는 하나의 분산 객체이다.
- 통합 객체는 특정 관계를 의미한다.
(예를 들어 다른 종류의 상품간의 관계, 상품의 계절적 변이)
l 데이터 마이닝에 분산 객체가 적당한 이유
- 한 가지가 아닌 다양한 서비스가 존재
- 전체 시스템에 영향을 주지 않으면서 데이터베이스의 확장을 가능하게 함.
- 다른 통합 객체에 대한 지식 없이 사업 부서별로 관심 있는 관계의 마이닝을 위해 새로운 통합 객체를 추가하여 시스템을 확장할 수 있음.
Q1. 분산 객체 아키텍쳐에 대한 설명이 아닌 것을 모두 고르시오.
① 시스템 설계자가 어디서(where), 어떻게(how) 서비스가 제공되어야 하는지에 대한 판단을 뒤로 미룰 수 있다.
② 각각의 분산 요소는 다른 객체들에게 서비스를 제공하기도 하고, 반대로 다른 객체들로부터 서비스를 받기도 한다.
③ 서버와 클라이언트를 구분하여 요청/응답에 대한 통신 설계를 해주어야 한다.
④ 네트웍을 통해 객체를 주고 받으면서 시스템을 동적으로 재구성하는 것이 가능하다.
③은 클라이언트-서버 아키텍쳐에 대한 설명이다.
조직내 또는 조직간 분산 객체 컴퓨팅(distributed object computing)의 특징
- 보안과 상호 운용성(inter-operability) 때문에 대부분의 분산 컴퓨팅은 조직내 수준(intra-organisational 또는 intra-enterprise level)에서 구현되었다.
- 조직내 수준에서는 많은 서버들이 같은 조직 내에 위치하므로, 로컬 표준과 관리 및 작동 프로세스(operational process)를 적용할 수 있다.
- 분산 컴퓨팅의 새로운 모델은 조직 내부가 아닌 조직간 컴퓨팅을 지원하도록 설계되고 있다. 여기서는 여러 노드들이 다른 조직들에 위치하게 된다.
Peer-to-peer 아키텍쳐의 특징
- p2p 시스템은 분권적(decentralized) 시스템으로 네트워크상의 어느 노드에서도 계산(computation)을 수행할 수 있고 원칙적으로는 서버와 클라이언트의 구별은 없다.
- 전체 시스템은 네트워크로 연결된 상당히 많은 수의 컴퓨터들이 가지고 있는 계산 능력과 기억 공간을 활용하려는 의도로 설계된다.
- 노드간 통신을 위한 표준과 프로토콜은 응용 프로그램 자체에 포함되어 있으므로 각 노드는 응용 프로그램을 복사하여 실행시켜야 한다.
- 대부분의 p2p 시스템들은 개인적 시스템들이었으나 비즈니스적으로 이 기술을 이용하려는 시도가 증가하고 있다.
2가지 관점의 P2P 아키텍처 모델
P2P 아키텍쳐 모델은 2가지 관점으로 볼 수 있는데 하나는 p2p 애플리케이션을 구성하는 요소들의 일반적 구조를 다루는 애플리케이션 아키텍쳐입니다.
여기서는 시스템의 분산 아키텍쳐를 다루는 논리적 네트워크 관점만을 다루도록 하겠습니다.
1) 분권적(Decentralized) P2P 아키텍처 모델
순수한 의미의 p2p 아키텍쳐 모델에서는 모든 노드가 다른 노드의 존재를 알고 접속할 수 있지만 실제로는 다른 노드와의 접속을 위해 브릿지 역할을 하는 노드가 필요하다.
장점
- 중복적(redundant) 이어서 결함 내성적(fault-tolerant)이다. 네트워크에 연결되지 않은 노드들이 생겨도 내성적이다.
단점
- 하나의 검색을 여러 노드들이 처리할 수 있으므로 오버헤드가 존재한다.
- 반복되는 피어 통신을 생각해도 오버헤드가 크다.
2) 반중앙집중식(Semi-centralized) 아키텍처 모델
계산 중심의 p2p 응용에서 작업을 분산시키고 계산 결과를 조합하고 검사하는 역할의 서버가 존재한다.
장점
- 서비스 중심의 방법(다음의 내용)보다 조직간 컴퓨팅을 위한 보다 효과적인 방법이다.
단점
- 보안이나 신뢰성에 관한 문제가 존재한다. (따라서 p2p 시스템은 non-critical 정보 시스템 또는 working relation이 이미 존재하는 조직 간에 사용된다.)
- 피어간의 연결이나 계산 결과를 조정해 주는 역할의 서버가 존재한다.
- 예) 메시징 시스템
- 점선 : 한 노드는 다른 노드가 이용가능한지 알아보기 위해 서버와 통신
- 통신 후 해당 노드와 직접 연결되면 서버와의 연결 불 필요
WWW은 클라이언트 컴퓨터가 원격 서버에 접근할 수 있게 하나, 웹 브라우저를 이용해야만 하고 외부 프로그램이 정보를 직접적으로 접근하는 것은 불가능 합니다. 이러한 이유로 웹 서비스 개념이 제안되었으며 서비스 지향 아키텍쳐는 웹 서비스에 기초하고 있습니다.
l 웹 서비스란?
- 외부에 제공되는 서비스
; 다른 프로그램에게 정보의 접근을 허용할 조직은 웹 서비스 인터페이스를 정의하고 공표할 수 있음.
- 웹 서비스는 다른 프로그램이 사용할 수 있게 계산 또는 정보 자원을 표현하는 표준 방법
- (예) “세금 신고 서비스”는 사용자가 세금서류 양식을 작성하면 자동으로 검사한 후 조세당국에 제출할 수 있도록 지원한다.
l 서비스의 일반적인 개념
- An act or performance offered by one party to another. Although the process may be tied to a physical product, the performance is essentially intangible and does not normally
result in ownership of any of the factors of production.
- 따라서 서비스 제공은 서비스를 이용하는 애플리케이션과 무관하다.
- 웹 서비스는 이것의 인스탄스로 볼 수 있다.
서비스 지향 시스템의 개념적 아키텍처
Service provider : 서비스 제공자는 서비스의 인터페이스를 정의하고 기능을 구현하여 서비스를 제공한다.
Service registry : 외부에서 서비스를 사용할 수 있게 하기 위해 서비스 제공자는 서비스 정보의 레지스트리에 서비스 정보를 기록한다.
Service requester : 서비스 요구자는 서비스를 찾아 응용 프로그램에 바인드 한다. (응용 프로그램은 서비스를 호출하는 코드를 포함하여 그 결과를 처리한다.)
서비스 모델과 분산 시스템 아키텍처
서비스 모델은 분산 시스템 아키텍쳐를 위한 분산 객체 방법과 차이점이 있습니다. 느슨히 연결된(loosely coupled) 분산 응용의 구축을 위해 웹서비스에 큰 관심이 쏟아지나 아직까지 서비스 지향 아키텍쳐에 대한 실질적 경험이 부족하다는 점을 알고 살펴보도록 합시다.
> 제공자 독립성 : 조직 내부든 외부든 서비스 제공이 가능한다.
> 서비스 제공자는 서비스가 이용가능 함을 공표함
> 응용 프로그램은 서비스 바인딩을 실행시까지 지연시킬 수 있음
> 서비스의 조합을 통한 새로운 서비스 생성이 가능
> 서비스 사용에 대한 댓가 지불이 가능
> 응용 프로그램이 보다 작아질 수 있음
> 응용 프로그램이 환경 변화에 따라 반응적 또는 적응적일 수 있음
웹 서비스 사용 시나리오
[그림설명]
- 자동차 내부의 정보 시스템은 운전자에게 날씨, 교통, 상황, 지역 정보 등을 제공함. 이 정보는 특정 라디오 채널상의 신호로 전달되어 자동차 라디오에 연결됨
- 자동차는 현재 위치를 알기 이ㅜ한 GPS 수신기를 갖춤. 위치 정보에 기초하여 시스템은 '정보 서비스'에 접근함.
- 정보가 특정 언어로 전달됨.
Q1. 분권적 p2p 아키텍쳐와 반중앙집중식 p2p 아키텍쳐가 상대적으로 어떠한 장단점을 가지고 있는지 설명하시오.
- 분권적 p2p 아키텍쳐
장점: 서비스에 대한 공격에 덜 취약함. 피어를 추가한다고 성능이 떨어지지 않는다.
단점: 피어 통신을 구성하기 더 어렵다. 가용한 피어를 발견하기 더 어렵다.
- 반중앙집중식 p2p 아키텍쳐
장점: 가용한 피어를 찾기 쉽다. 피어간 데이터 교환이 단순하다(서버를 경유).
단점: 서버에 대한 공격에 취약함. | ||||||||||||||||||||||||||||||||||||||||
'UP! > Software Engineering' 카테고리의 다른 글
개발의 중요문제 (0) | 2008.08.21 |
---|---|
시스템분석가의 역할 (0) | 2008.08.21 |
소프트웨어와 소프트웨어 공학 (0) | 2008.08.21 |
시스템의 특성 (0) | 2008.08.21 |
소프트웨어 공학 개요 및 사회, 기술적 시스템 (0) | 2008.08.21 |