meloncha / study

0 stars 0 forks source link

[대규모 시스템 설계 기초] 1장 사용자 수에 따른 규모 확장성 #3

Open meloncha opened 2 years ago

meloncha commented 2 years ago

단일 서버

데이터베이스

어떤 DB를 사용할까

관계형 데이터베이스 (RDBMS)

비 관계형 데이터베이스 (NoSQL)

수직적 규모 확장 vs 수평적 규모 확장

수직적 규모 확장 (scale-up)

수평적 규모 확장 (scale-out)

로드밸런서

예시

데이터베이스 다중화

장점

데이터베이스 서버 하나 다운될 때 발생할 수 있는 일

로드밸런서 & DB다중화

load balancer   database replication

캐시

캐시 계층

캐시 사용시 유의할 점

콘텐츠 전송 네트워크(CDN)

CDN 동작 방식

CDN 사용 시 고려해야 할 사항

CDN과 캐시가 추가된 설계

무상태(stateless) 웹 계층

상태 정보 의존적인 아키텍처

무상태 아키텍처

stateless architecture

무상태 웹 계층을 갖도록 기존 설계를 변경한 결과

architecture with stateless web tier

데이터센터

고민해야할 기술적 난제

메시지 큐

기본 아키텍처

로그, 메트릭 그리고 자동화

메시지 큐, 로그, 메트릭, 자동화 등을 반영하여 수정한 설계안

architecture with message queue and tools

데이터베이스의 규모 확장

vertical scaling vs horizontal scaling

수직적 확장

수평적 확장

샤딩을 도입하면 생길 수 있는 문제

데이터베이스 샤딩을 적용한 아키텍처

architecture with database sharding

백만 사용자, 그리고 그 이상

시스템 규모 확장을 위해 살펴본 기법들

meloncha commented 2 years ago

고민해볼 사항들

로드밸런서의 동작 방식

1. L4 로드 밸런싱 : L4 계층에서 동작하는 로드밸런서

네트워크 계층이나 트랜스포트 계층의 정보를 바탕으로 로드를 분산. IP주소, 포트번호, MAC주소, 전송 프로토콜 등에 따라 트래픽을 나누고 분산처리할 수 있다. CLB(Connection Load Balancer) or SLB(Session Load Balancer) 라고 부르기도 한다. 라운드 로빈(Round Robin) : 세션을 각 서버에 순차적으로 맺어주는 방식. 단순히 순서에 따라 세션을 할당하므로 경우에 따라 경로별로 같은 처리량이 보장되지 않는다. 가중치 및 비율 할당 방식 : 서버마다 비율을 설정해두고 해당 비율만큼 세션을 맺어주는 방식 최소 연결(Least Connection)기반 : 가장 적은 세션을 가진 서버로 트래픽을 보내는 방식 응답 시간(Response Time)기반 : 가장 빠른 응답 시간을 보내는 서버로 트래픽을 우선 보내주는 방식. 각 서버들이 가용한 리소스와 성능, 그리고 처리 중인 데이터 양등이 다를 경우 적합한 방식 해시(Hash)기반 : 특정 클라이언트는 특정 서버로만 할당시키는 방식. 경로가 보장되며 접속자 수가 많을수록 분산 및 효율이 뛰어남 대역폭(Bandwidth) 기반 : 서버들과의 대역폭을 고려하여 트래픽을 분산하는 방식

2. L7 로드밸런싱 : L4 로드밸런서의 기능을 포함하며 OSI 7계층의 프로토콜 (HTTP, SMTP, FTP등)을 바탕으로도 분산 처리가 가능

ALB(Application Load Balancer) 라고 부른다. L7 위에서 동작하기 때문에 IP, Port 이외에도 URI, Payload, Http Header, Cookie 등으로 부하를 분산한다. 콘텐츠 기반 스위칭이라고도 한다.

L4 로드밸런서는 단지 부하를 분산시키는 것이라면, L7 로드 밸런서는 요청의 세부적인 사항을 두고 결제만 담당하는 서버, 회원가입만을 담당하는 서버 등으로 분리해서 가볍고 작은 단위로 여러 개의 서비스를 운영하고 요청을 각각의 서버에 분산할 수 있다. L7 로드 밸런서는 데이터를 분석해서 처리가 가능하기 때문에 악의적이거나 비정상적인 컨텐츠를 감지해 보안 지점을 구축할 수 있다.

L7가 L4를 포함하는데 두 개가 나뉘어 있는 이유?

L4 부터는 IP주소와 Port 번호를 활용하여 라우팅이 가능하여 자주 사용한다.

L7 은 소프트웨어를 사용해야 하므로 비용이 더 많이 들어 L7 수준에서의 로드 밸런싱이 필요한경우 사용하고 그게 아니면 비용이 저렴한 L4를 사용한다.

데이터베이스 다중화

→ 주 데이터베이스가 다중화되는 것 : Multi-Master

MMM (Multi-Master Replication Manager)

multi master replication manager

캐시 계층

캐시의 종류

메시지 큐

메시지 큐를 사용하는 경우