분산 시스템의 문제점

이질성(Heterogeneity)

  1. 네트워크
  • 와이파이, 블루투스와 같은 다양한 다양한 종류의 인터넷을 사용한다. 분산 시스템을 사용할 때는 이러한 점을 생각하지말고 해야한다.
  • 서로 연결된 모든 컴퓨터가 서로 통신하기 위해 인터넷 프로토콜을 사용한다. 인터넷 프로토콜은 다양한 네트워크를 통해 구현된다.
  1. 컴퓨터 하드웨어
  • CPU - 정수의 바이트 순서
  1. 운영체제
  • 인터넷 프로토콜에 모두 동일한 API를 제공하는 것은 아닙니다.
  1. 프로그래밍 언어
  • 문자 및 데이터 구조에 대해 서로 다른 표현 사용
  1. 서로 다른 개발자에 의한 구현
  • 네트워크 통신, 메시지 내 원시 데이터 항목 및 데이터 구조의 표현 등 공통 표준을 사용한다.

  • 미들웨어

    • 기본 네트워크, 하드웨어, 운영 체제 및 프로그래밍 언어의 이질성을 마스킹할 뿐만 아니라 프로그래밍 추상화를 제공하는 소프트웨어 계층
    • 서버 및 분산 애플리케이션의 프로그래머가 사용할 수 있는 통일된 계산 모델 제공 - 원격 객체 호출, 원격 이벤트 알림, 원격 SQL 액세스 및 분산 트랜잭션 처리

    • CORBA(Common Object Request Broker)
    • Java Remote Method Invocation(RMI)
  • 모바일 코드
    • 한 컴퓨터에서 다른 컴퓨터로 전송하여 목적지에서 실행할 수 있는 프로그램 코드
    • ex)자바애플릿, 자바스크립트
    • 가상 머신 접근 방식은 다양한 호스트 컴퓨터에서 코드를 실행할 수 있는 방법을 제공합니다.
  • 개방성(Openness)

    • 시스템을 다양한 방법으로 확장 및 재실행할 수 있는지 여부를 결정하는 특성
    • 새로운 자원 공유 서비스를 추가하고 다양한 클라이언트 프로그램에서 사용할 수 있는 정도에 따라 주로 결정된다.

    장점

    • 새로운 서비스 도입 및 구 서비스 재구현에 의해 하드웨어 수준에서, 소프트웨어 수준에서 확장 가능하여 애플리케이션 프로그램의 자원 공유 가능
    • 개별 공급업체로부터 독립
  • 특성
    • 주요 인터페이스가 공개됨
    • 시스템 구성요소의 주요 소프트웨어 인터페이스에 대한 규격 및 문서화는 소프트웨어 개발자가 이용할 수 있도록 한다.
    • 균일한 통신 메커니즘의 제공 및 공유 리소스에 대한 액세스를 위한 공개된 인터페이스를 기반으로 합니다.
    • 이질적인 하드웨어 및 소프트웨어, 아마도 다른 공급업체에서 구성할 수 있다,
  • 보안

    • 기밀성

      • 비인가된 사용자들에 사용하는 것을 막는다.
      • 아이디 같은것을 통해서 신분 확인한다.
    • 통합성

      • 내용에 손상이 가지 말아야 한다.

      가용성

      • 언제든지 사용하려면 사용할 수 있도록 만들어야 한다.
      • DoS 공격..
    • 방화벽

      • 인트라넷 내부에 문제가 생기면 해결하기 어렵다.
    • 모바일 코드의 보안

      • 이메일 첨부파일에 대한 프로그램 실행으로 인해 바이러스 감염 위험 우려가 있다

