데이터베이스 아키텍처 - 가용성과 확장성
12 Dec 2020 | DB 가용성 확장성 Scale-In Scale-OutIndex
- 데이터베이스의 아키텍처
- 역사와 개요
- 가용성과 확장성의 확보
- 다중화
- Clustering - DB 서버의 다중화
- Replication - DB 서버와 데이터의 다중화
- Shared Nothing - 성능 추구 위한 다중화
책 데이터베이스 첫걸음 - 4장 데이터베이스와 아키텍처 구성을 정리한 내용입니다.
가용성과 확장성의 확보
가용성(Availability)
장애 없이 서비스를 24/7 계속 사용 가능 한가 => 무중단
확장성(Scalability)
사용자 수의 증대에 유연하게 대처할 수 있고, 비즈니스 요구 사항이 변경되어도 대규모적인 재설계/재설치 등의 필요없이 확장이 얼마나 쉽고 가능한가 => 유연성
어떻게 하면 정지하지 않는 시스템을 만들 수 있을까?
가용성을 높이는 2가지 전략
- Scale-Up: 퀄리티로 노린다. (소수 정예)
- 각 컴포넌트의 성능을 높여 장애 발생률을 낮추고 가용성을 높이는 전략
- CPU, 메모리, 디스크 등의 하드웨어를 추가하거나 더 좋은 하드웨어로 교체하여 단일 컴포넌트 자체의 성능을 높인다
- 세탁기, 냉장고
- Scale-Out: 양으로 노린다.
- 사물은 언젠가 망가진다는 체념을 전제로 여분을 준비해두는 전략
- 동일 성능의 컴포넌트를 추가하여 부하를 분산시켜 처리 능력을 향상시키는 것
- 화장실 두루마리 휴지
현재 대부분은 부품 한개의 신뢰성을 올리는 것보다 저품질이어도 수로 보완하는 전략을 사용한다.
클러스터
동일한 기능의 컴포넌트를 병렬화하는 것 - 즉, 동일한 기능의 컴포넌트를 여러 개 준비해 마치 하나의 컴포넌트처럼 사용하는 것을 클러스터링(Clustering)이라 한다. ‘클러스터’는 사물이나 사람의 집합을 가리키는 말로, 포도 등의 ‘송이’란 의미도 있다.
클러스터 구성으로 시스템 가동률(무고장으로 동작할 확률)을 높이는 것을 ‘다중화(Redundancy)’라 하는데, 다중화는 내구성이 더 높고 견고하다라는 좋은 의미가 있다.
단일 장애점(SPOF, Single Point of Failure)
다중화가 되어 있지 않아서 시스템 전체 서비스의 계속성에 영향을 주는 컴포넌트를 ‘단일 장애점(SPOF)’이라 한다. ‘쇠사슬의 강도는 가장 약한 고리의 강도로 결정된다’란 말이 있는데, 이 말은 ‘단일 장애점의 신뢰성이 시스템 전체의 가용성을 결정한다’는 사실과 일맥상통한다. SPOF를 없애기 위해 대부분 이중화(가장 비용이 많이 드는)를 해두지만 어느 정도의 돈을 들여 다중화할지는 예산 제약과 신뢰성 수준의 저울질에 달려있다.
신뢰성과 가용성
시스템 세계에는 신뢰성(Reliability)과 가용성(Availability)이라는 비슷한 말이 있다. 일반적으로 신뢰성은 ‘하드웨어나 소프트웨어가 고장 나는 빈도(고장률)나 고장 기간’의 개념이고 가용성은 ‘사용자 입장에서 볼 때 시스템을 어느 정도 사용할 수 있는지’를 나타낸다. 즉, 시스템을 구성하는 컴포넌트에 대해 적용하는 것이 신뢰성, 사용자 눈높이에 맞춰 생각하는 경우가 가용성이라 생각하면 된다. 따라서 신뢰성이 낮은 하드웨어나 소프트웨어를 사용하고 있다 하더라도 다중화(클러스터링)을 한다면 시스템 전체의 가용성을 높일 수 있다.