분산시스템이란?
사용자에게 하나의 일관성 있는 시스템으로 나타나는 독립 컴퓨터 집합
- 각종 컴퓨터와 통신방식의 차이는 대부분 사용자에게 숨겨져 있다
- 사용자와 응용프로그램은 상호 작용 장소와 시간에 관계없이 분산 시스템과 일관되고 균일한 방식으로 상호 작용할 수 있다.
분산이란?
- 유저들에게는 “하나의 컴퓨터”처럼 느껴지도록 해야 한다. 하지만 실제로 우리가 이를 구성하는 하드웨어는 컴퓨터들의 집합체로 묶여있기 때문에 이 갭을 메우기 위해 두가지 시스템 구성방법을 배울 것이다.
1) 동질형(Homo Geneous) 분산 시스템 : OS(운영체제) 시스템이 동일하다. 2) 이질형(Hetero geneous) 분산 시스템 : OS(운영체제) 시스템이 다르다.
분산시스탬내 투명성
- Access : 리소스가 어디있는지 몰라야한다.
- Location : 리소스 위치를 몰라야 한다.
- Migration : 다른 위치에 이동하는 것도 몰라야 한다
- Relocation : 사용하는 동안 다른 위치로 이동하는 것을 몰라야한다.
- Replication : 리소스가 복사된 걸 몰라야한다.
- Concurrency : 여러 독립적인 사용자가 리소스를 공유하는 것을 숨겨야 한다.
- Failure : 리소스의 고장과 회복을 숨겨야한다.
확장성 문제
만약 많은 유저들 또는 리소스를 지원하는데 필요하다면?
Concept | Example |
---|---|
중앙집중 서비스 | 모든 유저를 위한 하나의 서버 |
중앙집중 데이터 | 단일 온라인 전화번호부 |
중앙집중 알고리즘 | 완전한 정보를 기반으로 라우팅 하는것 |
확장성 제한의 예
- 중앙집중화된 서버는 병목현상이 발생할 수 있으며, 결국 추가 성장을 방해할 것이다.
- 단일 데이터베이스가 모든 통신 라인을 내부와 외부로 포화시킬 수 있다.
- 엄청나게 많은 메시지를 라우팅해야한다. 메시지가 네트워크의 일부분에 과부하를 주기 때문에 모든 정보를 수집하고 전송하는 것은 좋지 않다.
분산 알고리즘의 특성
- 시스템 상태에 대한 완전한 정보를 가진 기계가 없다.
- 기계는 지역 정보만을 기반으로 의사 결정을 내린다
- 기계 한 대가 고장났다고 알고리즘이 작동하지 않는것은 아니다
- 글로벌 시간은 없다.
최소 3개의 요소들
- 사용자나 프로세스들에 대한 사이즈 확장성
- 노드간의 최대 거리(지리적인 확장성)
- 관리 도메인 수(관리 확장성)
대부분의 시스템은 크기 확장성에 대해 어느 정도만 설명합니다. 종종 솔루션 : 여러 개의 강력한 서버가 병렬로 독립적으로 운영됩니다. 오늘날에도 문제는 지리적 및 관리적 확장성에 있다.
분산 시스템 개발 시 함정
최초 개발자의 잘못된 가정:
- 네트워크는 신뢰할 수 있다.
- 네트워크가 안전하다
- 네트워크는 동종이다.
- 토폴로지는 변경되지 않는다
- 지연시간이 0이다
- 대역폭이 무한대이다
- 전송비용이 0이다
- 관리자가 한명이다.
분산시스템의 세가지 종류
- 고성능 분산 컴퓨팅 시스템
-
- 병렬 컴퓨팅, 분산 공유 메모리 시스템
- 클러스터 컴퓨팅, 그리드 컴퓨팅, 클라우드 컴퓨팅
- 분산 정보 시스템
-
- 거래 처리 시스템
- 퍼베이시브 컴퓨팅 : 우리 삶 속에 퍼져있고 스며들어 있는 컴퓨팅 기술
-
- 유비쿼터스 시스템
- 모바일 컴퓨팅
클러스터 시스템
- 네트워크에 있는 여러 컴퓨터들을 병렬적으로 하나의 거대한 시스템으로 만드는 것. 분산 시스템이든 병렬 시스템이든 하나의 단일 시스템 구조가 목표다. 여러 시스템들에게 공유 저장소를 허용한다.
- 특성 : 동질성
-
동일하거나 유사한 컴퓨터, 동일한 OS, 동일한 네트워크 기본 하드웨어는 유사한 워크스테이션 또는 PC의 모음으로 구성되며 고속 LAN으로 밀접하게 연결된다. 각노드는 동일한 OS를 실행한다.
- 비동기식 클러스터링 : 다른 서버들이 대기하는 동안 하나의 서버가 응응 프로그램을 실행하는 구조
- 동기식 클러스터링 : 모든 N개의 호스트 서버들이 응용프로그램을 실행하는 구조
그리드 컴퓨팅
- 데이터에 대한 연산을 여러 레이어에 분산시켜 처리하는 컴퓨팅 시스템
- 계층화된 아키텍처
- 특성 : 이질성
- 하드웨어, OS, 네트워크, 관리 도메인, 정책 등에 대한 가정이 없다.
트랜잭션 처리 시스템
-
ACID 특징을 가진다. 외부에서 내부의 변화가 보이지 않아 원자적이고 일관적이며, 하나씩 처리하므로 격리를 하며, 트랜잭션이 일어날 경우에 변화가 없어 튼튼하다.
- Atomicity : 실행할거면 모두 실행해야한다.
- Consistency : 모든 데이터가 일관성있게 유지되어야 한다.
- Isolation : 모든 트랜잭션은 서로 영향을 미치면 안된다.
- Durability : 한번 트랜잭션이 일어났으면 일어난순간 영구적으로 시스템에 유지되어야 한다.
중첩된 트랜잭션
- 최상위 트랜잭션은 서로 다른 컴퓨터에서 병렬로 실행되는 하위 항목을 분리하여 성능을 얻거나 프로그래밍을 단순화할 수 있다.
- 임의로 깊이가 중첩될 수 있다.
엔터프레이즈 미들웨어 시스템의 트랜잭션 처리(TP) 모니터
- 애플리케이션이 트랜잭션 프로그래밍 모델을 제공하여 여러 서버/서버에 액세스할 수 있도록 허용
커뮤니케이션 미들웨어
- 애플리케이션이 데이터베이스에서 분리됨
- 애플리케이션 구성요소는 서로 직접 통신할 수 있어야 한다.
- 애플리케이션 간 통신에 대한 이러한 필요성은 다양한 커뮤니케이션 모델로 이어진다.
- 원격 프로시저 호출(RPC) - 애플리케이션에서 작동
- 원격 메서드 호출(RMI) - 객체에서 작동
세 개의 하위 유형
- 유비쿼터스 컴퓨팅 시스템 : 만연하고 지속적으로 존재한다. 즉 시스템과 사용자 사이에 지속적인 상호작용을 한다. 사용자가 네트워크나 컴퓨터를 의식하지 않고 장소에 상관없이 자유롭게 네트워크에 접속하여 정보를 주고받을 수 있는 환경
- 모바일 컴퓨팅 시스템 : 널리 보급되어 있지만, 기기가 본질적으로 모바일이라는 것에 중점.
- 센서 네트워크 : 환경의 실제 감지 및 작동에 중점을 둔다.
유비쿼터스 시스템의 핵심 요소
- (배포) 기기를 네트워크화, 분산 및 투명한 방식으로 액세스 가능
- (상호작용) 사용자와 기기 간의 상호 작용이 매우 눈에 띄지 않는다.
- (문맥 인식) 시스템은 상호 작용을 최적화하기 위해 사용자의 컨텍스트를 인식한다.
- (자율성) 기기는 사람의 개입 없이 자율적으로 작동하므로 고도로 자체 관리 된다.
- (지능) 시스템은 전체적으로 광범위한 동적 동작과 상호작용을 처리할 수 있다.
모바일 및 임베디드 컴퓨팅 장치 도입
퍼베이시브 시스템에 대한 요구사항
- 상황별 변화를 수용한다.
- 기기는 환경이 항상 변할 수 있다는 사실을 지속적으로 인식해야 한다.
- 임시 구성을 권장한다.
- 기기에서 실행중인 애플리케이션 제품군을 쉽게 구성할 수 있어야 함
- 공유를 기본값으로 인식한다.
- 정보를 쉽게 읽고 저장, 관리 및 공유할 수 있어야 함