ㅇScalability

  • 하드웨어가 좋아져도 퍼포먼스에 큰 영향이 없다.
  • 자원 수 및 이용자 수가 현저하게 증가했을 때 그 효과가 유지된다면 그 시스템을 확장가능하다고 한다.

  • 확장 가능한 분산 시스템 설계의 어려움
    • 물적자원 원가 통제
      • 자원 수요가 증가함에 따라 합리적인 비용으로 시스템을 확장할 수 있어야 한다,
    • 성능 손실 관리
      • 직선구조보다 계층구조를 이용한 알고리즘이 더 잘 확장된다
    • 소프트웨어 자원 고갈 방지
      • IPv4(32비트 인터넷 주소) vs IPv6(128비트 인터넷 주소)
        • 수년 후 시스템에 투입될 수요를 에측하기는 어렵다.
        • 향후 성장에 대한 과도한 보상은 어쩔 수 없이 변화에 적응하는 것보다 더 나쁠 수 있다.
      • 성능 병목 현상 방지 - 로드 밸런싱
        • 성능 병목 현상을 방지하기 위해 알고리즘이 분산되어야 한다
        • 매우 많이 사용되는 리소스의 성능을 향상시키기 위해 캐싱 및 복제를 사용할 수 있다.
  • 고장을 다루는 것

    • 언제 고장이 발생하는가?

      • 부정확한 결과를 만들거나 의도된 계산을 완료하기 전에 멈춘다.
    • 분산시스템 내 실패는 부분적이다

      • 몇몇 컴포넌트들은 다른 컴포넌트들이 작동하면서 실패한다.
    • 실패를 다루기 위한 기술

      • 실패를 감지하는 것 : 손상된 데이터를 탐지하는 체크섬, 인터넷에서 원격 충돌 서버와 같은 일부 다른 장애를 탐지하는 것이 어렵다.
      • 고장을 마스킹 하는 것 : 사용자는 고장이 발생한 것을 몰라야한다.
      • 실패를 허용하면서 돌아가는 것 : CPU를 16개를 가지고 동작하는데 1개가 고장나도 15개로 돌아간다.

      • 고장 대처 기술
  1. 장애 복구 : 서버가 다운된 후 영구 데이터를 복구하거나 롤백할 수 있다.
  • 결함이 발생할 경우 계산이 불완전하며, 영구 데이터가 일관된 상태가 아닐 수 있다.
  1. 중복
  • 중복 부품의 사용으로 고장 허용
  • 네트워크의 여러 경로 - 여러 개의 분리된 경로
  • 데이터베이스를 여러 서버에 복제할 수 있다.
  • 성능 저하 없이 빠르게 변화하는 데이터의 복제본을 최신 상태로 유지하기 위한 효과적인 기술의 설계는 어려운 문제다.

  • 가용성(Availability)
    • 사용 가능한 시간의 비율 측정
    • 높은 수준의 가용성을 제공하는 분산 시스템
  • 동시성
    • 여러 의뢰인의 요청을 동시에 처리할 수 있도록 허용한다
      • 여러 클라이언트가 동시에 공유 리소스에 액세스하려고 시도하여 일관성 없는 결과를 도출함
      • 레이스 상태
    • 동시 환경에서 안전하게 작업하기 위해서는 데이터의 일관성을 유지하는 방식으로 작업 동기화가 이루어져야 한다.
      • 세마포어와 같은 기술
  • 투명성

    • 분산 시스템에서 구성 요소 분리에 대한 사용자와 애플리케이션 프로그래머의 은폐로 정의되어 시스템이 독립적인 구성 요소의 집합이 아닌 전체로 인식되도록 한다.

투명성의 종류

  1. 접근 투명성
  • 분산 파일 시스템과 같은 작업을 사용하여 로컬 및 원격 리소스에 액세스할 수 있다. -> 멀리 있는 파일에 접근가능
  1. 위치 투명성
  • 물리적 또는 네트워크 위치에 대한 지식없이 리소스에 접근할 수 있다.
  • URL은 위치 불명, 이동성 불명

1&2는 네트워크 투명성이다.

  1. 동시성 투명성
  • 여러 프로세스 간에 간섭 없이 공유 리소스를 사용하여 동시에 운영 가능
  1. 복제 투명성
  • 사용자나 애플리케이션 프로그래머가 복제본에 대한 지식 없이 여러 리소스 인스턴스를 사용하여 신뢰성과 성능을 향상시킬 수 있다.
  1. 실패 투명성
  • 하드웨어 또는 소프트웨어 구성요소의 고장에도 불구하고 사용자와 응용프로그램이 작업을 완료할 수 있다.
  1. 이동성 투명성
  • 사용자나 프로그램의 운영에 영향을 미치지 않고 시스템 내에서 자원과 고객의 이동을 가능하게 한다
  1. 성능 투명성
  • 부하가 다양할 때 성능 향상을 위해 시스템을 재구성할 수 있다.
  1. 투명성 확대
  • 시스템 구조나 애플리케이션 알고리즘의 변경 없이 시스템과 애플리케이션의 규모를 확장할 수 있다.

Quality of Service(QoS)

  • 애플리케이션의 서비스 요구사항을 충족하는 시스템 기능
    • 그 성과는 필요한 컴퓨팅 및 네트워크 자원을 적절한 시기에 사용할 수 있느냐에 달려있다.
    • 응용 프로그램이 각 작업을 제 시간에 완료할 수 있도록 보장하는 컴퓨팅 및 통신 리소스를 제공하기 위한 시스템 요구 사항
    • 각 중요 리소스는 QoS가 필요한 애플리케이션에 예약되어야 합니다.
    • 보장 서비스 vs 최선의 노력 서비스
  • 고객 및 사용자가 경험하는 QoS에 영향을 미치는 시스템의 주요 비기능적 특성
    • 안정성, 보안 및 성능
    • 변화하는 시스테 ㅁ구성 및 리소스 가용성을 충족할 수 있는 적응성