수평적 규모 확장과 로드밸런싱

eomprgrm·2023년 4월 14일
0

'가상 면접 사례로 배우는 대규모 시스템 설계 기초'를 읽고 작성하는 글

1. 개요


운영 중인 서버의 트래픽이 늘어나게 된다면 기존 서버의 확장을 고려해봐야 한다. 서버의 확장에는 크게 '수직적 규모 확장'과 '수평적 규모 확장'이 있다. 수직적 규모 확장은 스케일업(Scale Up)이라고도 불리는데 말 그대로 서버의 사양을 늘리는 방법이다. 더 좋은 CPU나 RAM등을 추가하는 행위이다. 그러나 수직적 규모 확장에는 한계가 존재한다. 한 대의 컴퓨터에 CPU와 RAM을 무한대로 증설할 방법은 없으며 장애가 발생했을 때의 대처도 힘들며 비용도 많이 든다. 이러한 단점으로 인해 대규모 애플리케이션을 지원하는 데는 수평적 규모 확장이 적합하다. 따라서 이 글에는 수평적 규모 확장에 대해 다룰 것이며, 더불어 로드밸런싱에 대해서도 알아볼 것이다.

2. 수평적 규모 확장


스케일 아웃(Scale Out)이라고 불리는 수평적 규모 확장은 더 많은 서버를 추가하여 성능을 개선하는 것이다. 수평적 규모 확장의 장점은 다음과 같다.

  • 높은 가용성
    • 수평적 규모 확장을 사용하면 여러 대의 서버를 사용하므로, 하나의 서버가 다운되더라도 다른 서버가 작업을 처리할 수 있다.
  • 비용 효율성
    • 수직적 규모 확장에 비해 여러 대의 서버를 사용하는 것이 비용 효율적이다. 이는 서버에 대한 초기 투자 비용이 적어지고 유지보수 비용도 적어지는 장점이 있다.
  • 더 큰 작업 처리 능력
    • 서버의 개수를 늘릴수록 더 많은 작업을 처리할 수 있다. 이는 대규모 시스템에서 매우 중요한 요소이다.
  • 높은 유연성
    • 수평적 규모 확장은 필요에 따라 서버의 개수를 늘리거나 줄일 수 있다. 비즈니스 요구사항에 따라 시스템을 유연하게 조정할 수 있다.

3. 로드밸런싱


여러 대의 서버를 운영 중일 경우 서버 간에 네트워크 트래픽을 균등하게 배포해야할 필요성이 있다. 이를 위해 로드밸런싱을 수행하여야 하며 로드 밸런싱의 이점은 다음과 같다.

  • 어플리케이션 가용성
    • 로드밸런서는 서버 문제를 감지하고 클라이언트 트래픽을 사용 가능한 서버로 리다이렉션하여 시스템 내결함성을 높일 수 있다.
  • 어플리케이션 확장성
    • 로드밸런싱은 서버의 개수를 쉽게 추가하거나 감소시킬 수 있다. 이는 시스템 요구 사항에 맞게 서버를 조정할 수 있어 비즈니스 변화에 빠르게 대응이 가능하다.
  • 부하 분산
    • 로드밸런싱은 단일 서버에 부하가 집중되는 것을 방지하여 서버의 안정성과 성능을 향상시킨다.
  • 무중단 배포
    • 로드밸런싱은 서버를 한 대씩 업그레이드 하거나 롤백할 수 있다. 이 때 시스템을 중단시키지 않고 업그레이드가 가능하기 때문에 무중단 배포가 가능하다.

4. 로드밸런서를 포함한 설계


사용자는 로드밸런서의 공개 IP 주소로 접속한다. (웹 서버는 클라이언트의 접속을 직접 처리하지 않음) 서버 간 통신에는 사설 IP 주소가 이용된다. 클라이언트의 요청은 로드밸런서에 의해 분산 처리된다.

profile
오늘의 학습을 기록하는 공간

0개의 댓글