Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- React Native
- HTTP
- 정리
- 자바
- 딥러닝
- 데베
- 모두를위한딥러닝
- 스터디
- 백준 5525번
- 리액트 네이티브 프로젝트 생성
- 깃허브 로그인
- 팀플회고
- 머신러닝
- 지네릭스
- 문자열
- 네트워크
- 백준 4358 자바
- 깃 연동
- 백준 4949번
- 깃 터미널 연동
- 리액트 네이티브
- 데이터베이스
- 백준
- 모두의네트워크
- 모두의 네트워크
- 백준 4358번
- 깃허브 토큰 인증
- SQL
- 모두를 위한 딥러닝
- 리액트 네이티브 시작하기
Archives
- Today
- Total
솜이의 데브로그
4장 ) 데이터베이스와 아키텍처 구성(2) 본문
Reference : 데이터베이스 첫걸음
DB 서버의 다중화 - 클러스터링
DB서버는 데이터를 보존하는 '영속 계층' 이다. 따라서 클러스터링이 어려운 컴포넌트이다.
- 데이터베이스는 다량의 데이터를 영구적으로 보존, 그에 따른 성능이 요구됨.
- 따라서 데이터를 보존하는 매체에 필요한 요건이 높다.
- 전용의 외부 저장소를 사용하므로, DB 서버의 아키텍처는 저장소와 묶어 생각해야한다.
- 데이터는 항상 갱신되기 때문에, 다중화 시에 '데이터 정합성'을 중요하게 의식해야 한다.
가장 기본적인 다중화
- DB 서버만을 다중화하고 저장소는 하나만 두는 구성.
- 서버가 동시에 동작하는 것을 허락할 지 여부
- Active-Active : 클러스터를 구성하는 컴포넌트를 동시에 가동
- Active-Standby : 클러스터를 구성하는 컴포넌트 중 실제 가동하는 것은 Active, 남은 것은 대기(Standby)하고 있는다.
Active-Active 구성의 장점
- 시스템 다운 시간이 짧다.
- 복수의 DB 서버가 동시에 동작하고 있어 한 대가 다운되어도 남은 서버가 처리해 시스템 전체가 정지되는 것을 막을 수 있다.
- 성능이 좋다.
- DB 서버 대수가 증가하면 동시에 가동하는 CPU나 메모리도 증가하므로 성능이 향상 될 수 있다.
Active-Standby
- Standby 상태의 DB서버는 사용되지 않다가 Active DB 서버에서 장애가 일어날 때만 사용된다.
- 따라서 전환하는 시차동안 서비스를 사용하지 못하는 다운 상태가 된다.
- Heartbeat : Standby DB 서버가 일정 간격으로 Active DB에 이상이 없는지 조사하기 위한 통신.
- Cold-Standby : 평소에는 Standby DB가 자공하지 않다가 Active DB가 다운된 시점에 작동하는 구성
- Hot-Standby : 평소에소 Standby DB가 작동하는 구성 (전환 시간이 짧다)
▶ 가용성과 성능이 좋은 순 (가격순)
- Active-Active
- Active-Standby (Hot-Standby)
- Active-Standby (Cold-Standby)
DB 서버와 데이터의 다중화 - 리플리케이션
리플리케이션이란
DB 서버와 저장소 세트를 복수로 준비. 즉, DB 서버 뿐만 아니라 데이터도 다중화한다.
- RAID : 저장소 내부의 컴포넌트 (대부분 하드디스크)를 다중화. 클러스터링과 동일하게 단일 장애점을 없앤다.
- 리플리케이션 기술
- '달걀을 한 바구니에 다 담지 않는다'
- 하드웨어가 설치된 시설이 파괴된 경우 다른 시설이 멀리 떨어져 있다면 서비스를 계속 사용 가능.
주의할 점
- Active 측 저장소의 데이터는 항상 사용자로부터 갱신된다.
- 따라서 Standby 측 데이터에도 반영을 하여 최신화 해야하는데, 이 갱신 주기를 얼마나 할 것인가와 성능 사이의 트레이드오프 관계가 생긴다.
- 피라미드형 리플리케이션 구성 : '데이터가 오래되어도 참조만 하면 된다'는 처리를 손자나 증손자 세트에 한다.
- 부모(Master), 자식(Slave) 관계
100% 장애 대책은 있을 수 없다. 따라서 다음 단계로는 '데이터의 백업과 복구'에 대해 생각해야한다.
성능을 추구하기 위한 다중화 - Shared Nothing
Shared Disk
- 복수의 서버가 1대의 디스크를 사용
- DB 서버를 늘려도 무한으로 처리율이 향상되지 않고 한계점에 도달한다.
- 저장소가 공유 자원이라 쉽게 늘리기 어렵고 DB 서버 대수가 증가할수록 DB 서버간의 정보 공유를 위한 오버헤드가 크기 때문.
Shared Nothing
- 네트워크 이외의 자원을 모두 분리하는 방식.
- 서버와 저장소의 세트를 늘리면 병렬처리 되기 때문에 선형적으로 성능이 향상된다.
- 저장소가 병목이 되는 것을 방지해 세트에 비례해서 처리율이 증가한다.
- 구글에서 개발한 구조를 '샤딩 (Sharding)' 이라 부른다.
- 같은 구성의 DB 서버를 횡으로 나열하기 때문에 구조가 간단하며 원칙적으로 서버 수에 비례해 저장소가 늘어남.
- 저장소를 공유하지 않으므로 각각의 DB 서버가 동일한 1개의 데이터에 액세스 할 수 없다.
- 따라서 합산하는 경우 집계하는 정리 서버 필요
- → 커버링 구성. DB 서버가 하나가 다운되었을 때 다른 DB서버가 이를 이어받아 처리.
시스템이 충족해야하는 요건에 따라 최적의 아키텍처를 선택하여 사용한다.
'CS > Database' 카테고리의 다른 글
5장 ) DBMS 기본지식 (0) | 2021.10.28 |
---|---|
11, 12강 ) LIMIT, 수치 연산 (0) | 2021.10.14 |
9,10강 ) 정렬, 복수의 열 지정 정렬 (0) | 2021.10.08 |
4장 ) 데이터베이스와 아키텍처 구성(1) (0) | 2021.10.07 |
7,8강 ) 조건 조합, 패턴 매칭 검색 (0) | 2021.09.29 |