로드밸런싱? 클러스터링?

로드밸런싱과 클러스터링은 인프라나 아키텍처를 이야기할때 단골처럼 쓰이는 용어다.


로드밸런싱

로드밸런싱(load balancing)은, 번역하면 "부하 분산"이 된다.

여러개의 머신을 사용해서 부하를 분산시키는걸 말한다.

로드밸런싱은 계층마다 좀 다른데, 여기서는
일반적으로 HTTP 서버시스템에 많이 사용하는 L7 계층 로드밸런싱만을 언급하겠다.

사용 구조는 대부분 아래처럼 된다.

서버를 여러개 두고, "로드밸런서"가 요청을 받아 서버들에게 분배해주는 것이다.

이렇게 해두면 서버 스펙을 올리고 줄이는 것이 매우 쉽다. 컴퓨터 몇개 사서 서버 똑같이 올리고, 로드밸런서에만 등록해주면 되기 때문이다.

일반적으로 로드밸런서 수동구축에 많이 사용되는 것이 "nginx"다.

근데 이런 구조에서 서버는 한두개 죽어도 괜찮지만 로드밸런서는 성능도 중요하고 절대 죽으면 안된다.
그래서 클라우드 환경을 활용중이라면 그냥 거기있는걸 쓰는걸 권한다.



클러스터링

클러스터링(clustering)은 군집화다.

그렇게 복잡한건 아니고, 그냥 여러개의 컴퓨터를 합쳐서 하나의 병렬 컴퓨터를 만드는 것이다.

안정성과 읽기성능 등은 좋아지지만, 동기화 작업이 빈번해 쓰기성능은 떨어질 수 있다.

보통 데이터베이스 같은 시스템에 많이 이용한다.
여러개의 머신으로 데이터베이스 서버를 띄워놓고, 하나의 서버로 클러스터링해서 사용하는 것이다.



참조
https://codeburst.io/load-balancers-an-analogy-cc64d9430db0?gi=278ec9559707