[CS] Distributed System, 분산 시스템의 정의와 목표

2023. 10. 31. 12:54
반응형

분산 시스템이란? 

 

  1. 네트워크로 연결되어 있음
  2. 어떤 목표를 달성하기 위해 함께 작동하는 독립적인 컴퓨터들의 집합
  • 소프트웨어 : 사용자에게는 하나의 싱글 시스템처럼 보이게됨(분산 인식을 잘 모름)
  • 하드웨어 : 자율 컴퓨터 → OS/메모리/클럭를 공유하지 않고 자기만의 것을 가지고 있음.
  • (상이한 성질의 서버 컴퓨터들이라고 보면 분산 환경을 운영하기 어려움 → 미들웨어)

 

 

 

Flynn의 분산 시스템 체계

 

Flynn의 분산 시스템을 분류하기 위한 방법으로 다음 네 가지 주요 유형으로 정의하였다.

SISD (Single Instruction, Single Data)

하나의 처리기(CPU)가 하나의 명령어를 실행하고 하나의 데이터를 처리한다.
병렬 처리의 이점을 제공하지 않는다.


SIMD (Single Instruction, Multiple Data)

하나의 명령어가 여러 개의 데이터에 동시에 적용됩니다.
예시로 GPU의 병렬 처리 또는 벡터 프로세서가 있다.


MISD (Multiple Instruction, Single Data)

하나의 데이터에 대해 여러 개의 독립적인 명령어가 실행될 수 있다.
일반적으로 특수한 응용 프로그램에 사용된다.


MIMD (Multiple Instruction, Multiple Data)

여러 개의 CPU가 각각 독립적인 명령어를 실행하고 다른 데이터를 처리한다.
대부분의 현대 병렬 컴퓨팅 시스템은 MIMD 아키텍처를 기반으로 구축된다. 

분산 컴퓨팅, 클러스터 컴퓨팅, 다중 코어 프로세서, 및 다중 프로세서 시스템에 사용된다.

 

 

왜 분산 시스템인가?

 

  • 자원 공유
  • 성능 향상 → 병렬 처리
  • Reliability(신뢰성) : 하나의 Node가 Fails → 나머지로 지속 가능함
  • 지리적 분포 및 가용성 : 지역적으로 여러군데에 분산해도 됨
  • 점진적 확장
  • 격리를 통한 보안

 

 

 

분산 시스템의 어려움

 

  • Asynchrony(동시성, 비동기성)
    • 컴퓨터(Node)들이 각자 독립적으로 놀고있음
    • 네트워크 딜레이가 있음. 메시지 지연 시간 발생
  • Failure(손상)
    • 시스템 일부 고장 가능
    • 실제 고장난 것인지, 트래픽이 몰려 느린 처리인지 구분이 어려움
  • Concurrency and consistency(병행성과 일관성)
    • 하나가 바뀌면 모두 바꾸어주어야 일관성이 유지될 것임
  • Perfomance(성능)
    • 다양하고 예측이 어려움.
    • Tail latency : 시스템의 대부분의 요청이 빠르게 처리되지만 일부 요청은 상대적으로 오랜 시간이 걸리는 현상 → 속도는 가장 느린 시스템(최악의 경우)
  • Testing and Verification(테스팅과 검증)
    • 모든 실패 케이스를 검증하기는 매우 어려움
  • Security(보안)

 

 

