로드밸런싱(Load Balancing)

2024. 11. 20. 20:26·Security/Cloud

개발 프로젝트를 진행하며 처음으로 로드밸런싱이라는 개념을 접했다. 로드밸런싱은 서버의 부하를 여러 대의 서버로 분산시켜 효율적으로 운영하는 기술이다. 처음에는 "왜 서버를 여러 개로 나눠야 할까?"라는 의문이 들었지만, 프로젝트를 진행하면서 점점 그 필요성을 체감하게 되었다.

현재 진행 중인 프로젝트는 트래픽이 많지 않아 서버 분할이 필수적이지는 않았지만, 팀원들이 각각 다른 언어를 사용하면서 자연스럽게 Swagger, FastAPI 등을 활용해 서버를 나누게 되었다. 이를 통해 서버를 나누면 배포와 관리의 복잡성이 증가하고 비용 부담이 생길 수 있다는 점을 알게 되었다. 하지만 클라우드 이용료는 학교에서 지원받아 큰 문제가 되지 않았고, 로드밸런싱이 이러한 단점을 상쇄할 만큼 중요한 기술이라는 점을 배울 수 있었다.

 

로드밸런싱을 깊이 공부하면서 단순히 서버를 나누는 것이 아니라, 어떻게 효율적으로 분산하고 유지할 것인가가 핵심이라는 점을 깨달았다. 이번 글에서는 로드밸런싱을 학습하며 중요하다고 느낀 점과 개인적인 배움을 공유하고자 한다.


로드밸런싱은 왜 필요한가?

로드밸런싱은 단순히 서버의 부담을 나누는 기술이 아니다. 더 넓은 관점에서 보면, 사용자 경험과 서비스의 지속 가능성을 보장하기 위한 노력이다. 사용자가 웹사이트에 접속했을 때 느끼는 응답 속도와 서비스 안정성은 모두 로드밸런싱의 설계에 영향을 받는다.

 

관련하여 찾아보면서 느낀 건, 로드밸런싱은 기술적으로 복잡해 보이지만 그 본질은 단순했다.

  • 하나의 서버로 모든 요청을 처리하기엔 물리적 한계가 있다.
  • 서비스가 커질수록 확장성과 안정성이 중요하다.
  • 한 서버가 고장 나도 서비스가 유지되려면 백업이 필요하다.

결국, 로드밸런싱은 지속 가능한 개발과 운영을 가능하게 하는 기본기라는 생각이 들었다.


로드밸런싱의 핵심: 트래픽 분산

로드밸런싱에 대해 찾다 보니 "어떻게 트래픽을 나눌 것인가?"라는 질문이 로드밸런싱의 핵심이었다. 이를 위해 다양한 분배 알고리즘이 사용된다.

 

1. 라운드 로빈(Round Robin)

처음엔 이 방식이 가장 이해하기 쉬웠다. 서버에 차례대로 요청을 보내는 방식이라 "공평하게 나누면 되겠네"라고 생각했다. 하지만 각 서버의 상태나 처리 속도가 다르면 비효율적일 수 있다는 점도 배웠다.

 

2. 최소 연결(Least Connections)

각 서버의 연결 상태를 확인하고 가장 한가한 서버로 요청을 보내는 방식이다. 트래픽이 많아질수록 더 똑똑한 방식이라는 느낌이 들었다.

 

3. 가중치 기반(Weighted Round Robin)

서버마다 처리 능력이 다를 수 있다는 저믈 반영한 방식이다. 공부하면서 "현실적인 로드밸런싱은 단순히 나누는 것 이상의 설계가 필요하다"는 걸 깨달았다.


로드밸런싱에서 배운 '확장성'의 중요성

로드밸런싱을 공부하며 특히 인상 깊었던 개념은 확장성(Scalability)이다. 서비스는 지날수록 더 많은 사용자를 받게 되는데, 처음부터 확장성을 고려하지 않으면 나중에 큰 문제가 된다.

 

예를 들자면

  • 사용자가 갑자기 늘어나면, 하나의 서버만 사용하는 시스템은 다운타임을 피할 수 없다.
  • 반대로, 로드밸런싱을 도입한 시스템은 서버를 추가하기만 하면 트래픽을 분산할 수 있다.

