-
분산 시스템 개요IT/분산 및 병렬처리 2021. 9. 17. 02:41728x90
분산 시스템(Distributed System)이란?
사용자에게 단일 컴퓨터로 보여지는 자율 컴퓨터(컴퓨팅 요소)의 집합
여기서 자율 컴퓨터라는 것은 하드웨어적 요구사항이며 컴퓨팅 요소는 IoT와 같은 요소를 의미한다.
또한, 사용자에게 단일 컴퓨로 보여지는 것은 소프트웨어적 요구사항으로 중앙관리시스템과 같이 보여지는 것을 의미한다.
Motivation
중앙 집중형 시스템은 여러 가지의 문제점이 있다.
우선 모든 요청이 한 곳으로 몰리기 때문에 병목현상으로 인한 부하가 늘어나 성능이 떨어질 수 있다. 또한, 중앙 집중형 시스템은 구축을 하는데 많은 비용이 필요하고 유지관리 비용도 많이 필요하다.
과거에는 모든 장치를 한 곳에 모은 슈퍼컴을 사용하였고 자원의 생성 기술도 발달하지 않았기 때문에 굉장히 비쌌다. 또한, 시스템을 사용하기 위해서 모두 유선으로 연결되어 슈퍼컴을 사용해야 한다는 불편함이 있었다. 그러나 기술이 발전하며 자원의 가격이 하락하였고 네트워크의 속도가 빨라졌으며 노트북이나 PC와 같은 기기들의 성능이 과거의 슈퍼컴을 뛰어넘을 정도로 발전하였기 때문에 분산형 시스템으로 중앙집중형 시스템의 문제를 해결할 수 있다.
General Structure
분산 시스템의 구조 두 가지를 살펴볼 것이다.
- 이질형(Heterogeneous) 분산 시스템: Middleware service를 이용해 사용자에게 시스템이 단일 컴퓨터로 이뤄진 것처럼 보여준다. 각 머신의 OS는 동일하지 않아도 된다.
- 동질형(Homogeneous) 분산 시스템: 운영체제 수준에서 단일 컴퓨터인 것처럼 보일 수 있도록 한다. 따라서 각 머신의 OS를 통일시켜야 한다.
Design Issues
- Transparency (투명성)
Every user's and application's view of distributed system: A single computer system
분산 시스템이 단일 컴퓨터 시스템으로 보여야하는 이유
- 중앙 집중형 시스템보다복잡하다.
- 시스템을 사용하기 어렵다
투명성을 높이면 성능이 떨어지게 된다.
그 이유는 자원이 수정되면 서로 의사소통을 해야해서 의사소통을 위해 소프트웨어 자원을 사용하게 되는데 이로인해 Management overhead가 발생될 수 있기 때문이다.
투명성의 단계는 3단계로 나눌 수 있다.
- End User: 단말기기 사용자로 분산 시스템에 대한 지식이 적기 때문에 투명성을 극대화시켜야 한다.
- Application developer: 지식 수준에 따라 세 단계로 나눌 수 있으며 단계별로 투명성을 조절할 수 있다.
- SW developer: 분산 시스템에 대한 이해도가 높기 때문에 하부 구조를 이용할 수 있어 투명성의 수준을 낮춰도 된다.
- Scalability (확정성)
A system is scalable if it poerate effectively at many different scales
시스템이 scalable 하다는 것은 다양한 규모로 동작할 수 있어야한다는 것이다. 즉, 규모에 맞게 성능이 향상될 수 있어야 한다.
만약 시스템에서 사용할 수 있는 자원이 늘어났지만 성능은 자원이 늘어난 만큼 증가하지 않았다면 그 시스템은 scalable 하다고 할 수 없다.
확장성 문제의 주요 원인
- Centralized sevices
- 예) 중앙집중형 DNS 서버 : 요청이 몰려 트래픽이 늘어나 인터넷을 사용할 수 없다.
- 따라서 서비스를 분산시켜야 한다.
- Centralized data
- 예) 서비스에 필요한 데이터를 한 곳에만 저장하면 모든 요청이 한 곳에 몰리게 된다.
- 따라서 데이터를 각각의 기기에 복제한다.
- Centralized algorithms
- 예) complete information을 사용하는 라우팅: 수집할 정보가 많아 오버헤드가 발생한다.
- 따라서 partial infomation을 사용하여 인접한 라우터의 정보만 받도록한다.
- Concurrency (동시성)
- Concurrency execution: 여러 개의 태스크가 동시에 수행되는 것처럼 보이지만 하나씩 나눠서 수행
- parallelism execution: 동시에 독립적으로 수행(멀티코어나 여러 개의 머신 필요)
Concurrency 문제는 여러 개의 머신이 동일한 자원에 동시에 접근할 때 발생할 수 있다. 만약 순차적으로 접근한다면 serial 하게 실행하기 때문에 자원의 일관성을 유지할 수 있지만 동시에 접근하면 일관성을 유지하기 힘들다.
- Failure Handling (결함허용)
분산 시스템을 구성하는 일부 컴퓨터들이 고장난다 하더라도 그 시스템이 계속해서 사용자에게 일관성 있는 컴퓨팅 서비스를 제공할 수 있도록 하는 기술
분산 시스템에 머신 1,2,3이 존재하고 머신들은 각각 A,B,C 서비스를 제공하고 있다고 하자.
- 서로 고장 여부를 지속적으로 확인한다. heartbeat로 자신이 살아있다는 것을 알린다.
- 머신1의 heartbeat를 못받게 되면 다른 머신들은 머신1이 고장 난 것으로 인식한다.
- 살아있는 머신2,3은 누가 고장난 머신1의 A 서비스를 담당한다.(조금 더 여유로운 머신이 담당) 이때 머신2가 선택되었다면 머신2는 자신의 남은 자원을 사용해 추가적 서비스를 지원하는 것이기 때문에 서비스가 조금 느려질 수 있다.
- 머신1이 다시 복구된다면 A 서비스가 다시 머신1에게 넘어가게 된다.
- Heterogeneity
- Flexibility
- Security
728x90