Open meloncha opened 2 years ago
네트워크 계층이나 트랜스포트 계층의 정보를 바탕으로 로드를 분산. IP주소, 포트번호, MAC주소, 전송 프로토콜 등에 따라 트래픽을 나누고 분산처리할 수 있다. CLB(Connection Load Balancer) or SLB(Session Load Balancer) 라고 부르기도 한다. 라운드 로빈(Round Robin) : 세션을 각 서버에 순차적으로 맺어주는 방식. 단순히 순서에 따라 세션을 할당하므로 경우에 따라 경로별로 같은 처리량이 보장되지 않는다. 가중치 및 비율 할당 방식 : 서버마다 비율을 설정해두고 해당 비율만큼 세션을 맺어주는 방식 최소 연결(Least Connection)기반 : 가장 적은 세션을 가진 서버로 트래픽을 보내는 방식 응답 시간(Response Time)기반 : 가장 빠른 응답 시간을 보내는 서버로 트래픽을 우선 보내주는 방식. 각 서버들이 가용한 리소스와 성능, 그리고 처리 중인 데이터 양등이 다를 경우 적합한 방식 해시(Hash)기반 : 특정 클라이언트는 특정 서버로만 할당시키는 방식. 경로가 보장되며 접속자 수가 많을수록 분산 및 효율이 뛰어남 대역폭(Bandwidth) 기반 : 서버들과의 대역폭을 고려하여 트래픽을 분산하는 방식
ALB(Application Load Balancer) 라고 부른다. L7 위에서 동작하기 때문에 IP, Port 이외에도 URI, Payload, Http Header, Cookie 등으로 부하를 분산한다. 콘텐츠 기반 스위칭이라고도 한다.
L4 로드밸런서는 단지 부하를 분산시키는 것이라면, L7 로드 밸런서는 요청의 세부적인 사항을 두고 결제만 담당하는 서버, 회원가입만을 담당하는 서버 등으로 분리해서 가볍고 작은 단위로 여러 개의 서비스를 운영하고 요청을 각각의 서버에 분산할 수 있다. L7 로드 밸런서는 데이터를 분석해서 처리가 가능하기 때문에 악의적이거나 비정상적인 컨텐츠를 감지해 보안 지점을 구축할 수 있다.
L4 부터는 IP주소와 Port 번호를 활용하여 라우팅이 가능하여 자주 사용한다.
L7 은 소프트웨어를 사용해야 하므로 비용이 더 많이 들어 L7 수준에서의 로드 밸런싱이 필요한경우 사용하고 그게 아니면 비용이 저렴한 L4를 사용한다.
→ 주 데이터베이스가 다중화되는 것 : Multi-Master
Query Cache
라는 최적화 기능을 제공한다
단일 서버
데이터베이스
어떤 DB를 사용할까
관계형 데이터베이스 (RDBMS)
비 관계형 데이터베이스 (NoSQL)
수직적 규모 확장 vs 수평적 규모 확장
수직적 규모 확장 (scale-up)
수평적 규모 확장 (scale-out)
로드밸런서
예시
데이터베이스 다중화
장점
데이터베이스 서버 하나 다운될 때 발생할 수 있는 일
로드밸런서 & DB다중화
캐시
캐시 계층
캐시 사용시 유의할 점
콘텐츠 전송 네트워크(CDN)
CDN 동작 방식
CDN 사용 시 고려해야 할 사항
CDN과 캐시가 추가된 설계
무상태(stateless) 웹 계층
상태 정보 의존적인 아키텍처
무상태 아키텍처
무상태 웹 계층을 갖도록 기존 설계를 변경한 결과
데이터센터
고민해야할 기술적 난제
메시지 큐
기본 아키텍처
로그, 메트릭 그리고 자동화
메시지 큐, 로그, 메트릭, 자동화 등을 반영하여 수정한 설계안
데이터베이스의 규모 확장
수직적 확장
수평적 확장
샤딩을 도입하면 생길 수 있는 문제
데이터베이스 샤딩을 적용한 아키텍처
백만 사용자, 그리고 그 이상
시스템 규모 확장을 위해 살펴본 기법들