콘텐츠로 건너뛰기
Home » Blog » LAN, 대규모 트래픽 서버 과부화 해결법

LAN, 대규모 트래픽 서버 과부화 해결법

LAN

유선 LAN

전이중화 통신, CSMA/CD

  • 전이중화(full duplex) 통신은 양쪽 장치가 동시에 송수신할 수 있는 방식을 말한다.
  • 동축케이블, 광케이블 등을 기반으로 만들어진 유선 LAN을 이루는 이더넷은 IEEE802.3 프로토콜을 기반으로 전이중화 통신을 사용한다.
    • IEEE802.3 : 이더넷 프레임은 어떤 구조를 기반으로 할 것인지, 케이블의 최대 전송량, 어떤 케이블만이 가능하도록 할 것인지 등을 정한 규칙

전이중화 장치

  • 양쪽장치가 동시에 송수신할 수 있는 방식, 송신로와 수신로를 나눠서 데이터를 주고 받을 수 있다.

CSMA/CD

  • 이전에는 유선 LAN에 ‘반이중화 통신’ 중 하나인 CSMA/CD (Carrier Sense Multiple Access with Collision Detection) 방식을 썼다.
  • 이 방식은 회선을 사용하는지를 파악한 후 사용하지 안흔ㄴ다면 데이터를 보내고 충돌이 발생한다면 일정 시간 이후 재전송하는 방식을 말한다.

케이블

트위스트페어케이블

  • 실드처리를 한 케이블이 STP 케이블
  • 실드처리를 안한 케이블이 UTP 케이블
    • LAN 케이블 : 유선 LAN을 구축할 떄 쓰는 케이블

광섬유케이블

  • 레이저를 이용해 통신하며 보통 100Gbps의 데이터를 전송하는 케이블
  • 빛의 굴절률이 높은 부분을 코어, 낮은 부분을 클래딩 이렇게 다른 밀도를 가지는 유리나 플라스틱 섬유를 기반으로 제작
  • 한 번 들어간 빛이 내부에서 계속해서 반사하며 전진하여 반대편 끝까지 가는 원리를 이용한 것

무선 LAN

  • 무선랜은 IEEE802.11 표준규격을 따르며 반이중화 통신을 사용한다.
  • 대표적인 기술 : wifi
    • 와이파이는 전자기기들이 무선 LAN 신호에 연결할 수 있게 하는 기술
    • 근거리 무선망이라고도 할 수 있지만 근거리무선망은 블루투스, 지그비 등도 있기 때문에 엄밀히 말하면 틀리다.

반이중화 통신

  • 반이중화(half duplex) 통신은 양쪽 장치는 서로 통신할 수 있지만, 동시에는 통신할 수 없으며 한 번에 한 방향만 통신할 수 있는 방식을 말한다.

CSMA/CA

  • 반이중화 통신 중 하나로 데이터를 보내기 전에 일련의 과정을 기반으로 사전에 가능한 한 충돌을 방지하는 방식

주파수와 2.4GHz와 5GHz의 차이

  • 무선 LAN(WLAN, Wireless Local Area Network)은 무선 신호 전달 방식을 이용하여 2대 이상의 장치를 연결하는 기술
  • 비유도 매체인 공기에 주파수를 쏘아 무선 통신망을 구축하는데, 주파수 대역은 2.4GHz 대역 또는 5GHz 대역 중 하나를 써서 구축

대규모 트래픽으로 인한 서버 과부하 해결방법

서버 과부하

  • 서버가 리소스를 소진하여 들어오는 요청을 처리하지 못할 때 발생한다.
  • 이 때 서버는 사용자의 웹 요청을 처리하지 못해 응답없음이 뜨게 된다.

1. 모니터링을 통한 자원 할당

  • 이러한 서버 과부하로 서버가 응답없음이 뜨는 여러 원인들 중 하나가 “자원의 한계점 도달”이다.
  • 보통 서버의 CPU 사용량이 80~90%에 도달하거나 메모리가 부족해 계속해서 스와핑이 발생하면 과부화 상태가 된다.
  • 이는 모니터링을 통한 자원의 적절한 할당으로 해결한다.
    • 자원은 CPU, 메모리, 대역폭도 포함한다.

