Introduction
Table of contents
Introduction
분산 시스템이란 무엇인가?
- 분산 시스템은 사용자에게 단일 일관된 시스템으로 나타나는 자율 컴퓨팅 요소의 모음
- “A collection of autonomous computing elements (nodes), which appears to its users as a single coherent system”
분산시스템의 두가지 특징
- 독립적인 컴퓨팅 요소
- 사용자에게 단일시스템 처럼 보여야 한다.
특징 1 : Collection of Autonomous Nodes 자율 컴퓨팅 요소의 집합
- Independent Behavior 독립적인 행동 - 시간개념으로 자율적 → 동기화, 조정문제 발생
- 노드 컬렉션으로 그룹 관리 - 열린그룹 / 폐쇄 그룹
- 조직 - 오버레이 네트워크로 구성됨
- Structured Overlay 구조화 된 오버레이
- Unstructured Overlay 구조화 되지 않은 오버레이
특징 2 : Single Coherent System 단일 코히어런트 시스템
- 분산시스템은 하나의 일관된 시스템으로 나타나야 한다는 의미
- 즉 노드의 집합 전체는 사용자와 시스템간의 상호작용이 어디서, 언제, 어떻게 발생하는지에 관계없이 동일하게 작동하여야 함 Keyword : Distribution transparency (유동투명성)
분산시스템의 목표
- 리소스를 사용 가능하게 만들기
- 유통 투명성
- 개방상태
- 확장성
Middleware : the OS of Distributed Systems
- Distributed system organized in a middleware layer
분산 시스템의 속성
- Heterogeneity 이기종성
- Explicit communications 명시적 통신
- Isolation 격리
- Concurrency 동시성
- Extensibility 확장성
- Mobility 이동성
- Partial Failure 부분실패
- Multiple Authorities 여러권한
분산 시스템의 과제
- Heterogeneity 이기종성 지원 네트워크, 하드웨어, 운영체제, 프로그래밍 언어 의 이기종성을 지원하여야 함 → Middleware 미들웨어와 Mobile Code 모바일 코드를 이용 미들웨어 : 분산 메커니즘에 덜 관심을 둔 분산 앱에 공통 레이어를 제공함 모바일 코드 : 한 컴퓨터에서 다른 컴퓨터로 전송되어도 실행할 수 있는 코드(JVM-자바 가상머신) 이 있는 자바 코드
- Openness 개방성 시스템의 확장성(extensibility) 또는 재구성(reconfigurability)을 결정하는 기준 기본 환경의 이질성에 관계없이 다른 구성 요소의 서비스와 상호 작용 허용 → Key factor : 일관성 (Coherence) 개방형 분산 시스템의 목표 :
- Interperability 상호 운용성 : 다른 두가지 시스템이 공존하고 함께 작동할 수 있음
- Composability 조합성 : 단일 분산 시스템을 위해 컴포넌트가 개발될수도 있지만 컴포넌트 들이 re-use되는 경우가 많다.
- Extensibility 확장성 : 원래의 구성요소에 영향을 주지않고 새 구성요소를 추가하거나 기존 구성요소를 교체할 수 있다.
- Scalability 확장성 사용자 및 리소스를 추가하여도 눈에 띄는 성능저하나 관리 복잡성이 증가하지 않아야 함 확장성을 위한 고려사항 :
- 물리적 자원 비용 (Cost of phyiscsal resources)
- 성능 손실 (Performance loss)
- 소프트웨어 리소스 부족 (Software resource shortage)
- 성능 병목 현상 (Performance bottleneck) Scalability Components:
- Size scalability 크기 확장성 - 성능이나 리소스 부족을 해결하기 위해 확장 (사용자 및 프로세스 수)
- Geographic scalability 지리적 확장성 - 사용자와 어플리케이션이 멀리 떨어져 생기는 통신 지연을 줄이기 위해 (노드 간 최대거리)
- Administrative scalability 관리 확장성 - 많은 독립된 관리 조직에 걸쳐 있는 경우에도 시스템을 관리하기 위해 (관리 도메인 수) Scaling techniques 스케일링 기술
- Hiding communication latencies
- Partitioning data and computations across multiple machines
- Replication and caching 스케일링 기술 : 분포(분할) , 복제/캐싱
-
Partial Failure 부분 실패
Partial Failure : A system is considered faulty once its behavior is no longer consistent with its specification
장애 처리 기술 :
- Fault detection 오류감지
- Fault masking 문제 마스킹
- Fault tolerance 문제 허용
- Recovery from failures 장애 복구
- Redundancy 중복성
-
Concurrency 동시성
Concurrent access to a shared resource may cause inconsistency of the resource
공유 리소스에 대한 동시 엑세스로 인해 리소스 불일치가 발생할 수도 있음
- 업데이트가 손실, 일관되지 않은 검색이 초래할 수 있음.
해결 방안 : 트랜잭션의 작업을 직렬화(한번에 하나씩) 해야 한다.
To avoid possible problems due to concurrent access, operations of related transactions must be serialized (one-at-a-time)
-
Security 보안
- Authentication 입증(누가)
- Authorization 권한부여(무엇을)
- Encryption and Decryption 암호화 및 암호 해독
- Distribution Transparency 배포 투명성 분리에서 파생된 속성을 은폐하여 분산시스템을 단일 통합 시스템처럼 보이게 하는 추상화 개념/매커니즘 유동 투명성의 유형 :
- Access 접근
- Location 위치
- Relocation 재배치
- Migration 이동
- Replication복제
- Concurrency 동시성
- Failure 실패
분산 시스템의 유형
- High Performance Distributed Computing
- 많은 분산 시스템이 고성능 컴퓨팅을 위해 구성됨. 예시) Parallel Computing 병렬 컴퓨팅 Cluster Computing 클러스터 컴퓨팅 Grid Computing 그리드 컴퓨팅 Cloud Computing 클라우드 컴퓨팅
- Distributed Information Systems
- Transaction processing system 트랜잭션 : ACID(원자성, 일관성, 격리, 지속성)을 충족하는 개체의 상태에 대한 작업 모음입니다
- Distributed Systems for Pervasive Computing
- 노드가 작고 이동성이 있으며 종종 더 큰 시스템에 내장되는 차세대 분산 시스템. 시스템이 사용자 환경에 자연스럽게 혼합된다는 사실을 특징으로 함.
- 세가지 하위 유형 :
- Ubiquitous system 유비쿼터스 시스템
- Mobile computing 모바일 컴퓨팅
- senser network 센서 네트워크