분산 시스템의 목표

 

  1. Resource Sharing(자원 공유)
    1. 자원의 효율적인 공유
    2. 제어되고, 효율적인 방법으로 사용자들의 자원 엑세스 방법을 제공
      • 자원의 종류는 스토리지 파일, 등등 다양
    3. Security는 항상 문제가 될 수 있음(변조 등) → 기밀성, 무결성, 가용성
  2. Transparency(투명성)
    • 물리적으로 분산되어 있다는 사실을 숨기는 성질 -> 사용자는 Centralized System처럼 인식하고 사용할 수 있음
    • Transparency의 종류
      1. Access : 호출 프로시저가 동일한 형태로 쓸 수 있는 형태로..
      2. Location : Object들의 위치에 대해 숨김
      3. Migration : 자원의 이동을 숨김
      4. Relocation : 서비스의 위치 변경을 숨김
      5. Replication : 분산 시스템 → 복제임을 숨김 → 하나가 뻗으면 자연스래 다른 복제본으로 가야 함
      6. Concurrency : 병행성과 병렬 처리 사실을 숨김
      7. Failure, Persistence : Crash를 숨기고, 일관성을 숨김
    • 완전한 Transparency 목표는 과도할 수 있음 
      • 분산이 명백한 경우 숨길 수 없음(사용자가 다른 대륙에 있을 수 있음)
      • 네트워크와 Node의 Failure(장애)를 완전히 숨기는 것은 불가능
      • 완전한 Transparancy는 Performance을 희생하고, 시스템의 Distribution(분산)을 노출시킴
  3. Openess(개방성) 
    • 내재된 환경과 관계없이 다른 개방형 시스템과 상호작용할수있는 능력
    • Openess 향상시키기 위해, 프로토콜/인터페이스 등을 표준화시키는 것이 용이
    • Openess를 획득한다는 것 → Flexibility(여러 구성 요소들을 통합), Heterogeneity(이질성)으로부터 독립적으로 분산 시스템 구성(하드웨어, 플랫폼, 언어)
  4. Reliablilty(신뢰성)
    • Centralized System(중앙 집중, 단일 시스템) → SPoF
    • Distributed System → Fault Tolerance → 하나의 머신이 이상이 생겨도 운영가능. Reliability, Availabilty 향상
  5. Performance(성능)
    • Centralized System(중앙 집중, 단일 시스템) → 단일 서버가 모든 요청 처리 → Bottleneck(병목 현상) 발생 가능
    • Distributed System → 성능 향상을 위해 사용자 요청을 병렬로 여러 서버에 보낼 수 있음
  6. Scalability(확장성) 
    • 트래픽(로드) 부하가 늘어남에 따라서, 증가되는 요구량에 따라 얼마나 적응할 수 있는가
    • 예를들어 IPv6는 Scalable한 것.
    • Scaling 테크닉
      1. 통신 지연 시간(Communication Latency) 숨기기
        1. 비동기 통신 활용, 응답에 대한 별도의 처리기 확보, 모든 Application이 이 모델에 적합하지 않음
      2. Distribution : 데이터 처리 방식을 분산시킴(클라이언트쪽에서 처리하도록 나눠줌 → Offload), DNS(Divide problem space), WWW..
      3. Replication / Cacheing(복제와 캐싱) : 웹, 파일 캐싱, 복제된 서버 및 데이터베이스
    • 발생할 수 잇는 문제점
      1. Inconsistencies : 똑같은 카피본이 여러개 있으면, 다 안바꾸면 일관성에 모순됨
      2. 일관성을 유지시키기 위해서는 수정 시 전역 Synchronization(동기화)가 필요함
    • Scale up과 Scale out
      1. Scale up은 컴퓨터의 성능 자체를 향상시키는 방법(위로 쌓음)
        1. 병렬 처리 및 더 빠른 메모리/스토리지 등, 고가의 하드웨어
        2. SPoF(Single point of failure, 단일 장애 지점) : 하나만 고장나도 다 고장남
      2. Scale Out은 컴퓨터를 여러대를 두는 방법
        1. 클러스터의 분산 노드
        2. Fault tolerant : 모든 지점에서 Fail이 발생할 수 있지만 명백한 가용성 손해는 없음

 

 

 

 

분산 시스템의 사용

 

클라우드 컴퓨팅
클라우드 컴퓨팅은 서비스 제공 업체가 인프라 및 서비스를 분산된 데이터 센터를 통해 제공하는 기술이다. 

클라우드 컴퓨팅은 분산 시스템을 기반으로 하며, 사용자가 필요에 따라 컴퓨팅 리소스를 확장하고 관리할 수 있게 한다.


IoT(사물 인터넷)
IoT는 센서, 장치 및 네트워크를 통해 서로 연결된 사물들의 네트워크를 의미한다. 분산 시스템은 대규모의 IoT 장치와 데이터를 처리하고 관리하는 데 필수적이다.

 

빅데이터

분산 시스템을 사용하여 데이터를 저장하고 병렬적으로 처리하는 데 필요한 기술과 아키텍처를 제공한다. 분산 시스템은 빅 데이터 처리를 위한 Hadoop 및 Apache Spark와 같은 플랫폼에서도 사용된다.

 

분산 데이터베이스
분산 시스템은 데이터베이스 시스템을 분산화하여 데이터를 여러 위치에 저장하고 관리할 수 있도록 도와준다. 이는 데이터 가용성 및 확장성을 향상시키는 데 도움이 된다.


분산 네트워크 및 통신

인터넷은 분산 네트워크 시스템의 한 예이다. 분산 네트워크는 지리적으로 분산된 노드 간에 통신을 지원하며 데이터 및 서비스를 전달한다. 


분산 컴퓨팅
여러 컴퓨터 또는 컴퓨터 클러스터를 네트워크로 연결하여 단일 시스템처럼 동작하도록 하는 컴퓨팅 패러다임이다.

이를 통해 컴퓨팅 리소스를 효율적으로 활용하고, 높은 가용성을 제공하며, 데이터를 분산 저장하고 처리할 수 있습니다.
로드 밸런싱: 트래픽을 분산하여 서버 부하를 분산함.

 

 


Content / Image Reference (CC License)

 

Tannenbaum and Van Steen :: Distributed Systems: Principles and Paradigms (PDF)

https://commons.wikimedia.org

반응형

BELATED ARTICLES

more