콘텐츠로 이동

분산 시스템이란 무엇인가

1. 분산 시스템이란 무엇인가?

분산 시스템은 단순히 여러 대의 컴퓨터를 모아놓은 것이 아니라, 공동의 목표를 위해 협력하는 구조를 가집니다.

  • 정의: 네트워크를 통해 연결된 서로 다른 컴퓨터에서 실행되는 여러 프로세스로 구성된 시스템입니다.
  • 핵심 요소:
  • 프로세스: 메모리에서 실행 중인 응용 프로그램의 인스턴스입니다.
  • 네트워크 통신: 물리적으로 분리된 프로세스들이 소통하는 유일한 수단입니다.
  • 상태 공유 및 협업: 각 프로세스가 서로를 인지하고 공동의 목표를 위해 작업을 수행해야 합니다.

2. 중앙 집중 시스템의 한계 (수직 확장)

혼자서 모든 것을 처리하는 단일 서버 시스템은 비즈니스가 성장함에 따라 다음과 같은 치명적인 문제에 직면합니다.

  • 수직 확장(Vertical Scaling)의 한계: 성능 좋은 부품으로 교체하는 방식은 물리적인 성능 및 비용의 한계가 명확합니다.
  • 단일 장애점(SPOF): 컴퓨터 한 대에 문제가 생기면 서비스 전체가 중단됩니다.
  • 접속 지연(Latency): 서버와 사용자의 물리적 거리가 멀수록 응답 속도가 느려집니다.
  • 보안 취약성: 디도스(DDoS) 공격 등 외부 위협에 대응하기 어렵습니다.

3. 분산 시스템을 사용하는 이유 (장점)

잘 설계된 분산 시스템은 중앙 집중 시스템의 단점을 극복하고 거대한 규모의 서비스를 가능하게 합니다.

  • 수평 확장성(Horizontal Scaling): 필요에 따라 서버를 계속 추가하여 컴퓨팅 능력을 무한히 확장할 수 있습니다.
  • 고가용성: 일부 서버가 고장 나더라도 나머지 서버가 작동하여 서비스 중단을 방지합니다.
  • 지리적 이점: 전 세계 곳곳에 서버를 두어 사용자에게 빠른 경험을 제공합니다.
  • 효율성: 대규모 데이터를 안전하게 처리하면서 운영 비용을 최적화할 수 있습니다.

4. 요약 및 결론

우리가 일상에서 사용하는 스트리밍, 쇼핑, 검색 서비스는 모두 거대한 분산 시스템 위에서 동작합니다. 사용자에게는 마치 한 대의 컴퓨터와 통신하는 것 같은 원활한 경험을 제공하는 것이 잘 설계된 분산 시스템의 목표입니다.

다만, 프로세스 간의 상태를 공유하고 협력하게 만드는 알고리즘 설계가 매우 까다롭기 때문에 이를 해결하는 능력이 엔지니어에게 매우 중요합니다.