Zero to Hero
article thumbnail

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
profile

Zero to Hero

@Doljae

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!