📈 로드 밸런싱 알고리즘 A to Z

트래픽을 여러 서버에 분산시켜 과부하를 방지하고 응답 속도를 높여주기 위해 사용하는 장치가 로드 밸런서(Load Balancer) 인데요,


현업에서 가장 많이 사용되는 5가지 로드 밸런싱 알고리즘에 대한 장단점과 샘플 구현 코드까지 정리한 글이 있어 공유드립니다.


글에서 정리한 로드 밸런싱 알고리즘은 다음과 같습니다.


📌 라운드 로빈(Round Robin)

# 작동 원리

  • 요청이 목록의 첫 번째 서버로 전송됩니다.

  • 다음 요청은 두 번째 서버로 전송되는 식입니다.

  • 목록의 마지막 서버 다음에는 알고리즘이 첫 번째 서버로 돌아갑니다.

# 사용 시기

  • 모든 서버의 처리 능력이 비슷하고 요청 처리에 동등한 능력을 가진 경우.

  • 단순성과 부하의 고른 분산이 더 중요한 경우.

# 장점

  • 구현과 이해가 쉽습니다.

  • 트래픽의 고른 분산을 보장합니다.

# 단점

  • 서버 부하나 응답 시간을 고려하지 않습니다.

  • 서버의 처리 능력이 다를 경우 비효율성을 초래할 수 있습니다.


📌 가중 라운드 로빈(Weighted Round Robin)

# 작동 원리

  • 각 서버에는 처리 능력이나 가용 자원에 따라 가중치가 할당됩니다.

  • 높은 가중치의 서버는 들어오는 요청 중 비례적으로 더 큰 부분을 받습니다.

# 사용 시기

  • 서버의 처리 능력이나 가용 자원이 다를 때.

  • 각 서버의 용량에 따라 부하를 분산시키고 싶을 때.

# 장점

  • 서버 용량에 따라 부하를 균형 있게 조정합니다.

  • 서버 자원을 더 효율적으로 사용합니다.

# 단점

  • 단순 라운드 로빈보다 구현이 약간 더 복잡합니다.

  • 현재 서버 부하나 응답 시간을 고려하지 않습니다.


📌 최소 연결(Least Connections)

# 작동 원리

  • 각 서버의 활성 연결 수를 모니터링합니다.

  • 활성 연결 수가 가장 적은 서버에 들어오는 요청을 할당합니다.

# 사용 시기

  • 현재 활성 연결 수에 따라 부하를 분산시키고 싶을 때.

  • 서버의 처리 능력은 비슷하지만 동시 연결 수준이 다를 수 있을 때.

# 장점

  • 현재 서버 부하에 따라 더 역동적으로 부하를 균형 조정합니다.

  • 어떤 서버도 많은 수의 활성 연결로 과부하되는 것을 방지하는 데 도움이 됩니다.

# 단점

  • 서버의 처리 능력이 다를 경우 최적이 아닐 수 있습니다.

  • 각 서버의 활성 연결을 추적해야 합니다.


📌 최소 응답 시간(Least Response Time)

# 작동 원리

  • 각 서버의 응답 시간을 모니터링합니다.

  • 응답 시간이 가장 빠른 서버에 들어오는 요청을 할당합니다.

# 사용 시기

  • 응답 시간이 다양한 서버가 있고 요청을 가장 빠른 서버로 라우팅하고 싶을 때.

# 장점

  • 응답 시간이 가장 빠른 서버를 선택하여 전체 지연 시간을 최소화합니다.

  • 서버 응답 시간의 변화에 역동적으로 적응할 수 있습니다.

  • 빠른 응답을 제공하여 사용자 경험 개선에 도움이 됩니다.

# 단점

  • 분산 시스템에서 도전적일 수 있는 서버 응답 시간의 정확한 측정이 필요합니다.

  • 서버 부하나 연결 수와 같은 다른 요인을 고려하지 않을 수 있습니다.


📌 IP 해시(IP Hash)

