TIL

Load Balancing, Sticky Session, Session Clustering

빈코 2022. 4. 28. 14:19

동시 접속자가 많은 프로젝트를 진행하면서 아키텍처 부분에 많은 관심이 생겼어요. 최근에 선착순으로 진행되는 이벤트 프로젝트를 전담하면서 세션 처리가 끊어지는 문제점을 맞닥뜨렸는데, 그 부분에 대해서 공부를 하다 보니 로드밸런싱과 스티키 세션, 세션 클러스팅을 알게 되어 포스팅하려 합니다

 

흐름
Flow

 

Load Balancing(로드 밸런싱)

  • 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율을 증가, 부하량, 속도 저하 등 고려하여 분산 처리하여 해결해주는 서비스입니다.
  • 로드밸런싱을 해주는 소프트웨어 혹은 하드웨어 장비를 로드밸런서(Load Balancer)라고 합니다.

동작 방식

1. 네트워크 상단에 가상서버가 존재하여 서버로 들어오는 패킷을 리얼 서버로 균일하게 트래픽을 분산시킵니다.

2. 서버에 장애가 발생하면 이를 감지하여 정상적으로 작동하는 서버로 트래픽을 분산시킵니다.

3. 로드밸런싱은 하나의 서비스를 하나 이상의 노드가 처리하는 식으로 작동하며 서비스 요청 처리 알고리즘이 다양합니다.

 

 

장점

  • 로드밸런싱을 이용하면 한 서버가 다운되더라도 이중화시킨 다른 서버에서 서비스를 지속하여, 사용자들이 문제를 인지하지 못하게 할 수 있습니다.
  • 단지 노드를 추가하는 것만으로 서비스가 확장성을 가질 수 있습니다.

단점

  • 로드밸런서를 사용할 때 어려운 문제 중 하나는 세션 데이터를 관리하는 것입니다.
  • 클라이언트의 연결 정보를 저장하는 세션이 로드밸런싱을 통해 하나의 서버 장비에 저장되는 경우, 추후 다른 서버로 접속하게 된다면 해당 클라이언트의 세션이 유지되지 않습니다.

이러한 문제를 해결하기 위해 세션을 고정하는 Sticky Session을 사용합니다.

 

 

Sticky Session

로드밸런서가 세션 기간 동안 동일한 클라이언트의 request를 항상 동일한 서버로 라우팅 해주는 기능입니다.

 

장점

  • 여러 서버들은 세션 데이터를 교환할 필요가 없습니다.

단점

  • 특정 서버에 과부하가 발생할 수 있으며, 트래픽이 균등하게 배분될 수 없습니다.
  • 로드밸런싱으로 인해 트래픽이 분산이 되긴 하지만, Sticky Session을 사용했을 때 특정 서버에 몰린 사람들만 활발하게 활동하는 경우 해당 서버만 과부하가 걸릴 수 있습니다.
  • 특정 서버에 과부하가 걸리는 경우 로드 밸런서는 이를 감지하고 그 서버로 향하는 트래픽을 다른 서버로 다시 라우팅 하는데, 이럴 경우 기존 세션 데이터가 유실됩니다.

※ Session 정보 유실시 입력 정보 유실, 재 로그인 등으로 인한 서비스 만족도가 하락할 수 있습니다.

 

Session Clustering

다중 서버 환경에서 로드밸런서를 통해 어떤 서버로 접속하든지 세션이 동일하게 유지되도록 설정해 주는 것입니다.

 

1) DeltaManager - 특정 서버에서 발생한 Session 정보를 나머지 모든 서버에 복제합니다. 이는 비용이 크기 때문에 대규모 클러스터 환경에는 적합하지 않습니다.

 

2) BackupManager - 서버가 4개 이상의 경우 이용하는데, 특정 서버에서 발생한 Session 정보를 나머지 서버들 중 오직 1대에만 복제합니다. 나머지 3대의 서버들은 프록시 노드가 돼서 Session ID, 기본, 백업 서버의 주소가 들어갑니다. 

1번 서버 2번 서버 3번 서버 4번 서버
Session 생성 Session 복제 1번 서버 값 2번 서버 값

이후 사용자가 1,2번 서버에 접속하면 이미 해당 Session 정보가 있어서 바로 서비스를 제공합니다. 사용자가 3,4번 서버에 접속하면 1,2번 서버의 Session 정보를 조회 후에 서비스를 제공합니다.

 

※ 세션 클러스터링 방식은 서버가 늘어날수록 늘어나는 서버의 개수만큼 세션 정보를 복제해야 하기 때문에 서버를 추가함에 대한 부하가 발생하는 단점이 있고, 성능 확장에 한계가 있습니다. 한계를 극복하기 위해서는 Redis나 Memcached를 사용합니다.

 

 


👨‍👩‍👦‍👦 오픈채팅방 운영

취업을 준비하는 예비 개발자분들을 위한 질문&답변할 수 있는 공간을 만들었습니다. 취업과 이직을 하기 위해서 어떤 걸 중점적으로 준비해야 하는지부터 포트폴리오&이력서 작성법 등 다양한 질문들을 받고 답변을 드립니다. 참여하셔서 다양한 정보 얻고 가시면 좋을 것 같네요😁

 

참여코드 : 456456

https://open.kakao.com/o/gVHZP8dg

 

비전공 개발자 취업 준비방(질문&답변)

#비전공 #개발자 #취업 #멘토링 #부트캠프 #국비지원 #백엔드 #프론트엔드 #중소기업 #중견기업 #자바 #Java #sql

open.kakao.com

 


👨‍💻 전자책 출간

아울러 제가  🌟비전공자에서 2년만에 보안 전문 중견기업으로 이직 한 방법들을 정리한 전자책을 출간 하게 되었습니다. 어떤 걸 공부해야 하는지, 이직을 위해서 무엇을 준비해야 하는지, 제가 받았던 기술 면접 리스트 등 다양한 목차로 구성되어 있습니다. 또한, 구매 시 1:1 채팅을 이용하여 포트폴리오 첨삭을 도와드리고 있습니다. 🐕전자책으로 얻은 모든 수익은 유기견 센터 '팅*벨 입양센터'에 후원될 예정입니다. 관심 있으신 분들은 아래 링크를 참고해주세요😁

https://kmong.com/gig/480954

 

비전공개발자 2년만에 중견기업 들어간 방법 | 14000원부터 시작 가능한 총 평점 0점의 전자책, 취

0개 총 작업 개수 완료한 총 평점 0점인 Binco의 전자책, 취업·이직 전자책 서비스를 0개의 리뷰와 함께 확인해 보세요. 전자책, 취업·이직 전자책 제공 등 14000원부터 시작 가능한 서비스

kmong.com


 

반응형