확장성을 설계에 포함하는 것이 개발자의 중요한 책임이라는 것을 배웠다.


실습하며 배운 것

개념적으로 로드밸런싱에 대해 정확히 알게 됐다. 직접적인 사용을 해보기 위해 간단한 FastAPI 앱을 Nginx를 통해 로드밸런싱하며 몇 가지 새롭게 배웠다.

 

1. 상태 확인(Health Check)이 필수적이다.

여러 서버 중 하나의 서버를 강제로 중단시켜 봤는데, 로드밸런서가 자동으로 요청을 다른 서버로 분배했다. 이 과정에서 "정상적인 서버만 선택하는 기능이 얼마나 중요한지" 알게 됐다.

 

2. 분산만 하면 끝이 아니다.

트래픽이 분산된다고 무조건 좋은 게 아니라, 각 서버의 성능과 데이터 동기화를 신경 써야 한다는 점을 깨달았다.

 

3. 로그 분석의 필요성

로드밸런서를 사용하면 트래픽의 흐름을 파악하기 위해 반드시 로그를 분석해야 한다. 이를 통해 트래픽 패턴을 이해하고 서버 설정을 최적화할 수 있었다.


깨달은 점

로드밸런싱은 '기술'이 아니라 '사고방식'이다. 

로드밸런싱을 단순히 하나의 기술로 접근하기보다는, 안정적인 시스템을 만들기 위한 사고방식으로 이해하는게 중요하다고 느꼈다. 작은 프로젝트에서는 필요 없다고 생각할 수 있지만, 서비스가 커질수록 필수적인 개념이다.

 

내가 깨달은 로드밸런싱의 핵심

  1. 로드밸런싱은 서버를 늘리는 기술이 아니라, 서버를 효율적으로 사용하는 방법이다.
  2. 알고리즘과 도구를 이해하는 것도 중요하지만, 사용자의 경험과과 시스템 안정성을 최우선으로 고려해야 한다.
  3. 소규모 프로젝트에서도 확장성과 장애 대응을 염두에 두면 성공적인 시스템 설계로 이어질 수 있다.

'Security > Cloud' 카테고리의 다른 글

[AWS] Amazon CloudFront로 CDN 구성  (1) 2024.11.25
[AWS] Amazon VPC로 퍼블릭/프라이빗 서브넷 구성하기  (1) 2024.11.24
[AWS] AWS EC2 인스턴스 배포 및 접근(for mac)  (1) 2024.11.23
[Cloud] 클라우드 컴퓨팅 서비스  (4) 2024.09.17
[Cloud] 클라우드 컴퓨팅의 이해  (4) 2024.09.17
'Security/Cloud' 카테고리의 다른 글
  • [AWS] Amazon VPC로 퍼블릭/프라이빗 서브넷 구성하기
  • [AWS] AWS EC2 인스턴스 배포 및 접근(for mac)
  • [Cloud] 클라우드 컴퓨팅 서비스
  • [Cloud] 클라우드 컴퓨팅의 이해
min8282
min8282
  • min8282
    min8282
    min8282
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Security (33)
        • System & Network (2)
        • Application (5)
        • Cloud (20)
      • Dev (18)
        • Node.js (12)
        • Hadoop (3)
        • BOJ (2)
      • Web3 & Blockchain (2)
        • Web3 (2)
      • K-Shield.Jr (15)
      • Web Security Academy (3)
      • Wargame (13)
        • Dreamhack (3)
        • Bandit (10)
      • NS (16)
        • CTF (6)
  • 블로그 메뉴

    • 홈
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    prepared statement
    스마트컨트랙트
    metacode
    Session Manager
    amazon s3 트리거
    aws lambda
    metacodem
    systems manager
    오블완
    탈중앙화
    ESC1
    web security academy
    스마트 컨트랙트
    메타코드M
    티스토리챌린지
    Path Traversal
    정처기
    메타코드
    aws 트리거
    보안 그룹
    splunk db connect
    web3 보안
    web3
    AWS CLI
    File Upload
    정처기 필기
    ELB
    정처기필기
    AWS SSM
    정보처리기사
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
min8282
로드밸런싱(Load Balancing)
상단으로

티스토리툴바