본문 바로가기

강의 정리/분산시스템

분산시스템 (2) 분산시스템의 기초

01. 컴퓨터 시스템 성능을 올리는 방법

 

왜 서버 시스템의 성능을 올려야만 하는가?

처음 클라이언트와 서버는 정석적인 1:1 관계로 서로 요청을 주고받았다.

그런데 클라이언트의 수가 증가하게 되면서 서버가 처리할 수 있는 한계치를 맞이하게 되었고, 서버의 연산량을 늘릴 필요성이 생겼다. 서버의 연산량을 늘리는 방법으로는 다음의 두가지 방법이 제시되었다.

 

1. 종적 스케일링 Vertical scaling 

다른 말로 Scale up라고도 부른다. 서버에 사용하는 하드웨어 요소의 성능을 올리는 걸 말한다. 

 

2. 횡적 스케일링 Horizontial scaling

다른 말로 Scale out라고도 부른다. 더 많은 서버를 추가하는 것을 말한다.

 

주로 횡적 스케일링을 사용한다. 왜 Sclae out을 사용하는 걸까?

 

 

 

02. Scale out을 사용하는 이유

 

Scale up 시스템에는 한계가 존재한다.

첫번째로 CPU의 모어의 법칙이 끝을 맞이하면서 하드웨어의 성능 향상은 옛날만큼 획기적이지 않게 되었다.

두번째로 메모리와 디스크에 대한 대역폭 병목 현상은 일반적인 PC와는 다르게 서버의 하드웨어는 용량이 어마어마하게 높기 때문에 메인보드가 물리적 한계를 극복하기 어렵기 때문이다.

즉, 하드웨어의 성능은 둔화되었다.

 

Scale-out 시스템은 더 좋은 퍼포먼스(장점)을 갖는다.

1) 높은 처리량과, 낮은 대기시간.

이때 낮은 대기시간은 병렬처리 덕분이다.

서버의 처리량을 재는 척도는 '1초에 얼마나 많은 작업량을 처리할 수 있는가' = 단위시간당 처리가 되는 작업량이다. 이때 스케일 아웃 시스템으로 서버가 추가되면 - 서버를 추가한 만큼의 작업량이 늘어난다. 서버를 한대 추가하면 *2, 두대 추가하면 *3.

 

2) 장애발생시의 좋은 대처. 내결함성(결함 견딤), 결함포용성. + 항상 사용 가능함(=고가용성).

이때 고가용성은 성능과는 관계없이 작동만 하면 된다. 서버가 무언가 고장이 났을 때, 속도가 수직으로 떨어지더라도 어쨌든 작동을 하면 충족된다.

그래서 고가용성보다 내결함성이 더 달성되기 어려운 조건이다. 내결함성은 1MPS 퍼포먼스 중, 장애가 발생해도 동일한 성능을 계속해서 제공해야 하기 때문이다.

 

즉, 스케일 아웃의 사용 이유는 장애 발생시의 대처이다.

 

3) 가성비. Scale-up으로 성능을 두배 올리는 것보다 서버를 한대 더 구매하는게 훨씬 저렴하다.

 

 

- 분배 시스템은 어떻게 보이는가?

작은 서버룸에 클라우드 데이터 센터가 존재.

 

- 서버의 상호연결이 중요하다

네트워크 케이블: 분산 시스템은 여러대의 서버가 네트워크를 통해 상호소통하여 작동하는 것이기 때문에 케이블이 상당히 복잡하게 얽혀있다. 심지어는 케이블 선 정리만을 하는 전문가들이 존재하며, 미국에서는 상당히 대우받는 위치에 있다고 한다.

 

 

 

- 시스템 구성요소

-> 서버들

-> 스위치들

-> 서버 랙들

-> 미들박스들

서버와 스위치를 서버 랙에 배치한다. 미들박스들은 여러가지 기능을 수행하는 하드웨어들이다.

 

- 다양한 서버 타입들

1) 컴퓨팅 서버: 여러개의 코어, 그 코어 하나에도 여러개의 CPU가 들어가있다.

특별히 성능이 좋지는 않다. 하지만 서버는 24시간 돌아가야 하기 때문에 안정성이 성능보다 더 중요하다. 유튜브 등은 작동되지 않았을 때의 손실이 천문학적일 것이다.

2) 저장장치 서버: 데이터 용량이 크고, 빠른 접근이 목적이다.

서버 분리가 쉽고 간편하다. 하드디스크 24개를 한 랙에 넣는 등, 서버 용량이 매우 매우 매우 크다.

3) GPU 서버: 머신러닝 학습을 위해서는 수많은 GPU가 요구된다. 정말 비싸다!

 

- 서버 랙

서버들이 살고있는 아파트. 수많은 서버들과 스위치들을 보관하는 서버 캐비넷.

유지보수와 쿨링에 최적화.

최대한 작은 면적 안에 서버를 욱여넣기 위해 존재. 구조는 TOP 스위치 - 밑의 랙들은 스위치와 모두 연결된다.

 

- 미들박스

다양한 기능으로 동작한다. 방화벽, 디도스 프로텍터, 등등.

 

 

 

- Rack-scale systems

하나의 락으로 규모가 제한된 분산 시스템이다.

예시로 분산된 저장장치, 복제된 저장장치(백업 서버), 분산된 머신 러닝 클러스터, 데이터 분석 클러스터, 웹서버 클러스터 등.

락 스케일은 물리적인 스케일을 의미하지만, 이때 하나의 랙 내부의 서버들은 모두 공통된 목표를 보유하고 있다.

 

서버는 어느 타입이라도 가능하다.

 

-> TOP(Top-Of-Rack) switches

지금은 빠르고 복잡하다. 같은 랙과 다른 랙들 간 서버들의 상호연결을 맡는다.

 

 

- Multi-rack system

멀리 락 시스템이란 무엇인가? 싱글 락 시스템이 단일 목표를 가진 하나의 락이었다면, 멀티 락은 말 그대로 단일 목표를 가진 여러개의 락이다. 

데이터 센터가 있다. 기업들은 그들의 서비스를 실행하기 위해 자신만의 데이터 센터를 보유하고 있다.

 

-> Leaf-Spine <-> 3-tier 구조

계층적인 구조. high availability와 로드 밸런싱을 위한 경로가 다양하다. 

ex. Huawei leaf-spine 구조.

 

 

- Multi-tenant systems

-> 싱글 세입자 시스템 vs 멀티 tenant 시스템 = 분산 시스템을 혼자 vs 분산 시스템을 여럿이서.

1) single tanant systems의 경우, 모든 인프라를 한명이 독점해서 사용한다. 여러개의 서비스들과 어플리케이션을 실행할 수 있다. 예를 들어 구글의 다양한 하위서비스들을 실행한다.

2) multi-tenant systems의 경우, 여러 인프라들을 세입자들이 공유한다. 예를 들어 클라우드 데이터센터를 말할 수 있다.

 

-> 멀티 세입자 시스템의 더 좋은 이해

구글 데이터 센터의 경우, 구글의 다양한 서비스들이 하나의 동일한 데이터 센터에서 실행된다.

=> single-tenant system & multi-service system

아마존 데이터 센터의 경우, 서로 다른 기업들의 다양한 서비스들이 동일한 데이터 센터에서 실행된다.

=> multi-tenant system & multi-service system

 

 

- Geo-분산 시스템

지정학적으로 분산된 시스템. 데이터센터들로 이루어진 시스템이다. 전 세계적으로 흩어져있다.