대용량 트래픽 발생 시 대응 방법 4가지

박영준·2023년 8월 10일
0

CS

목록 보기
2/16

대용량 트래픽 발생 시 어떻게 대응해야 하는지에 대한 방법은 개발자 면접에서 자주 나오는 질문 중의 하나!

1. 스케일 업(Scale-Up), 스케일 아웃(Scale-Out)

많은 사용자들이 이용하는 서비스는 원활한 서비스를 위해 인프라를 확장해야 하는데,
인프라는 업그레이드하는 방법에는 '스케일 업'과 '스케일 아웃'이 있다.

스케일 업(Scale-Up)

1) 정의

  • 기존 서버의 사양을 업그레이드해 시스템을 확장하는 것

    • 하드웨어적인 업그레이드라고 보면 된다.
  • "수직 스케일"

    • '하나'의 서버의 사양을 업그레이드하기 때문에, 수직 스케일로 불리기도 한다.
  • 예시

    • CPU나 RAM 등... 을 추가
    • 고성능의 부품, 서버로 교환

2) 장단점

장점

  • 추가적인 네트워크 연결 없이, 용량을 증강 가능

  • (스케일 아웃보다) 관리 비용 小 운영 이슈 小

  • 사양만 올리면 되므로, 비교적 쉬움

단점

  • 성능 향상에 한계 O

    • 수직 확장
  • 성능 향상에 따른 비용부담 大

    • 성능 향상에 따른 비용 증가폭 大
  • 자연재해 등의 다양한 이유로 서버에 문제가 생기면 타격 大

    • 서버 한 대가 많은 양을 부담하기 때문
  • 다운타임 불가피

    • 성능 향상을 위해 기존의 서버를 교체할 경우, 서비스를 이용할 수 없는 시간이 생길 수 밖에 없음
  • 향후 확장 가능성에 대비해, 서버를 현재 필요한 만큼보다 더 많은 용량이나 성능을 확보해놓는 경우 多

    • 그러나 예상했던 정도와 요구되는 정도가 다르거나, 확장의 필요성이 없어졌을 경우 추가로 확보해놓은 만큼의 손해가 발생하게 됨

3) 활용처

  • 고성능이 요구되는 환경

    • 워크플로우 기반의 빠르고 정확하면서 단순한 처리가 필요한 OLTP(Online Transaction Processing) 환경

    • 예시 : 온라인 금융거래

스케일 아웃(Scale-Out)

1) 정의

  • 하나의 장비에서 서버를 여러 대 추가하여 시스템을 확장하는 것

    • 서버가 여러 대로 나뉘기 때문에, 각 서버에 걸리는 부하를 균등하게 해주는 '로드밸런싱'이 필수적으로 동반되어야 한다.
      (로드밸런싱 : 로드 밸런서로 여러 서버에 트래픽(서버 부하)을 고르게 분산시켜줌)
  • "수평 스케일"

    • 여러 대의 서버로 나눠 시스템을 확장하기 때문에 수평 스케일로 불리기도 한다.

2) 장단점

장점

  • 확장의 유연성

    • 수평 확장
    • 서버를 필요한 만큼만 도입해 놓는다
    • 장기적인 용량 증가 추이를 예측할 필요 없이, 그때그때 필요한 만큼 서버를 추가해 용량과 성능을 확장 가능 (지속적으로 확장 가능)
  • 읽기 / 쓰기가 여러 대의 서버에 분산 처리

  • 장애 발생 시, 전면 장애의 가능성 小

  • 서버 사용으로 인한 비용 부담 小

단점

  • 여러 노드를 연결해 병렬 컴퓨팅 환경을 구성하고 유지하려면, 아키텍처에 대한 높은 이해도가 요구

  • 서버의 수가 늘어날수록 관리가 힘들어지는 부분이 있음

  • 아키텍처의 설계 단계에서부터 고려되어야 할 필요가 있음

  • 여러 노드에 부하를 균등하게 분산시키기 위해 로드 밸런싱(load balancing)이 필요

    • 노드를 확장할수록, 문제 발생의 잠재 원인 또한 추가한 만큼 늘어나게 됨

3) 활용처

  • 대량의 데이터 처리가 요구되는 환경
    -대량의 데이터 처리와 복잡한 쿼리가 이루어지는 OLAP(Online Analytical Processing) 어플리케이션 환경

    • 예시 : 빅데이터의 데이터 마이닝이나 검색엔진 데이터 분석 처리

2. 캐싱