모니터링을 하는 이유

  • 먼저 서버 과부하로 인한 조치를 하기 위해서는
    1. 어떤 트래픽이 얼마나 발생했는지
    2. 어떤 네트워크에서 병목현상이 일어났는지
    등을 기준으로 해결할 수 있다.
  • 또한 모니터링을 하면 활용도가 낮은 페이지, 높은 페이지를 파악할 수 있어 나중에 서비스 개선에도 도움이 된다.
  • 즉, 해결하기 위한 문제점을 파악하기 위해 모니터링은 필수적이다.

로드밸런서

  • 앞서 설명한 AWS 오토스케일링은 빠르긴 하나 구성에 시간이 걸리기 때문에 앞단에 로드밸런서를 통해 트래픽을 분산해야 한다.

블랙스완 프로토콜

  • 블랙스완 : 예측할 수 없는 사고가 일어난 것
  • 사후에는 이 사고의 원인 등을 분석할 수 있지만 사전에는 이 사고를 예측할 수 없는 것
  • 매번 일어나기 때문에 이에 따라 대비를 해야한다. → 규칙을 정해야한다.
    1. 영향받은 시스템과 각 시스템의 상대적 위험 수준을 확인
      1. 체계적으로 데이터를 수집하고 원인에 대한 가설을 수립한 후 이를 테스팅
    2. 잠재적으로 영향을 받을 수 있는 내부의 모든 팀에 연락
    3. 최대한 빨리 취약점에 영향을 받는 모든 시스템을 업데이트
    4. 복원계획을 포함한 우리의 대응 과정을 파트너와 고객 등 외부에 전달

2. 서킷 브레이커

  • 서킷 브레이커 패턴이라고도 불리며 서비스 장애를 감지하고 연쇄적으로 생기는 에러를 방지하는 기법
  • 서비스와 서비스 사이에 서킷브레이커 계층을 두고 미리 설정해놓은 timeout 임계값에 도달하면 서킷브레이커가 그 이후의 추가호출에 무조건 에러를 반환하게 한다. (연쇄적인 오류전파를 끝내느 서킷브레이커)
  • 필요한 사례
    • 스레드 차단
    • 계단식 실패 발생

동작 과정

상태

  • closed, open, half_open 상태를 가진다.
  • closed[정상] : 네트워크 요청의 실패율이 임계치보다 낮음
  • open[에러] : 임계치이상의 상태를 의미한다. 요청을 서비스로 전송하지 않고 바로 오류를 반환 (fail fast)
  • half_open[확인중] : open 상태에서 일정 timeout으로 설정된 시간이 지나면 장애가해결되었는지 확인하기 위해 half_open 상태로 전환된다. 여기서 요청을 전송하여 응답을 확인한다. 장애가 풀리는지를 확인해서 성공하면 closed, 실패하면 다시 open으로 변경한다.

장점

  • 연속적인 에러 발생을 막아주며 일부서비스가 종료되더라도 다른 서비스들은 이상없이 동작하게 만들 수 있으며 사용자 경험을 높여준다.

서킷브레이커가 구현된 라이브러리

  • 넷플릭스의 Hystrix
  • Resilience4j

3. 컨텐츠 관리

  1. 불필요한 컨텐츠 제거
  2. CDN을 통한 컨텐츠 제공
    1. CDN을 통해 사용자 가까이, 그리고 분산된 대규모 서버 네트워크를 기반으로 컨텐츠를 제공해서 메인 서버에 대한 부하를 줄인다.
  3. 컨텐츠 캐싱
    1. 네트워크 트래픽을 해결하는 가장 좋은 방법은 해당 트래픽이 발생하지 않도록 하는 것
    2. 브라우저 캐시(쿠키, 로컬저장소, 세션저장소)를 통해 해당 요청에 관한 항목을 캐시에서 응답을 읽어 네트워크 요청에 관한 비용을 모두 제거한다.
  4. 컨텐츠 압축
    1. 텍스트 기반 리소스는 gzip 또는 Brotli를 통해 압축해야만 한다.
    2. 압축하면 70% 정도까지 압축할 수 있다.
    3. 다만 압축했기 때문에 압축을 풀기 위해 서버에서 자원(CPU)를 사용하는 양까지 고려해야 한다. (보통은 압축하면 좋다.)
  5. 컨텐츠의 우하한 저하 (미리 준비된 응답)
    1. 시스템의 과도한 부하를 줄이기 위해 제공하는 컨텐츠 및 기능을 일시적으로 줄이는 전략
    2. 예를 들어 정적 텍스트 페이지를 제공하거나, 검색을 비활성화하거나 더 적은 수의 검색 결과를 반환하거나, 필수적이지 않은 기능을 비활성화 한다.