분산시스템이란?


사용자에게 하나의 일관성 있는 시스템으로 나타나는 독립 컴퓨터 집합

  • 각종 컴퓨터와 통신방식의 차이는 대부분 사용자에게 숨겨져 있다
  • 사용자와 응용프로그램은 상호 작용 장소와 시간에 관계없이 분산 시스템과 일관되고 균일한 방식으로 상호 작용할 수 있다.

분산이란?

  • 유저들에게는 “하나의 컴퓨터”처럼 느껴지도록 해야 한다. 하지만 실제로 우리가 이를 구성하는 하드웨어는 컴퓨터들의 집합체로 묶여있기 때문에 이 갭을 메우기 위해 두가지 시스템 구성방법을 배울 것이다.

1) 동질형(Homo Geneous) 분산 시스템 : OS(운영체제) 시스템이 동일하다. 2) 이질형(Hetero geneous) 분산 시스템 : OS(운영체제) 시스템이 다르다.

분산시스탬내 투명성

  1. Access : 리소스가 어디있는지 몰라야한다.
  2. Location : 리소스 위치를 몰라야 한다.
  3. Migration : 다른 위치에 이동하는 것도 몰라야 한다
  4. Relocation : 사용하는 동안 다른 위치로 이동하는 것을 몰라야한다.
  5. Replication : 리소스가 복사된 걸 몰라야한다.
  6. Concurrency : 여러 독립적인 사용자가 리소스를 공유하는 것을 숨겨야 한다.
  7. Failure : 리소스의 고장과 회복을 숨겨야한다.

확장성 문제

만약 많은 유저들 또는 리소스를 지원하는데 필요하다면?

Concept Example
중앙집중 서비스 모든 유저를 위한 하나의 서버
중앙집중 데이터 단일 온라인 전화번호부
중앙집중 알고리즘 완전한 정보를 기반으로 라우팅 하는것

확장성 제한의 예

  • 중앙집중화된 서버는 병목현상이 발생할 수 있으며, 결국 추가 성장을 방해할 것이다.
  • 단일 데이터베이스가 모든 통신 라인을 내부와 외부로 포화시킬 수 있다.
  • 엄청나게 많은 메시지를 라우팅해야한다. 메시지가 네트워크의 일부분에 과부하를 주기 때문에 모든 정보를 수집하고 전송하는 것은 좋지 않다.

분산 알고리즘의 특성

  • 시스템 상태에 대한 완전한 정보를 가진 기계가 없다.
  • 기계는 지역 정보만을 기반으로 의사 결정을 내린다
  • 기계 한 대가 고장났다고 알고리즘이 작동하지 않는것은 아니다
  • 글로벌 시간은 없다.

최소 3개의 요소들

  • 사용자나 프로세스들에 대한 사이즈 확장성
  • 노드간의 최대 거리(지리적인 확장성)
  • 관리 도메인 수(관리 확장성)

대부분의 시스템은 크기 확장성에 대해 어느 정도만 설명합니다. 종종 솔루션 : 여러 개의 강력한 서버가 병렬로 독립적으로 운영됩니다. 오늘날에도 문제는 지리적 및 관리적 확장성에 있다.

분산 시스템 개발 시 함정

최초 개발자의 잘못된 가정:

  • 네트워크는 신뢰할 수 있다.
  • 네트워크가 안전하다
  • 네트워크는 동종이다.
  • 토폴로지는 변경되지 않는다
  • 지연시간이 0이다
  • 대역폭이 무한대이다
  • 전송비용이 0이다
  • 관리자가 한명이다.

분산시스템의 세가지 종류

  • 고성능 분산 컴퓨팅 시스템
    • 병렬 컴퓨팅, 분산 공유 메모리 시스템
    • 클러스터 컴퓨팅, 그리드 컴퓨팅, 클라우드 컴퓨팅
  • 분산 정보 시스템
    • 거래 처리 시스템
  • 퍼베이시브 컴퓨팅 : 우리 삶 속에 퍼져있고 스며들어 있는 컴퓨팅 기술
    • 유비쿼터스 시스템
    • 모바일 컴퓨팅

클러스터 시스템

