분산 시스템을 구축하는 이유
- 리소스 공유 (Resource Sharing)
- 여러 사용자가 하나의 자원을 공유하여 활용 가능
- 예: 네트워크 프린터, 파일 공유 시스템
- 컴퓨테이션 속도 향상 (Computation Speed Up)
- 여러 노드에서 병렬로 작업을 수행하여 성능 향상
- 예: 분산 컴퓨팅, 클러스터 시스템, 병렬 처리
- 안정성 (Reliability)
- 중요한 데이터를 여러 곳에 복제하여 장애 발생 시 복구 가능
- 예: 데이터센터 내 복제본 저장, MBC M드라이브와 같이 죽으면 안되는 시스템들
- 소통 (Communication)
- 여러 노드 간의 효율적인 데이터 교환 및 협업 가능
- 예: P2P 네트워크, 분산 메시징 시스템
분산 시스템의 목표 (Goals of Distributed Systems)
- 이질성 (Heterogeneity)
- 서로 다른 회사 및 운영체제 간 표준화가 되어 있지 않음
- 예: IoT, 항공기 시스템 등 SoS(System of Systems) 환경에서 중요
- 투명성 (Transparency)
- 사용자의 편리성을 위해 네트워크 구조를 감춤
- 예: 각기 다른 IP를 사용하지 않고 하나의 시스템처럼 동작
- 재사용성 (Reusability)
- 반복적으로 사용되는 기능을 미들웨어로 제공
- 예: AUTOSAR와 같은 표준화된 미들웨어 사용
- 개방성 (Openness)
- 표준 컴포넌트를 만들어 다양한 환경에서 활용 가능하게 함
- 동시성 (Concurrency)
- 여러 사용자가 동시에 시스템을 사용할 수 있도록 지원
- 보안 (Security)
- 데이터 보호 및 인증을 통해 안전한 시스템 운영 보장
- 확장성 (Scalability)
- 시스템 규모를 유연하게 확장할 수 있도록 설계
- 장애 복원력 (Resilience to Failure)
- 장애 발생 시에도 정상적인 서비스 제공 가능
- 예: 이중화, 복구 메커니즘 활용
분산 시스템의 정의
“A collection of independent network computers that appears to its users as a single coherent system.”
(사용자에게 하나의 일관된 시스템처럼 보이지만, 독립적인 네트워크 컴퓨터들의 모음)
두 가지 측면
- 하드웨어 측면 (Hardware Aspect)
- 각 기기는 독립적인 컴퓨터 (Autonomous Machines)
- 소프트웨어 측면 (Software Aspect)
- 단일 시스템 이미지 (Single System Image) 제공
자율성에서의 도전 과제
- 여러 개의 독립적인 컴퓨터가 네트워크로 연결됨
- 공유 메모리 또는 공통된 클럭(CPU)이 없음
- 메시지 전달(Message Passing)을 통한 프로세서 간 통신
- 각 컴퓨터가 자체 메모리를 가지고 있으며 자체 운영체제를 실행
결합도의 정도
하드웨어 개념에서의 결합도
- 인트라프로세스(Intraprocess) 통신과 인터프로세스(Interprocess) 통신 속도가 비슷하면 결합도가 높음 (Tightly Coupled)
- 두 속도의 차이가 크면 결합도가 낮음 (Loosely Coupled)
인트라프로세스(Intraprocess) vs 인터프로세스(Interprocess) 통신
- 인트라프로세스(Intraprocess) 통신
- 하나의 프로세스 내에서 이루어지는 통신
- 같은 주소 공간을 공유하므로 메모리 접근 속도가 빠름
- 예: 함수 호출, 스레드 간 통신 (Shared Memory, Semaphore 등)
- 인터프로세스(Interprocess) 통신
- 서로 다른 프로세스 간의 통신
- 주소 공간이 다르므로 별도의 데이터 교환 메커니즘이 필요
- 예: 메시지 큐(Message Queue), 소켓(Socket), 파이프(Pipe)
결합도의 분류
- 강한 결합 (Tightly Coupled)
- 프로세서 간 통신 오버헤드가 프로세서 내부 통신 시간과 비슷한 수준
- 빠른 데이터 교환 가능
- 예: 멀티프로세서 시스템(공유 메모리를 이용한 병렬 처리)
- 약한 결합 (Loosely Coupled)
- 프로세서 간 통신 오버헤드가 매우 큼
- 독립적인 시스템으로 동작하며, 메시지 전달을 통한 통신이 필요
- 예: 분산 시스템(네트워크를 통한 메시지 전달)
분산 시스템을 위한 컴퓨터 아키텍처의 종류
멀티프로세서 (Multiprocessors)
- 버스 기반 멀티프로세서 (Bus-based Multiprocessor)
- 여러 프로세서가 하나의 공용 버스를 통해 메모리에 접근하는 구조
- 크로스바 스위치 (Crossbar Switch)
- 다수의 프로세서와 메모리 모듈을 연결하는 스위치
- 데이터 충돌을 방지하고 동시 접근을 가능하게 함
- 오메가 스위칭 네트워크 (Omega Switching Network)
- 다단계 스위칭 네트워크를 활용하여 프로세서 간 연결을 최적화
동질 멀티컴퓨터 시스템 (Homogeneous Multicomputer Systems)
- 그리드 (Grid, 2D Mesh)
- 프로세서가 2차원 격자 형태로 연결된 구조
- 인접한 노드 간의 데이터 교환이 용이
- 하이퍼큐브 (Hypercube)
- 각 노드가 다차원 공간에서 여러 다른 노드와 연결된 구조
- 높은 확장성과 낮은 통신 지연을 제공
단일 시스템 이미지에서의 도전 과제
- 단일 시스템 이미지를 제공하기 위해 미들웨어가 애플리케이션과 API를 통해 통신
- 분산된 환경에서도 사용자가 하나의 시스템처럼 인식할 수 있도록 유지하는 것이 핵심
분산 시스템에서의 투명성
- 분산 시스템에서 제공해야 하는 다양한 형태의 투명성
- 사용자는 시스템이 분산되어 있다는 사실을 인지하지 않고 사용할 수 있어야 함
투명성 유형 | 설명 |
접근 투명성 (Access) | 데이터 표현 방식과 자원 접근 방식의 차이를 숨김 |
위치 투명성 (Location) | 자원이 어디에 위치하는지 숨김 |
이동 투명성 (Migration) | 자원이 다른 위치로 이동할 수 있음을 숨김 |
재배치 투명성 (Relocation) | 사용 중에도 자원이 다른 위치로 이동할 수 있음을 숨김 |
복제 투명성 (Replication) | 자원이 여러 사용자에게 공유될 수 있음을 숨김 |
동시성 투명성 (Concurrency) | 자원이 여러 경쟁 사용자에게 공유될 수 있음을 숨김 |
장애 투명성 (Failure) | 자원의 장애 및 복구 과정을 숨김 |
지속성 투명성 (Persistence) | 자원이 메모리에 있는지 또는 영구 저장되는지 숨김 |
소프트웨어 관점에서의 결합도의 정도
강한 결합 (Tightly Coupled)
- 글로벌 정보를 활용하며 중앙 집중적인 소프트웨어 아키텍처
- 마스터-슬레이브(Master-Slave) 방식으로 운영
- 예: 하둡(Hadoop)처럼 계층적 구조를 가짐
- 중앙 제어 소프트웨어가 전체 시스템을 관리
약한 결합 (Loosely Coupled)
- P2P(Peer-to-Peer)처럼 계층 구조 없이 평등한(flat) 구조
- 각 노드가 독립적으로 운영되며, 중앙 제어 없이 자율적으로 통신
- 글로벌 정보 공유가 적고, 개별 노드의 자율성이 높음
HW, SW의 결합도의 정도에 따른 분류
오른쪽으로 갈수록 결합도(coupling)의 종류가 줄어든다.
분산 시스템을 위한 운영체제의 종류
- 분산 운영체제 (Distributed Operating System, DOS)
- 하드웨어 리소스를 추상화하여 사용자에게 단일 시스템처럼 보이도록 함
- 네트워크 운영체제 (Network Operating System, NOS)
- 네트워크에 연결된 독립적인 시스템 간에 프린터 및 파일 등의 자원을 공유
- 미들웨어 기반 시스템 (Middleware-based System)
- 하둡(Hadoop)과 같은 미들웨어를 통해 분산 환경에서 효율적인 데이터 처리 제공
단일 프로세서 운영체제 (Uniprocessor Operating Systems)
1세대 운영체제 (1960-1970)
- 중앙 집중식 운영체제 (Centralized OS)
- 목표: 자원 관리, 가상 머신 개념 도입 (Extended Machine, Virtuality)
- 특징: 프로세스 관리, 메모리 관리, 입출력 관리, 파일 시스템 관리
네트워크 운영체제 (Network Operating System, NOS)
- 네트워크가 운영체제의 커널 레벨에서 동작하며 독립된 네트워크 시스템을 유지
- 프린터 및 네트워크 리소스를 공유 가능
- 이기종 시스템(heterogeneous systems)에서도 운영 가능
2세대 운영체제 (1980년대)
- 목표: 네트워크 환경에서 자원 공유 (Interoperability)
- 특징:
- 리소스 접근 (Resource Access)
- 정보 교환 (Information Exchange)
- 네트워크 브라우징 (Network Browsing)
클라이언트/서버 모델 (Client/Server)
- 네트워크 운영체제에서 클라이언트-서버 방식으로 서비스 제공
- 예: FTP 프로토콜을 이용한 파일 리소스 공유
원격 마운트 (Remote Mount)
- 글로벌 파일 시스템 개념을 도입하여 네트워크 내에서 파일 시스템을 공유
- 각 클라이언트가 서버의 파일 시스템을 서로 다른 경로에 마운트 가능
- 파일 시스템을 하나로 묶는 유니온 마운트(Union Mount) 개념 적용
분산 운영체제 (Distributed Operating Systems, DOS)
- 일반적인 구조: 모든 시스템이 동일한 유형(homogeneous)으로 구성됨
- 목표: 여러 개의 컴퓨터 시스템을 하나의 단일 컴퓨터처럼 보이도록 제공
3세대 운영체제 (1990년대)
- 네트워크 운영체제(Network OS)
- 목표: 다수의 컴퓨터 시스템을 하나의 단일 컴퓨터처럼 보이게 함 (Single Computer View)
- 특징:
- 전역 파일 시스템(Global View of File System)
- 단일 네임스페이스(Single Name Space)
- 시간 동기화(Time Synchronization)
- 확장 가능한 연산 능력(Scalable Computational Power)
- 보안(Security)
최적의 해결책?
- DOS: 시스템 유형이 동일해야 하므로 유연성이 부족함
- NOS: 최소한의 공통 기능만 제공하므로 기능이 제한적이며 다양성이 너무 큼
- 미들웨어(Middleware): 두 운영체제의 장점을 결합한 최적의 절충안
미들웨어의 역할
- NOS + 추가 소프트웨어 계층
- NOS의 기본 기능에 미들웨어를 추가하여 이기종 시스템 간의 상호 운용성을 높임
미들웨어의 위치
- 분산 시스템에서 미들웨어는 애플리케이션과 운영체제 사이에 위치
- 다양한 하드웨어 및 운영체제 환경에서 애플리케이션이 원활하게 동작할 수 있도록 지원
미들웨어와 개방성 (Openness)
- 개방형 미들웨어 기반 분산 시스템에서는 모든 미들웨어 계층이 동일한 프로토콜을 사용해야 함
- 애플리케이션에 제공하는 인터페이스도 동일해야 함
- 이는 네트워크 운영체제(NOS)에서 사용하는 소켓 API보다 훨씬 높은 수준의 추상화 제공
DOS, NOS, 미들웨어 기반 운영체제 비교
비고 | 특징 멀티프로세서 DOS (Multiprocessor OS) |
멀티컴퓨터 DOS (Multicomputer OS) |
네트워크 NOS (Network OS) |
미들웨어 기반 DS (Middleware-based DS) |
투명성 정도 | 매우 높음 (Very High) | 높음 (High) | 낮음 (Low) | 높음 (High) |
모든 노드에서 동일한 OS 사용 | 예 (Yes) | 예 (Yes) | 아니오 (No) | 아니오 (No) |
OS 복사본 개수 | 1 | N | N | N |
통신 방식 | 공유 메모리 (Shared Memory) | 메시지 전달 (Messages) | 파일 기반 (Files) | 특정 모델 기반 (Model Specific) |
자원 관리 | 글로벌, 중앙 집중식 관리 | 글로벌, 분산 관리 | 개별 노드에서 관리 | 개별 노드에서 관리 |
확장성 | 없음 (No) | 중간 (Moderately) | 높음 (Yes) | 상황에 따라 다름 (Varies) |
개방성 | 폐쇄형 (Closed) | 폐쇄형 (Closed) | 개방형 (Open) | 개방형 (Open) |
반응형
'CS 지식 > 분산시스템과 컴퓨팅' 카테고리의 다른 글
[분산시스템] 분산 알고리즘과 Coordinator개념 소개 (Bully Algorithm, Zookeeper Leader) (0) | 2025.04.14 |
---|---|
장애허용성과 TMR, 프로세스 그룹의 개념 설명 (Fault Tolerance, Process Group) (1) | 2025.04.12 |
Ceph의 소개와 HDFS와 차이 (0) | 2025.04.03 |
빅데이터 처리와 람다 아키텍처 소개(Hadoop) (0) | 2025.04.02 |
분산시스템과 컴퓨팅의 소개 (0) | 2025.03.10 |
댓글