반응형
스터디에 참여하게 되었다...! 어렵다...! 하지만 해야지 뭐 어케
1장. 사용자 수에 따른 규모 확장성
로드 밸런서(Load Balancer)
1. 동작 원리 및 구현
로드 밸런서는 여러 서버에 들어오는 네트워크 트래픽을 분산시켜 서버 과부하를 방지한다.
- 요청 분배: 클라이언트 요청을 받아 백엔드 서버 중 하나로 전달한다.
- 방식:
- 라운드 로빈: 순서대로 서버에 요청을 분배.
- 가중치 기반: 성능이 높은 서버에 더 많은 요청 할당.
- 최소 연결: 현재 연결 수가 가장 적은 서버에 요청 전달.
2. 장단점 사용 이유
- 장점:
- 시스템 가용성 및 확장성 향상.
- 특정 서버 과부하 방지.
- 장애 서버 자동 감지 및 제외.
- 단점:
- 초기 설정 및 유지보수 필요.
- 로드 밸런서 자체가 장애 지점이 될 수 있음.
- 사용 이유: 많은 사용자가 동시에 접속하는 서비스에서 성능을 유지하기 위해 사용한다.
⚠️로드 밸런서 자체가 장애 지점(Single Point of Failure, SPOF)이 되는 문제를 해결하기 위한 방안.
1. 문제 원인
🛑하드웨어 문제: 전원 장애, 네트워크 인터페이스 장애, 스토리지 장애
🛑소프트웨어 문제: 로드밸런서 소프트웨어 버그, 메모리 누수, CPU 과부하
🛑네트워크 문제: 네트워크 장애, DNS 문제, 라우틴 오류
🛑트래픽 초과: DDoS 공격, 용량 한계 초과
🛑구성 및 관리 문제: 잘못된 설정, 업데이트 실패, 인증서 문제
🛑로드 밸런서 자체가 SPOF로 설계된 경우: 이중화(HA)가 없을때
🛑물리적 재해
2. 해결 방법
✅로드 밸런서 이중화
방법: 두 개 이상의 로드 밸런서를 설정하여 하나가 장애가 발생한다면 다른 하나가 트래픽을 처리하도록 만든다.
- 액티브-액티브(Active-Active): 두 로드 밸런서가 동시에 작동하여 트래픽을 분산 처리.
- 액티브-패시브(Active-Passive): 한 로드 밸런서가 주로 작동하고, 다른 하나는 대기 상태에서 장애시 동작.
구현 기술
- Keepalived: 가상 IP (VIP)를 사용해 액티브-패시브 구성을 지원.
- Pacemaker: 클러스터 관리 및 장애 복구를 자동화.
✅DNS 기반 로드 밸런싱
방법: DNS 레코드에 여러 로드 밸런서의 IP를 등록하여 장애가 발생한 로드 밸런서를 자동으로 제외.
- Round-Robin DNS: 순차적으로 여러 IP를 반환.
- Health Check와 결합: DNS 서비스가 로드 밸런서의 상태를 주기적으로 체크하여 가용한 IP만 반환
✅실시간 모니터링와 알림 시스템
방법: 로드 밸런서를 실시간으로 모니터링하여 장애를 조기에 감지하고 대응.
- 도구: Prometheus + Grafana, CloudWatch, Datado 등.
등이 있다!
데이터베이스 다중화(Database Replication/Clustering)
1. 동작 원리 및 구현
- 복제(Replication): 데이터를 여러 데이터베이스에 복사하여 데이터 읽기 작업 부하를 분산한다.
- 마스터-슬레이브: 마스터 DB에 쓰기, 슬레이브 DB에서 읽기.
- 마스터-마스터: 두 마스터 DB에서 쓰기와 읽기 모두 가능.
- 클러스터링(Clustering): 여러 데이터베이스가 하나의 시스템 처럼 동작.
⚠️데이터베이스 다중화에서 마스터와 슬레이브의 역할 및 동작 원리
1. 마스터와 슬레이브의 역할
마스터 데이터베이스:
- 모든 쓰기 작업(INSERT, UPDATE, DELETE 등)을 처리한다.
- 데이터가 업데이트 되면, 해당 변경 사항을 슬레이브 데이터베디으세 복제(replication) 한다.
슬레이브 데이터베이스
- 마스터로부터 복제된 데이터를 유지하며, 읽기 작업(SELECT)을 처리한다.
- 다수의 슬레이브를 두어 읽기 부하를 분산할 수 있다.
2. 동작 원리(Replication)
1️⃣마스터 데이터베이스의 변경 감지:
- 마스터에서 데이터 변경(쓰기 작업)이 발생하면, 변경 사항을 변경 로드(Write-Ahead Log, WAL) 또는 바이너리 로그(Binary Log)로 기록한다.
2️⃣슬레이브 복제 전송
- 슬레이브는 마스터의 로그를 읽어들여 해당 변경 사항을 적용한다.
3️⃣ 슬레이브의 데이터 갱신
- 슬레이브는 마스터와 동일한 데이터 상태를 유지하도록 갱신을 완료한다.
4️⃣ 읽기 작업 분산
- 애플리케이션에서 슬레이브로 읽기 요청을 보내고, 쓰기 작업은 마스터로 보낸다.
3. 장점과 주의사항
장점
- 읽기 성능 향상: 읽기 작업을 슬레이브에 분산
- 장애 복구: 마스터가 다운되면 스렐이브를 승격(promote)하여 대체 가능
주의 사항
- 복제 지연 문제: 마스터에서 변경된 데이터가 슬레이브에 즉시 반영되지 않을 수 있음.
- 일관성 문제: 데이터 읽기 시 슬레이브의 데이터가 최신이 아닐 수 있음.
2. 장단점 사용이유
- 장점:
- 읽기 작업 성능 향상.
- 장애 복구가 가능하여 높은 가용성 제공.
- 단점:
- 복제 지연 문제.
- 복잡한 설정.
- 사용 이유: 트래픽이 많은 애플리케이션에서 데이터 읽기 성능과 시스템 안정성을 높이기 위해 사용한다.
CDN(Content Delivery Network)
1. 동작 원리 및 구현
CDN은 사용자와 가까운 서버에 콘텐츠를 캐싱하여 빠르게 제공한다.
- 요청 처리: 사용자의 요청이 CDN서버(엣지 서버)로 전송되고, 캐싱된 콘텐츠가 반환된다.
- 구성 요서:
- 오리진 서버: 원본 콘텐츠가 저장된 서버.
- 엣지 서버: 사용자와 가까운 캐시 서버.
2. 장단점 사용이유
- 장점:
- 빠른 콘텐츠 전달로 사용자 경험 개선
- 오리진 서버의 트래픽 감소.
- DDoS 공격 완화.
- 단점:
- 캐시 갱신 지연 가능.
- 서비스 비용 추가.
- 사용 이유: 전 세계 사용자에게 콘텐츠를 신속히 제공하고, 트래픽을 분산하기 위해.
2장. 개략적인 규모 추정
개략적 규모 추정을 효과적으로 해 내려면 규모 확장성을 표현하는데 필요한 기본기에 능숙해야 한다.
2제곱수
2의 x 제곱 | 근사치 | 이름 | 축약형 |
10 | 1천(thousand) | 1킬로바이트(Kilobyte) | 1KB |
20 | 1백만(million) | 1메가바이트(Megabyte) | 1MB |
30 | 10억(billion) | 1기가바이트(Gigabyte) | 1GB |
40 | 1조(trillion) | 1테라바이트(Terabyte) | 1TB |
50 | 1000조(quadrillion) | 1페타바이트(Petabyte) | 1PB |
생각해보기
서버를 확장하는 방법에는 무엇이 있을까? 각 방법의 장단점에 대해서 설명해보자?
- 스케일 업(Scale Up)
- 개념: 기존의 서버를 더 강력한 하드웨어로 업그레이드 하거나 추가적인 자원을 제공하여 성능을 높이는 방식.
- 장점:
- 구조적으로 간단하며 변경 작업이 적음.
- 응용 프로그램이나 데이터베이스 수정이 필요 없음.
- 초기 비용이 적게 듬
- 단점:
- 업그레이드의 한계가 존재(CPU 코어, 메모리 용량 등 물리적 한계).
- 단일 장애 지점(Single Point of Failure, SPOF) 문제 해결 불가.
- 고성능 하드웨어 비용이 매우 높아질 수 있음.
- 스케일 아웃(Scale Out)
- 개념: 여러 대의 서버를 추가하여 작업을 분산 처리하는 방식.
- 장점:
- 수평적 확장이 가능하며, 이론적으로 무한 확장이 가능.
- 특정 서버에 장애가 발생해도 전체 서비스 중단을 막을 수 있음.
- 개별 서버는 저비용 하드웨어로 구성 가능.
- 단점:
- 인프라 관리 복잡도 증가.
- 데이터 동기화 및 분산처리 로직 필요.
- 초기에는 설정이 더 복잡할 수 있음(로드 밸런서, 클러스터링 등).
수직, 수평 확장.. 그럼 언제해?
- 작은 서비스: 스케일 업이 단순하고 비용 효율적.
- 성장 중인 서비스: 스케일 아웃으로 확장성 확보.
- 대규모 서비스: 스케일 아웃을 기본으로 하고, 필요에 따라 CDN, 데이터베이스 샤딩 등을 추가 설계.
NoSQL은 왜 빠를까?
- 스키마리스 (Schema-less)
- 데이터베이스 설계에서 고정된 스키마가 필요 없으므로 데이터 삽입 및 읽기가 빠름.
- 수평 확장에 최적화
- NoSQL은 설계 단계부터 분산 환경을 염두에 둔 아키텍처를 사용.
- 수많은 노드에 데이터를 분산 저장하며, 병렬 처리를 통해 속도를 높임.
- 단순 데이터 모델
- 관계형 데이터베이스(RDBMS)는 JOIN이나 복잡한 쿼리를 사용하지만, NoSQL은 키-값 조회, 문서 겁색 등 단순 작업으로 처리.
- 인덱스 최적화
- NoSQL 데이터베이스(예: MongoDB)는 읽기 작업을 위한 효율적인 인덱스 구조를 제공.
- CAP 이론에서의 선택
- NoSQL은 일관성(Consistency)보다 가용성(Availability)과 분산 처리(Partition Tolerance)를 우선.
- 즉시 일관성을 포기하고 속도를 높이는 경우가 많음.
조아써 오늘도 지식이 늘었다! 구조파악하고 이해하고! 공부하고!! 신난다!
** 그냥 하루하루 개인 공부한 것을 끄적 거리는 공간입니다.
이곳 저곳에서 구글링한 것과 강의 들은 내용이 정리가 되었습니다.
그림들은 그림밑에 출처표시를 해놓았습니다.
문제가 될시 말씀해주시면 해당 부분은 삭제 하도록하겠습니다. **
반응형
'public void static main > Book' 카테고리의 다른 글
[토비의스프링] 1장-오브젝트와 의존관계 (1) | 2025.01.28 |
---|---|
[대규모 시스템 설계 기초] 3장, 4장 (1) | 2025.01.08 |
[JVM 밑바닥] 7장 클래스 로딩 메커니즘 (1) | 2024.11.17 |
[JVM 밑바닥] 6장 클래스 파일 (1) | 2024.10.27 |
[JVM 밑바닥] 3장 가비지 컬렉터와 메모리 할당 전략 -1 (0) | 2024.08.07 |
댓글