프로그래밍/분산시스템

[분산 시스템] 1. 분산 시스템이란?

riroan 2025. 5. 4. 01:41

현대사회에서 대부분의 사람은 PC나 모바일 기기등 통신이 가능한 기기를 하나 이상은 가지고 있다. 이 말은 통신이 가능한 기기를 가진 사람들은 인터넷에 접속하여 원하는 정보를 얻고 전자 상거래를 하며 게임을 할 수 있는 환경에 있다는 뜻이다. 서버의 입장에서는 이러한 많은 사람들의 요청을 문제없이 수행할 수 있도록 해야한다. 이를 가능하게 하기 위해선 단일 노드보다는 다중 노드에서 애플리케이션을 구동시키려는 시도가 필요하다.

 

분산 시스템 아키텍처

분산 시스템(Distributed system)은 여러 컴퓨팅 노드를 사용하여 하나의 목적을 이루기 위한 시스템이다. 여기서 노드는 서버라고 생각하면 편하다. 가장 단순한 분산 시스템으로 대부분의 프로젝트에서 사용하는 애플리케이션 - 데이터베이스 구조를 생각할 수 있다.

Application과 DB간에 CPU나 디스크 자원 간섭을 받지 않기 위해 노드를 분리하여 네트워크로 통신하는 모델이다. 또는 대규모 트래픽을 감당하기 위해 애플리케이션을 다중화하는 모델도 생각할 수 있다.

이 경우엔 하나의 도메인으로 다중 애플리케이션에 접근하기 위해 로드밸런서를 앞에 두어야 한다. 이 외에도 Master-slave구조 DB, DB 다중화, 샤딩 등 다양한 영역에서 분산 시스템을 설계할 수 있다. 큰 범위에서 보면 분산 시스템에서 수행하는 일은 다음과 같다.

  • 다중화 (복제)
  • 파티셔닝

하나의 분산 시스템은 위의 목표 중 하나를 달성한다. 각 목표를 달성하기 위해 내부적으로 많은 기법들이 들어있는 것 같다.

 

이러한 분산 시스템을 구성하면 다음과 같은 장점이 있다.

  • 컴퓨팅 노드를 물리적으로 분리하여 하나의 컴퓨팅 노드가 존재하는 지역이 사용 불가능해져도 다른 지역에 존재하는 노드를 사용하여 시스템을 유지할 수 있다.
  • 단일 컴퓨팅 노드로 해결할 수 없는 규모의 문제를 해결한다. (대규모 트래픽, 분산 알고리즘 ...)
  • 이미 다중 컴퓨팅 환경을 구성했기 때문에 확장성에 있어서 유연하다.

반면에 분산 시스템에는 다음과 같은 단점도 존재한다.

  • 다중화 분산 시스템을 구성할 때 데이터 동기화 문제를 해결하기 까다롭다.
  • 노드간 통신이 네트워크로 이루어지기 때문에 네트워크 이슈가 발생하면 시스템 전체에 위협이 된다.
  • MSA와 마찬가지로 노드가 분산되어있기 때문에 트러블슈팅하기 어렵다.
  • 다수의 노드를 관리하기 때문에 공격 루트가 많아져 보안에 신경을 더 써야한다.
  • 여러 컴퓨팅 자원을 사용하기 때문에 비용이 많이 든다.