title: "**분산 시스템**"
description: "**분산 시스템**"
cleanUrl: /sw-engineer/distributed-system
ogImage: ""
floatFirstTOC: right

분산 시스템의 정의

물리적으로 분리된 상태에서 컴퓨터 통신 네트워크를 통해 약결합(Loosely Coupled)을 이루는 정보 시스템의 집합

분산 시스템의 특징

downsizing이란 새로운 산업화 경향을 이끌어냄(예: 메인 프레임을 네트워크로 연결된 워크스테이션 및 PC로 대치함으로 비용대비 성능의 급격한 향상을 가져옴)

  1. 자원 공유(Resource Sharing) **다수의 사이트가 상호 연결되어 있을 경우, 한 사이트의 사용자는 타 사이트의 자원을 사용 가능할 것이다. 예) 파일 공유, 분산 데이터베이스의 정보처리, 원격 프린팅, (고속 어레이 프로세서 등의) 원격의 전용 하드웨어 이용 등.
  2. 연산 속도 향상(Computing Speedup) 부하 공유(Load Sharing) : 하나의 특정 연산을 동시 처리 가능한 여러 부분 연산으로 분할할 수 있다면, 이를 분산 시스템의 여러 사이트에 분산 처리함으로 전체 처리 속도 향상을 기대할 수 있음.
  3. 신뢰성(Reliability) 분산 시스템의 특정 사이트에서 결함(failure)이 발생하더라도 나머지 사이트들은 계속하여 수행할 수 있다. Fault Tolerance, High Avaliablity의 구현.
  4. 통신(Communication) 다수의 사이트가 통신 네트워크를 통해 상호 연결되어 있을 때, 각 사이트의 사용자 간에 정보 교환이 가능. 또한 저수준에서는 시스템 간에 메시지가 전달됨. 또한, 사이트 간에 메시지 전달이 가능하다면 단일 시스템(standalone system)의 모든 고수준 기능이 분산 시스템에 적용이 가능할 것이며, 이에 대한 구현이 바로 파일 전송, 로그인, 메일, 웹 브라우징, RPC 등이 되겠다.

분산 시스템이 갖추어야할 특성

  1. 이질성(Heterogeneity): 시스템 요소 간의 인터페이스 표준화로, 서로 다른 하드웨어, 운영체제, 프로그래밍 언어, 네트워크로 시스템 구성이 가능해야함.
  2. 개방성(Openness): 다양한 공급자(vendors)로부터의 하드웨어 및 소프트웨어를 포함할 수 있어야.
  3. 확장성(Scalability): H/W, S/W, 리소스의 추가 및 삭제가 용이하고 성능 손실이나 병목 현상이 발생하지 않도록 효율적이 제어가 가능한 환경을 제공해야.
  4. 결함 핸들링(Failure Handling): 시스템 장애를 점검, 극복 가능해야하고, 시스템 장애 시에도 작업을 일관성있게 완료 가능해야.
  5. 병렬성(Concurrency): 동시에 여러 프로세싱이 가능해야. 이를 위해 공유 자원에 대한 동기화 메커니즘이 요구됨.
  6. 투명성(Transparency): 시스템 내부적 변화가 클라이언트에 제공되는 서비스에 영향을 미치지 않도록 해야.

분산 투명성의 종류

  1. 위치 투명성(location Transparency): 로컬 또는 원격 서비스나 객체에 대한 위치 정보가 없이도 접근 가능함을 보장.
  2. 접근 투명성(access Transparency): 서비스나 객체 등의 접근에 대해 언제나 동일한 경로를 갖도록 보장.