프로필사진
DevOps 부트캠프 기록일지
DevOps_04_김재환
02_Study(분산 시스템)
02_Study(분산 시스템)

2023. 3. 8. 14:41부트캠프/DevOps (TIL)

분산 시스템이란?

  • 구성 요소가 네트워크로 연결된 서로 다른 컴퓨터에 있는 시스템으로, 메시지를 서로 전달/통신하고 작업을 조정합니다. 여기서 구성 요소란 물리적인 하드웨어 위에 돌아가는 프로그램이라고 볼 수 있습니다. 여기에는 웹 서버가 될 수도 있고, 라우터가 될 수도 있고, 데이터베이스 시스템일수도 있습니다.
  • 공유하는 공동의 목표를 달성하기 위해 여러 개의 개별 컴퓨팅 노드에서 컴퓨팅 리소스를 활용하는 컴퓨터 프로그램의 모음입니다. 분산 컴퓨팅 또는 분산 데이터베이스라고도 하며, 별도의 노드가 공동의 네트워크를 통해 통신하고 동기화합니다. 이러한 노드는 일반적으로 별도의 물리적 하드웨어 장치를 나타내지만 별도의 소프트웨어 프로세스 또는 기타 반복적인 캡슐화 시스템을 나타낼 수도 있습니다. 분산 시스템은 시스템에서 병목 현상이나 중앙에 장애 지점을 제거하는 것을 목표로 합니다.

 

 

분산 시스템의 특징

  • 리소스 공유 – 분산 시스템은 하드웨어, 소프트웨어 또는 데이터를 공유할 수 있음
  • 동시 처리 – 여러 시스템에서 동일한 기능을 동시에 처리할 수 있음
  • 확장성 – 컴퓨팅 및 처리 용량은 추가 시스템으로 확장할 때 필요에 따라 확장할 수 있음
  • 오류 감지 – 장애를 더 쉽게 감지할 수 있음
  • 투명성 – 노드는 시스템의 다른 노드에 액세스하고 통신할 수 있음

분산 시스템의 장점

 

분산 시스템의 장점을 이해하기 전에, 다음 용어에 대한 정확한 정의를 짚고 넘어갑시다. 이후에도 계속 언급하는 개념이므로 잘 기억해둡시다.

  • 성능 (Performance) : 높은 처리량(throughput) 뿐 아니라 낮은 대기 시간(latency)과 같은 지표 등을 포함하는 개념입니다.
  • 확장성 (Scalability) : 증가하는 작업량을 처리할 수 있는가, 이로 인한 시스템 확장이 가능한가를 따져보는 기준입니다.
  • 가용성 (Availability)* : 시스템이 정상적으로 사용 가능한 정도를 의미합니다.

*가용성 

Availiability = Uptime / (Uptime + Downtime)
  • 업타임: 작동중인 시간
  • 다운타임: 작동중이지 않은 시간

분산 시스템의 장점을 단일 컴퓨터와 비교하며 말하면

단일 컴퓨터

분산 시스템

 

  • 성능: 한 대의 컴퓨터의 성능을 높이기 위해 업그레이드를 하는 것은 한계가 있을 뿐더러 비용이 많이 듭니다.
    • 여러 대의 (비교적 낮은) 성능의 컴퓨터가, 한 대의 고성능 컴퓨터의 성능을 내는 것이 가능합니다. 게다가 비용적인 측면에도 유리합니다.
  • 확장성: 한 대의 컴퓨터로 트래픽을 처리하고, 데이터를 저장하는 데에는 한계가 있습니다. 네트워크 대역폭, 스토리지(HDD, SDD 등) 저장 공간은 특정 지점까지만 확장 가능합니다.
    • 분산 시스템을 구축하면, 데이터를 여러 대의 컴퓨터에 분할하여 저장하고, 처리 작업을 각 컴퓨터에 맡기는 것이 가능합니다.
  • 가용성: 끊임없이 작동하는 한 대의 컴퓨터가 1년 중 단 5분 정도만 다운될 수 있을까요? 하드웨어의 신뢰성을 생각해보면, 한 대의 컴퓨터가 고가용성을 제공하는 것은 불가능합니다.
    • 한 컴퓨터가 담당하는 일을 수평 확장을 통해 여러 대의 똑같은 클론을 만들어 일하게 한다면, 한 컴퓨터에서 장애가 발생했을 때 효율적으로 다른 컴퓨터로 전환할 수 있습니다.

'부트캠프 > DevOps (TIL)' 카테고리의 다른 글

02_Study(프로비저닝)  (0) 2023.03.08
02_Study(자동화 & IT 자동화)  (0) 2023.03.08
02_Study(수직 확장 vs 수평 확장)  (0) 2023.03.08
02_Study(CI/CD)  (0) 2023.03.08
02_Study(DevOps)  (0) 2023.03.08