# 작동 원리

  • 클라이언트의 IP 주소에서 해시 값을 계산하고 이를 사용하여 요청을 라우팅할 서버를 결정합니다.

# 사용 시기

  • 같은 클라이언트의 요청이 항상 같은 서버로 전달되어야 하는 세션 지속성(Session Persistence)이 필요할 때.

# 장점

  • 구현이 간단합니다.

  • Sticky Session이 필요한 애플리케이션에 유용합니다.

# 단점

  • 특정 IP 주소가 다른 주소보다 더 많은 트래픽을 생성할 경우 불균등한 부하 분산으로 이어질 수 있습니다.

  • 서버가 다운되면 해시 매핑을 재구성해야 하므로 유연성이 부족합니다.


샘플 구현 코드 등과 같은 상세한 내용은 공유드린 원문 링크를 참고해주세요.


📚 원문

  • https://maily.so/devpill/posts/67aebb20?utm_source=oneoneone

로드 밸런싱 알고리즘 A to Z: 코드와 함께 파헤치는 5가지 전략

롱라이프랩 뉴스레터

로드 밸런싱 알고리즘 A to Z: 코드와 함께 파헤치는 5가지 전략

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 6월 28일 오전 6:27

댓글 0

    함께 읽은 게시물

    워케이션 문화가 없는 조직에서 워케이션 시도하기

    ... 더 보기

    Paywatch Tech

    tech.paywatch.co.kr

    Paywatch Tech

    AI시대 필요한 요구문서와 협업방법

    ... 더 보기

    Confluence Mobile - WEBNORI

    wiki.webnori.com

    Confluence Mobile - WEBNORI

    ✍️ 오늘은 PM이 읽어볼만한 책을 한 권 소개해드릴까 해요. 스스로의 동기부여가 어려운 분들이나, 동료를 설득해야되는 PM이나, 조직에 자발적 활력을 만들어내고 싶은 조직장 모두가 읽어볼만한 책입니다. — 📖 <스타트 위드 와이: 나는 왜 이 일을 하는가> 🔖 이성적 범주에 속하는 WHAT은 WHY에서 느껴지는 감정을 겉으로 보여주는 근거 역할을 한다. 어떤 직감으로 결정을 내렸는지 말로 표현할 수 있고 자신의 WHY를 명확히 설명할 수 있으면 주변 사람들에게 결정을 내린 이유를 분명히 이해시킬 수 있다. 이 결정이 객관적인 사실이나 수치와 일관성을 이룬다면 근거은 더욱 타당해진다. 이것이 바로 균형이다. (129p) — PM으로 일하면서 가장 어려운 일이 무엇이냐고 물어보면, 대부분 why를 조직장이나 동료들에게 설득하는 과정을 원탑으로 꼽을 겁니다. 문제를 정확히 정의하고, 논리를 만드는 것도 어렵고, 그것을 말이나 글로 표현해 내는 것도 어렵죠. 그래서 프로젝트 문서에 정량적인 데이터 분석을 수반하고, 숫자를 통해 프로젝트의 공감대를 형성하려고 시도할 때가 생깁니다. 하지만 Why에 대해 본인이 충... 더 보기

    구현패턴으로 DB사용비용을 10배줄이기

    ... 더 보기

    kopring-reactive-labs/Docs/eng/08_bulkprocessor.md at main · psmon/kopring-reactive-labs

    GitHub

    kopring-reactive-labs/Docs/eng/08_bulkprocessor.md at main · psmon/kopring-reactive-labs

     • 

    댓글 1 • 저장 34 • 조회 2,776



    < '시간이 없다'는 세상에서 가장 흔한 거짓말 >

    1. 오랜만에 만난 사람은 늘 어색하다. 뭔가 말을 건네야 한다. 인사 없이 지나가긴 애매하다. 하지만 대화 주제는 많지 않다. 날씨, 뉴스 얘기 몇 마디는 어떻게 해본다. 하지만 가장 어려운 건 마무리다.

    ... 더 보기