분산 시스템(Distributed System)이란, 여러 대의 독립적인 컴퓨터들이 네트워크를 통해 연결되어, 사용자에게는 마치 하나의 통일된 시스템처럼 보이도록 작동하는 시스템을 말합니다. 우리가 사용하는 구글 검색 엔진, 페이스북, 넷플릭스 같은 대규모 서비스들은 모두 수많은 컴퓨터로 이루어진 분산 시스템 위에서 동작하고 있습니다.
그렇다면 왜 굳이 여러 컴퓨터를 묶어서 사용할까요? 여기에는 몇 가지 중요한 장점들이 있습니다.
비교적 가까운 거리에 있는 컴퓨터들을 연결하는 네트워크입니다. 예를 들어, 집 안의 컴퓨터와 프린터, 또는 한 사무실이나 건물 내의 컴퓨터들을 연결하는 경우가 해당합니다. 마치 한 집안의 가족들처럼 가까이 모여 있는 그룹이라고 생각할 수 있습니다. 속도가 빠르고 구축 비용이 상대적으로 저렴한 편입니다.
LAN보다 훨씬 넓은 지역, 예를 들어 도시와 도시, 국가와 국가를 연결하는 거대한 네트워크입니다. 우리가 흔히 말하는 인터넷(Internet)이 바로 전 세계를 연결하는 가장 대표적인 WAN입니다. 여러 도시를 잇는 고속도로망과 비슷하다고 볼 수 있습니다. LAN보다는 속도가 느리고 비용이 더 많이 들 수 있습니다.
라는 데이터 꾸러미를 보내고 받으며 통신하는 방식입니다.
마치 편지를 주고받는 것과 비슷하죠. 보내는 컴퓨터는 메시지를 만들어서 네트워크로 보내고, 받는 컴퓨터는 그 메시지를 받아서 내용을 확인하고 필요한 작업을 수행합니다.
직접적인 연결 없이도 정보를 교환할 수 있다는 장점이 있습니다.
한 컴퓨터가 네트워크 상의 다른 컴퓨터에 있는 함수(Procedure 또는 Method)를 마치 자신의 함수처럼 호출하는 방식입니다.
프로그래머 입장에서는 원격지에 있는 함수를 호출하는 코드가 로컬 함수를 호출하는 코드와 거의 동일하게 보여서, 분산 프로그래밍을 좀 더 쉽게 할 수 있다는 장점이 있습니다. 마치 옆자리 동료에게 "이것 좀 계산해줘"라고 직접 부탁하는 것과 비슷합니다.
Q: "RPC가 무엇인가요?"
A: "원격지에 있는 프로시저(함수)를 로컬에 있는 것처럼 호출할 수 있게 하는 통신 메커니즘입니다. 분산 환경에서 컴포넌트 간의 상호작용을 쉽게 구현하도록 돕습니다."
여러 대의 독립적인 컴퓨터들이 네트워크로 연결되어 자원을 공유할 수 있도록 지원하는 운영체제입니다. 각 컴퓨터는 자신만의 OS를 가지고 독립적으로 작동하지만, 네트워크를 통해 다른 컴퓨터의 파일이나 프린터 등에 접근할 수 있습니다.
사용자는 어떤 컴퓨터에 접속해서 작업하는지 명확히 알고 있어야 하는 경우가 많습니다. (예: Windows Server, 오래된 Unix 시스템)
네트워크로 연결된 여러 컴퓨터들을 마치 하나의 강력한 단일 시스템처럼 보이게 만드는 운영체제입니다. 사용자는 자신이 사용하는 자원이 어느 컴퓨터에 있는지 알 필요가 없습니다.
OS가 알아서 자원을 관리하고 작업을 분산시켜 처리합니다. 진정한 의미의 분산 시스템을 구현하는 데 사용되지만, 설계하고 구현하기가 매우 복잡합니다. (예: 연구용 시스템인 Amoeba, Chorus 등. 현대의 클라우드 플랫폼들도 일부 분산 OS의 특징을 가집니다.)
DFS에서 파일이나 디렉토리에 이름을 붙이고 관리하는 방식(명명, Naming)은 매우 중요합니다. 사용자가 파일의 실제 위치를 몰라도 쉽게 접근할 수 있도록
위치 투명성
을 제공하는 것이 핵심입니다.
이름 지정 방식: 보통 여러 서버에 걸쳐 파일 이름을 고유하게 관리하기 위해, 서버 이름과 로컬 파일 경로를 조합하거나 (예: server1:/path/to/file), 전역적인 이름 공간(Global Namespace)을 사용하여 모든 파일이 하나의 계층적 구조(마치 하나의 큰 C 드라이브처럼) 안에 있는 것처럼 보이게 합니다. 후자가 위치 투명성을 더 잘 제공합니다.
투명성: 위치 투명성 외에도, 사용자가 로컬 파일과 동일한 방식으로 원격 파일에 접근할 수 있도록
원격 서버에서 파일을 읽어올 때, 자주 사용될 것을 대비해 사용자 컴퓨터(클라이언트)나 가까운 서버에 파일의 복사본을 임시로 저장해두는 기술입니다.
다음에 같은 파일에 접근할 때는 원격 서버까지 가지 않고 캐시된 복사본을 사용하므로 접근 속도가 훨씬 빨라집니다.
하지만 원본 파일이 변경되었을 때 캐시된 내용과 일치하지 않는
일관성(Consistency)
문제가 발생할 수 있어서, 이를 해결하기 위한 캐시 유효성 검사(Cache Validation) 메커니즘이 필요합니다. (자료구조의
분산 파일 시스템(DFS)은 현대 컴퓨팅 환경, 특히 클라우드 서비스와 빅데이터 처리에서 없어서는 안 될 핵심 기술입니다.
구글의 GFS, Hadoop의 HDFS, Ceph 등 다양한 DFS들이 개발되어 사용되고 있으며, 각각의 시스템은 특정한 목적(대용량 파일 처리, 높은 내결함성 등)에 맞게 설계되었습니다.
앞으로 데이터의 양이 계속해서 증가하고 더 많은 서비스가 분산 환경을 기반으로 구축됨에 따라, DFS는 더욱 중요해질 것이며 확장성, 성능, 일관성, 보안 등 다양한 측면에서 지속적인 연구와 발전이 이루어질 것입니다.