img

  • 네트워크에 있는 여러 컴퓨터들을 병렬적으로 하나의 거대한 시스템으로 만드는 것. 분산 시스템이든 병렬 시스템이든 하나의 단일 시스템 구조가 목표다. 여러 시스템들에게 공유 저장소를 허용한다.
  • 특성 : 동질성
  • 동일하거나 유사한 컴퓨터, 동일한 OS, 동일한 네트워크 기본 하드웨어는 유사한 워크스테이션 또는 PC의 모음으로 구성되며 고속 LAN으로 밀접하게 연결된다. 각노드는 동일한 OS를 실행한다.

  • 비동기식 클러스터링 : 다른 서버들이 대기하는 동안 하나의 서버가 응응 프로그램을 실행하는 구조
  • 동기식 클러스터링 : 모든 N개의 호스트 서버들이 응용프로그램을 실행하는 구조

그리드 컴퓨팅

  • 데이터에 대한 연산을 여러 레이어에 분산시켜 처리하는 컴퓨팅 시스템
  • 계층화된 아키텍처
  • 특성 : 이질성
  • 하드웨어, OS, 네트워크, 관리 도메인, 정책 등에 대한 가정이 없다.

트랜잭션 처리 시스템

  • ACID 특징을 가진다. 외부에서 내부의 변화가 보이지 않아 원자적이고 일관적이며, 하나씩 처리하므로 격리를 하며, 트랜잭션이 일어날 경우에 변화가 없어 튼튼하다.

  • img
  • Atomicity : 실행할거면 모두 실행해야한다.
  • Consistency : 모든 데이터가 일관성있게 유지되어야 한다.
  • Isolation : 모든 트랜잭션은 서로 영향을 미치면 안된다.
  • Durability : 한번 트랜잭션이 일어났으면 일어난순간 영구적으로 시스템에 유지되어야 한다.

중첩된 트랜잭션

  • 최상위 트랜잭션은 서로 다른 컴퓨터에서 병렬로 실행되는 하위 항목을 분리하여 성능을 얻거나 프로그래밍을 단순화할 수 있다.
  • 임의로 깊이가 중첩될 수 있다.

엔터프레이즈 미들웨어 시스템의 트랜잭션 처리(TP) 모니터

  • 애플리케이션이 트랜잭션 프로그래밍 모델을 제공하여 여러 서버/서버에 액세스할 수 있도록 허용

커뮤니케이션 미들웨어

  • 애플리케이션이 데이터베이스에서 분리됨
  • 애플리케이션 구성요소는 서로 직접 통신할 수 있어야 한다.
  • 애플리케이션 간 통신에 대한 이러한 필요성은 다양한 커뮤니케이션 모델로 이어진다.
  • 원격 프로시저 호출(RPC) - 애플리케이션에서 작동
  • 원격 메서드 호출(RMI) - 객체에서 작동

세 개의 하위 유형

  • 유비쿼터스 컴퓨팅 시스템 : 만연하고 지속적으로 존재한다. 즉 시스템과 사용자 사이에 지속적인 상호작용을 한다. 사용자가 네트워크나 컴퓨터를 의식하지 않고 장소에 상관없이 자유롭게 네트워크에 접속하여 정보를 주고받을 수 있는 환경
  • 모바일 컴퓨팅 시스템 : 널리 보급되어 있지만, 기기가 본질적으로 모바일이라는 것에 중점.
  • 센서 네트워크 : 환경의 실제 감지 및 작동에 중점을 둔다.

유비쿼터스 시스템의 핵심 요소

  • (배포) 기기를 네트워크화, 분산 및 투명한 방식으로 액세스 가능
  • (상호작용) 사용자와 기기 간의 상호 작용이 매우 눈에 띄지 않는다.
  • (문맥 인식) 시스템은 상호 작용을 최적화하기 위해 사용자의 컨텍스트를 인식한다.
  • (자율성) 기기는 사람의 개입 없이 자율적으로 작동하므로 고도로 자체 관리 된다.
  • (지능) 시스템은 전체적으로 광범위한 동적 동작과 상호작용을 처리할 수 있다.

모바일 및 임베디드 컴퓨팅 장치 도입

퍼베이시브 시스템에 대한 요구사항

  • 상황별 변화를 수용한다.
  • 기기는 환경이 항상 변할 수 있다는 사실을 지속적으로 인식해야 한다.
  • 임시 구성을 권장한다.
  • 기기에서 실행중인 애플리케이션 제품군을 쉽게 구성할 수 있어야 함
  • 공유를 기본값으로 인식한다.
  • 정보를 쉽게 읽고 저장, 관리 및 공유할 수 있어야 함