분산 시스템의 문제점
이질성(Heterogeneity)
- 네트워크
- 와이파이, 블루투스와 같은 다양한 다양한 종류의 인터넷을 사용한다. 분산 시스템을 사용할 때는 이러한 점을 생각하지말고 해야한다.
- 서로 연결된 모든 컴퓨터가 서로 통신하기 위해 인터넷 프로토콜을 사용한다. 인터넷 프로토콜은 다양한 네트워크를 통해 구현된다.
- 컴퓨터 하드웨어
- CPU - 정수의 바이트 순서
- 운영체제
- 인터넷 프로토콜에 모두 동일한 API를 제공하는 것은 아닙니다.
- 프로그래밍 언어
- 문자 및 데이터 구조에 대해 서로 다른 표현 사용
- 서로 다른 개발자에 의한 구현
-
네트워크 통신, 메시지 내 원시 데이터 항목 및 데이터 구조의 표현 등 공통 표준을 사용한다.
-
미들웨어
-
- 기본 네트워크, 하드웨어, 운영 체제 및 프로그래밍 언어의 이질성을 마스킹할 뿐만 아니라 프로그래밍 추상화를 제공하는 소프트웨어 계층
-
서버 및 분산 애플리케이션의 프로그래머가 사용할 수 있는 통일된 계산 모델 제공 - 원격 객체 호출, 원격 이벤트 알림, 원격 SQL 액세스 및 분산 트랜잭션 처리
- CORBA(Common Object Request Broker)
- Java Remote Method Invocation(RMI)
- 모바일 코드
-
- 한 컴퓨터에서 다른 컴퓨터로 전송하여 목적지에서 실행할 수 있는 프로그램 코드
- ex)자바애플릿, 자바스크립트
- 가상 머신 접근 방식은 다양한 호스트 컴퓨터에서 코드를 실행할 수 있는 방법을 제공합니다.
-
개방성(Openness)
-
- 시스템을 다양한 방법으로 확장 및 재실행할 수 있는지 여부를 결정하는 특성
- 새로운 자원 공유 서비스를 추가하고 다양한 클라이언트 프로그램에서 사용할 수 있는 정도에 따라 주로 결정된다.
장점
- 새로운 서비스 도입 및 구 서비스 재구현에 의해 하드웨어 수준에서, 소프트웨어 수준에서 확장 가능하여 애플리케이션 프로그램의 자원 공유 가능
- 개별 공급업체로부터 독립
- 특성
-
- 주요 인터페이스가 공개됨
- 시스템 구성요소의 주요 소프트웨어 인터페이스에 대한 규격 및 문서화는 소프트웨어 개발자가 이용할 수 있도록 한다.
- 균일한 통신 메커니즘의 제공 및 공유 리소스에 대한 액세스를 위한 공개된 인터페이스를 기반으로 합니다.
- 이질적인 하드웨어 및 소프트웨어, 아마도 다른 공급업체에서 구성할 수 있다,
-
보안
-
-
기밀성
-
- 비인가된 사용자들에 사용하는 것을 막는다.
- 아이디 같은것을 통해서 신분 확인한다.
-
통합성
-
- 내용에 손상이 가지 말아야 한다.
가용성
- 언제든지 사용하려면 사용할 수 있도록 만들어야 한다.
- DoS 공격..
-
방화벽
-
- 인트라넷 내부에 문제가 생기면 해결하기 어렵다.
-
모바일 코드의 보안
-
- 이메일 첨부파일에 대한 프로그램 실행으로 인해 바이러스 감염 위험 우려가 있다
-
ㅇScalability
- 하드웨어가 좋아져도 퍼포먼스에 큰 영향이 없다.
-
자원 수 및 이용자 수가 현저하게 증가했을 때 그 효과가 유지된다면 그 시스템을 확장가능하다고 한다.
- 확장 가능한 분산 시스템 설계의 어려움
-
- 물적자원 원가 통제
-
- 자원 수요가 증가함에 따라 합리적인 비용으로 시스템을 확장할 수 있어야 한다,
- 성능 손실 관리
-
- 직선구조보다 계층구조를 이용한 알고리즘이 더 잘 확장된다
- 소프트웨어 자원 고갈 방지
-
- IPv4(32비트 인터넷 주소) vs IPv6(128비트 인터넷 주소)
-
- 수년 후 시스템에 투입될 수요를 에측하기는 어렵다.
- 향후 성장에 대한 과도한 보상은 어쩔 수 없이 변화에 적응하는 것보다 더 나쁠 수 있다.
- 성능 병목 현상 방지 - 로드 밸런싱
-
- 성능 병목 현상을 방지하기 위해 알고리즘이 분산되어야 한다
- 매우 많이 사용되는 리소스의 성능을 향상시키기 위해 캐싱 및 복제를 사용할 수 있다.
-
고장을 다루는 것
-
-
언제 고장이 발생하는가?
-
- 부정확한 결과를 만들거나 의도된 계산을 완료하기 전에 멈춘다.
-
분산시스템 내 실패는 부분적이다
-
- 몇몇 컴포넌트들은 다른 컴포넌트들이 작동하면서 실패한다.
-
실패를 다루기 위한 기술
-
- 실패를 감지하는 것 : 손상된 데이터를 탐지하는 체크섬, 인터넷에서 원격 충돌 서버와 같은 일부 다른 장애를 탐지하는 것이 어렵다.
- 고장을 마스킹 하는 것 : 사용자는 고장이 발생한 것을 몰라야한다.
-
실패를 허용하면서 돌아가는 것 : CPU를 16개를 가지고 동작하는데 1개가 고장나도 15개로 돌아간다.
- 고장 대처 기술
-
- 장애 복구 : 서버가 다운된 후 영구 데이터를 복구하거나 롤백할 수 있다.
- 결함이 발생할 경우 계산이 불완전하며, 영구 데이터가 일관된 상태가 아닐 수 있다.
- 중복
- 중복 부품의 사용으로 고장 허용
- 네트워크의 여러 경로 - 여러 개의 분리된 경로
- 데이터베이스를 여러 서버에 복제할 수 있다.
-
성능 저하 없이 빠르게 변화하는 데이터의 복제본을 최신 상태로 유지하기 위한 효과적인 기술의 설계는 어려운 문제다.
- 가용성(Availability)
-
- 사용 가능한 시간의 비율 측정
- 높은 수준의 가용성을 제공하는 분산 시스템
- 동시성
-
- 여러 의뢰인의 요청을 동시에 처리할 수 있도록 허용한다
-
- 여러 클라이언트가 동시에 공유 리소스에 액세스하려고 시도하여 일관성 없는 결과를 도출함
-
- 레이스 상태
-
- 동시 환경에서 안전하게 작업하기 위해서는 데이터의 일관성을 유지하는 방식으로 작업 동기화가 이루어져야 한다.
-
- 세마포어와 같은 기술
-
투명성
-
- 분산 시스템에서 구성 요소 분리에 대한 사용자와 애플리케이션 프로그래머의 은폐로 정의되어 시스템이 독립적인 구성 요소의 집합이 아닌 전체로 인식되도록 한다.
투명성의 종류
- 접근 투명성
- 분산 파일 시스템과 같은 작업을 사용하여 로컬 및 원격 리소스에 액세스할 수 있다. -> 멀리 있는 파일에 접근가능
- 위치 투명성
- 물리적 또는 네트워크 위치에 대한 지식없이 리소스에 접근할 수 있다.
- URL은 위치 불명, 이동성 불명
1&2는 네트워크 투명성이다.
- 동시성 투명성
- 여러 프로세스 간에 간섭 없이 공유 리소스를 사용하여 동시에 운영 가능
- 복제 투명성
- 사용자나 애플리케이션 프로그래머가 복제본에 대한 지식 없이 여러 리소스 인스턴스를 사용하여 신뢰성과 성능을 향상시킬 수 있다.
- 실패 투명성
- 하드웨어 또는 소프트웨어 구성요소의 고장에도 불구하고 사용자와 응용프로그램이 작업을 완료할 수 있다.
- 이동성 투명성
- 사용자나 프로그램의 운영에 영향을 미치지 않고 시스템 내에서 자원과 고객의 이동을 가능하게 한다
- 성능 투명성
- 부하가 다양할 때 성능 향상을 위해 시스템을 재구성할 수 있다.
- 투명성 확대
- 시스템 구조나 애플리케이션 알고리즘의 변경 없이 시스템과 애플리케이션의 규모를 확장할 수 있다.
Quality of Service(QoS)
- 애플리케이션의 서비스 요구사항을 충족하는 시스템 기능
-
- 그 성과는 필요한 컴퓨팅 및 네트워크 자원을 적절한 시기에 사용할 수 있느냐에 달려있다.
-
- 응용 프로그램이 각 작업을 제 시간에 완료할 수 있도록 보장하는 컴퓨팅 및 통신 리소스를 제공하기 위한 시스템 요구 사항
-
- 각 중요 리소스는 QoS가 필요한 애플리케이션에 예약되어야 합니다.
-
- 보장 서비스 vs 최선의 노력 서비스
- 고객 및 사용자가 경험하는 QoS에 영향을 미치는 시스템의 주요 비기능적 특성
-
- 안정성, 보안 및 성능
-
- 변화하는 시스테 ㅁ구성 및 리소스 가용성을 충족할 수 있는 적응성