티스토리 뷰

728x90
반응형

목차

     

    Server Load Balancing(SLB)

     

    SLB란 말 그대로 하나의 서버에 사용량이 집중되지 않도록 서버를 분산하고,

     

    서버 리소스에게 작업을 나누어주는 기술을 말하며, 당연하게도 그 목적은 가용성과 응답 시간의 최적화에 있다.

     

    주로 연산장치와 저장장치가 그 대상이 되며, 내부 서버끼리는 병렬 처리를 통해 트래픽을 주고받는데,

     

    이때 서버 외부의 트래픽을 받아 내부 병렬 장치로 분산시켜주는 장치를 로드 밸런서(Load Balancer)라고 부른다.

     

    단일 서버의 경우 갑작스러운 트래픽 증가 혹은 내부적인 이유로 뻗어버리면 클라이언트의 UX에 직결되는 위험이 존재한다.

     

    하지만 로드 밸런싱을 통해 분산 시스템을 구축하면 하나의 모듈이 죽어도 나머지가 일을 계속해서 처리하기 때문에

     

    서버의 문제점을 사용자에게서 감출 수 있어, 시스템의 전체적인 신뢰도가 올라가는 효과가 있다.

     

    하지만 클라우드 컴퓨팅을 전문으로 서비스하는 회사가 아닌 이상 특정 클라우드 서비스에서 자원을 끌어와 구현하며,

     

    병렬 처리의 특성상 한계점이 명확하고(암달의 법칙), 내부 트래픽 증가 및 개별 보안 관리라는 단점도 가지고 있다.

     

    *암달의 법칙 - 병렬 처리 시 일정 수 이상의 프로세서를 넘어서면 더 이상 성능 증가가 발생하지 않는다. 즉, 상한선이 있다.

     

    또한 기존의 모놀리식 아키텍처에서 분산 구조로의 변환은 다음과 같은 부분에서 변화를 요구하는데,

     

    • PK의 생성 전략 변경

      • 분산 환경에서 자동 증가 생성 방식은 PK의 충돌을 발생시킬 수 있다.
      • 좀 더 구체적으론 별도의 처리가 되어있지 않다면 중복 키가 발생할 확률이 높고 이는 데이터 일관성을 해친다.

        • 참고로 해당 방식의 경우 엔티티 매니저의 persist()가 호출될 때 바로 DB에 Insert 커밋을 날리며
        • 이후에 JPA 내부에서 Insert 쿼리 후 생성된 Id 값을 리턴 받아 영속성 컨텍스트에 저장하는 식이다.
      • 따라서 위와 같은 방식보단 UUID(Universally Unique ID)를 사용하는 것을 추천하지만, 시간이 조금 더 걸린다.
    • DB의 관리방식 변경

      • 단일 DB로 관리할 것이 아니라면 앞서 말한 키 중복과 더불어 분산 DB 간의 데이터 동기화가 중요해진다

    처음부터 분산 환경을 염두에 둔 것이 아니라면 변경에 시간이 조금 걸릴 수 있다.

     

    추가로 로드밸런싱의 종류는 크게 보면 아래와 같은 두 가지로 나뉜다.

     

    • L4 - L4 계층의 로드밸런싱. IP, TCP, UDP, 포트번호, MAC 주소 등의 정보를 이용해 트래픽을 나눈다.
    • L7 - L7 계층의 로드밸런싱. L4의 상위 호환이며 L7 계층의 프로토콜(HTTP, SMTP, FTP)을 바탕으로 분산처리를 실행한다. 

      • SMTP - 이메일 전송 프로토콜, FTP - 파일 전송 프로토콜

    계속해서 위와 같은 로드 밸런싱을 처리해주는, AWS의 ELB에 대해 정리하자.

     

    Elastic Load Balancer(ELB)

     

    ELB는 AWS에서 제공하는 로드 밸런싱 서비스이다. EC2, ECS, Lambda 등을 대상으로 분산을 실행하며

     

    L4 로드밸런싱의 기본적인 기능을 당연히도 보유하고 있다.

     

    *ECS - 컨테이너 오케스트레이션 서비스. Lambda - 이벤트 기반 서버리스 컴퓨팅 플랫폼

     

    이에 더해 HTTP Header 조작에 의한 전달 대상 고정 및 특정 페이지 반환,

     

    ACM(Amazon Certificate Manager)의 SSL 인증서 탑재에 의한 EC2 부하 감소,

     

    WAF(Web Application Firewall)를 앞세운 보안 기능 강화와 Cloudfront를 통한 반응속도 향상에 더해

     

    Global Accelerator를 사용한 GSLB(DNS 기반)까지 지원하고 있다.

     

    추가로 AWS에는 AutoScaling이 탑재되어 있어서 트래픽에 따라 자동으로 EC2를 추가하거나 삭제해

     

    비용을 최적화해주기 때문에, ELB와 연동하여 추가된 EC2를 분산 대상에 포함시킬지 설정할 수도 있다(이 부분이 탄력적).

     

    기본 구성은 외부의 요청을 받아들이는 리스너와 요청을 분산할 대상인 타깃그룹, 보안 그룹으로 나뉘며

     

    타깃 그룹 내 리소스는 주기적으로 헬스체크를 활용해 상태를 확인받는다.

     

    계속해서 ELB는 위의 로드밸런싱과 비슷하게 아래의 세 종류로 나뉘며, 특징을 요약하면 다음과 같다.

     

    • GateWay Load Balancer(GWLB) - 2021년 3월 서울 리전 추가. 아래의 모든 기능에 더해 네트워크 게이트웨이(트래픽이 오고 가                                                              는  단일 지점), 로드밸런서에 대한 오토스케일링 빛 패킷을 통한 추적 등을 완전히 관리해주                                                                는 서비스
    • Application Load Balancer(ALB) - L7 계층을 이용. HTTP, HTTPS의 특성을 주로 다루며 HTTP 헤더 정보를 이용해 부하 분산.                                                            SSL 인증서를 탑재할 수 있기 때문에 EC2를 대신하여 SSL 암호화/복호화를 진행할 수 있음.
                                                                로드 밸런서 통합 및 WebSocket, WAF 등의 활용 가능
    • Network Load Balancer(NLB) - L4 계층을 이용. 즉 TCP와 UDP 요청을 이용해 부하 분산을 실시. HTTP 헤더 해석 불가
    • Classic Load Balancer(CLB) - L4부터 L7까지 로드밸런싱 가능. 가장 기본적 형태. 하나의 URL만 가질 수 있음. 잘 사용되지 않음

    마지막으로 하나의 ELB는 여러 개의 로드밸런서 노드(리스너)를 가질 수 있고, 로드 밸런서가 구성하는 영역을 가용 영역이라고 부르며,

     

    그 안에 로드 밸런싱의 대상이 되는 EC2등(타깃 그룹)이 존재한다.

    반응형
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/11   »
    1 2
    3 4 5 6 7 8 9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 29 30
    글 보관함