캐시를 통해, 자주 사용되는 데이터 or 페이지를 메모리에 저장해둠으로써 서버의 부하를 감소시킬 수 있다.

캐시

  • 사용 상황?

    • 동일한 데이터(자주 사용하는 데이터)에 반복해서 접근할 경우
    • 많은 연산이 필요한 경우

    이런 상황에서 결과를 빠르게 얻기 위해 저장해두는 것

  • 주기억장치와 CPU 사이에 위치

  • 예시

    • 한 번 접속한 웹 사이트에 동일한 브라우저로 다시 접속할 경우,
      용량이 큰 이미지나 비디오는 다시 받아오지 않고 브라우저 캐시에 저장해뒀다가 동일하게 가져다 쓸 수 있다.
      이를 통해, 훨씬 빠르게 웹 사이트의 컨텐츠를 볼 수 있다.

캐싱

  • 정의

    • 캐시 영역으로 데이터를 가져와서 접근하는 방식(정의1)
    • 메모리상에 있는 데이터를 연산할 경우, 이 연산을 더 빠른 CPU 메모리 영역으로 가져와 처리를 수행하는 것(정의2)
  • 예시

    • 속도가 느린 디스크의 데이터를 속도가 빠른 메모리로 가져와서, 메모리상에서 읽고 쓰는 작업을 수행

3. 비동기 처리

처리 시간이 오래걸리는 작업과 즉시 처리돼야 하는 작업을 분리하고,
오래걸리는 작업을 처리하는 동시에 병렬적으로 그 외의 작업을 함께 처리해서, 시스템 전체의 부하를 감소시킨다.

동기 통신 (Synchronous)

  • 정의

    • request가 있으면 해당 response가 전달될 때까지 다른 request를 요청할 수 없는 통신 방법
  • 사용 상황

    • 요청 결과 위주 서비스
      • request에 대한 전달 결과가 중요한 서비스
      • 결과보단 모든 요청이 신속하게 이뤄져야 하는 서비스에서는 추천되지 않는 방식

비동기 통신 (Asynchronous)

  • 정의

    • request에 대한 response를 기다리지 않고, 계속 request를 보내는 방식
      따라서, 응답 순서는 요청 순서와 다를 수 있다.
  • 사용 상황

    • 빠른 성능 위주 서비스
      • 결과보다는 더 빠른 성능이 요구되는 서비스에 적절
      • 결과가 중요한 서비스에서는 추천하지 않는 방식
  • 사용법
    비동기 통신을 하기 위해서는

    • Client : Server 로 요청 메시지의 본문(Body)에 데이터를 담아서 보내야 한다

      • 이 떄의 body 를 Request Body 라고 한다
        • JSON 형식으로 담긴다
    • Server : Client 에 응답하기 위해, 응답 메시지의 본문(Body)에 데이터를 담아서 보내야 한다

      • 이 떄의 body 를 Response Body 라고 한다
        • JSON 형식으로 담긴다

4. 재해 복구 시스템

대용량 트래픽으로 인해 서버가 과부화될 경우(디도스 같이), 재해 복구 시스템을 통해 빠르게 복구를 할 수 있다.
(디도스 : 여러 시스템을 사용하여 웹 서버에 부하를 가하는 분산형 서비스 거부 공격으로써, 대량의 트래픽을 발생시켜 네트워크를 마비시킴)

재해 (Disaster)

  • 정전, 장비 오류, 사이버 공격(멀웨어, 랜섬웨어 공격 등...), 산업/자연 재해 등...

재해 복구 (Disaster Recovery)
목적에 따라 4가지로 구분된다.

  • 미러 사이트

    • 메인 시스템과 동일 환경 구축 + 동기화
    • 복구 목표 시간(RTO)이 분 단위로 짧음
  • 핫 사이트

    • 메인 시스템과 동일 환경 구축
    • 평소에는 대기 상태로 운영
  • 웜 사이트

    • 중요성이 높은 데이터만 부분 저장
  • 쿨 사이트

    • 단순 데이터 저장
    • 주로 보완책으로 사용

참고: 스케일 업(Scale-Up)과 스케일 아웃(Scale-Out)이란?
참고: Scale-up과 Scale-out에 대해 알아보자!
참고: 캐시 / 캐싱이란?
참고: 비동기 통신과 동기 통신
참고: 재해 복구(DR; Disaster Recovery)에 대해서
참고: Synchronous & Asynchronous Transmission (동기, 비동기 통신 모드)

profile
개발자로 거듭나기!

0개의 댓글