단일 컴퓨터는 물리적인 자원의 한계가 뚜렷하며, 장애 발생 시 시스템 전체가 마비되는 단일 장애점(SPOF)의 위험을 안고 있습니다.
이를 극복하기 위해 필요에 따라 새 노드를 쉽게 추가하는 **확장성(Scalability)**과, 일부 컴퓨터가 고장 나도 전체 시스템이 정상 작동하는 **가용성(Availability)**을 확보해야 합니다.
고가의 단일 장비를 무리하게 구축하는 대신, 저렴한 하드웨어 자원을 최적화하여 높은 **효율성(Efficiency)**을 이끌어내기 위해 분산 아키텍처가 필수적입니다.
투명성(Transparency)과 일관성(Consistency)
복잡한 인프라와 중복된 데이터 동기화 과정은 내부로 숨겨지며, 사용자는 여러 운영체제가 섞인 환경이라도 완벽한 단일 컴퓨터처럼 상호작용합니다.
현대 아키텍처를 논할 때 이 세 가지 용어는 관점에 따라 명확히 구분되어 사용됩니다.
- 분산 시스템(Distributed System): 하드웨어와 소프트웨어를 모두 포함하며, 네트워크로 연결된 독립적인 컴퓨터들이 협력하여 사용자에게 '하나의 시스템'처럼 보이는 전체 구조입니다.
- 분산 컴퓨팅(Distributed Computing): 분산된 인프라 위에서 복잡한 연산을 여러 노드로 나누어 병렬 처리하고 통신 프로토콜을 다루는 소프트웨어적인 알고리즘이자 학문 분야입니다.
- 분산 환경(Distributed Environment): 네트워크 토폴로지, 클라우드 가용 영역, 컨테이너 오케스트레이션 등 시스템이 구동되는 물리적/논리적 인프라의 상태와 주변 조건을 의미합니다.
분산 시스템은 여러 디바이스를 네트워크로 묶어 각자의 책임을 나누고 데이터를 지속적으로 동기화하는 방식으로 동작합니다.
- 내결함성(Fault Tolerance) 설계: 시스템 설계 초기부터 개별 장비의 실패를 기정사실로 두고, 한 노드가 죽으면 다른 노드가 작업을 이어받도록 설계합니다.
- 데이터 복제와 정합성: 여러 컴퓨터에 걸쳐 정보와 중복 데이터를 안전하게 공유하며, 모든 컴퓨터 간에 자동으로 데이터의 일관성을 맞추는 메커니즘을 가동합니다.
- 논리적 분리: 물리적 디바이스의 복잡한 통신과 변환 과정을 미들웨어와 프로토콜로 감싸, 애플리케이션 계층에서는 투명하게 자원을 활용하도록 만듭니다.
출처: https://aws.amazon.com/ko/what-is/distributed-computing/