RAID 시스템은 가능하면 하드웨어로 구현할 것
- 0 : Striping, 데이터 분산, 읽기 속도 증가, 데이터 손상 시 복구 불가
- 1 : Mirroring, 데이터 복사, 읽기 및 쓰기 속도 그대로, 데이터 손상 시 복구 가능
- 4 : RAID 1 + 데이터 손상을 복구할 수 있는 Parity용 HDD 추가, Parity HDD 병목현상으로 잘 안 씀
- 5 : RAID 4 + Parity 데이터 Striping, HDD 한 개가 손상되어도 나머지로 복구 가능
- 6 : RAID 5 + Parity 데이터를 하나 더 만들어서 Striping, HDD 두 개가 손상되어도 나머지로 복구 가능
Buffer
- 처리를 효율화하고 보틀넥을 완화하기 위한 기술
- 일반적으로 다음 단계의 처리 효율을 올리기 위해 데이터를 모아두는 구조
- Disk I/O를 최소화하기 위한 기법
Cache
- 결과의 재사용
- 처리 결과를 일시적으로 모아두는 방식
- DB에서 데이터가 변경되지 않는 한 요구 내용이 같다면 이미 취득한 데이터를 재사용할 수 있음
Queueing
- 보틀넥을 완화하기 위한 기술
- 처리를 등록해두는 방식
- 일반적으로 처리를 하는 큐, 결과를 보고하는 큐를 따로 두어서 이벤트나 작업 발생의 결과를 기다리지 않고, 다음 처리로 계속 이어갈 수 있는 비동기성이 핵심 포인트
Shared Disk
- 서버 2대가 하나의 스토리지를 공유하는 방식
- 정합성은 만족하지만 여러 서버가 동시에 스토리지를 사용할 수 있어야 해서 성능이 좋아야 해 비싸다.
- 스토리지의 경우 다중화해야 하는 문제가 있다.
Shared Nothing
- 서버 2대에 스토리지 2개를 사용하고, 스토리지를 Master, Slave로 나눠서 관리하는 방식
- 일반적으로 서비스는 Master에서만 이뤄지고 Slave를 비동기적으로 Master 내용으로 갱신시키는 작업을 수행한다.
시스템 구성 변경
다중화
- 다중성 및 가용성 향상이 목적
- 같은 기능을 여러 대 준비하여 단일 기기의 고장에 따른 영향이 시스템 전체에 미치지 않도록 함으로써 시스템 가용성을 높인다.
기능 분할
- 처리 능력 향상이 목적
- 1대로 여러 기능을 제공하는 경우, 서버를 기능별로 준비해서 1대당 처리 부하를 감소시켜 시스템 전체 성능을 향상한다.
스케일 업
- 처리 능력 향상이 목적
- 구성은 변경하지 않고 서버 자체의 스펙을 향상해 시스템 전체의 성능을 향상한다
스케일 아웃
- 처리 능력 향상이 목적
- 같은 기능과 역할의 기기를 여러 대 준비하여 처리를 분담시킴으로써 시스템 전체 성능을 향상한다.
로드밸런싱
1. 로드 밸런서
- 현재는 하드웨어가 아닌 소프트웨어로 구현된 로드 밸런서를 주로 사용한다.
- 클라이언트가 서버 측으로 액세스 할 때마다 연결할 서버를 변경한다.
- 한 명으로부터의 대량 액세스도 분산이 가능함.
- 다양한 로드밸런서를 적절하게 섞어서 사용한다.
L4 로드 밸런서
- OSI 4 계층(TCP, UDP)까지를 처리하는 로드 밸런서
- NAT + Port 변환 기능 -> NAPT를 사용해 부하를 조절한다.
- L4-DSR의 경우 서버의 응답을 로드밸런서를 거치지 않고 클라이언트에게 바로 전송해 로드 밸런서 병목을 막는 기술이다.
L7 로드밸런서
- 리버스 프락시라고도 부름
- OSI 7 계층까지 처리하기 때문에 서버의 응답 중 일부 기능을 대신 수행할 수 있다.
- 즉 서버까지 가지 않고 응답을 반환할 수 있다.
- 응답 캐시, SSL 종단, 500 에러 경우 서버 대신 결과를 화면단에 뿌릴 수 있다.
로드 밸런싱 알고리즘
- 라운드 로빈: 분산할 수 있는 서버에 접속 순서대로 분산 시킴
- 가중 라운드 로빈: 서버마다 가중치를 두어 그 기준으로 분산시킴(서버마다 성능이 다른 경우)
- 최소 커넥션: 접속자 수를 기준으로 가장 적은 접속자를 가진 서버에 분산시킴
- 가중 최소 커넥션 : 이하 생략
로드 밸런싱 테스트 -> 헬스 체크를 사용한다.
2. DNS Round Robin
- DNS에 동일 도메인에 복수의 IP주소를 등록하고 순서를 불규칙하게 응답함으로써 결과적으로 부하를 분산시키는 것을 기대하는 방법
- 클라이언트의 OS 및 브라우저에 의존적인 기술
- 효과가 기대보다 낮을 수도 있고, DNS의 TTL에 의존하지만 TTL대로 동작하지 않을 수도 있다.
- 추가 설비가 필요하지 않다.
'Review' 카테고리의 다른 글
Real MySQL 01 (0) | 2021.05.29 |
---|---|
친절한 SQL 튜닝 05 (2) | 2021.05.08 |
SQL 레벨업 03 (0) | 2021.05.02 |
SQL 레벨업 02 (0) | 2021.05.02 |
SQL 레벨업 01 (0) | 2021.05.02 |