클라우드 확장성(scalability)

Olivia·2023년 10월 23일
0

확장성(Scalability)

  • 이용자가 증가하거나 서비스 기능이 추가되어 확장이 필요한 경우, 클라우드컴퓨팅 서비스가 정상적으로 유지될 수 있는 시스템 구조 혹은 확장요청 처리시간

  • 부하로 인해 서비스를 제공하지 못하는 경우를 대비하여 리소스 확장함으로써 서비스 가용성 높임.

    • 서비스 처리와 관련된 자원의 양이 증가할 수록 서비스 처리 능력 비례하여 증가할 수 있어야 함.
    • 클라우드 서비스 제공자는 제시된 시간 내 서비스 확장이 완료될 수 있도록 지원해야 함.

    확장 가능한 시스템이란?

    요구되는 시스템의 성능에 따라 동적으로 서버 구성이 변경되고, 시스템 처리 능력을 최적화할 수 있는 시스템.

    시스템 처리 능력 확장 방법

    • 수평 확장(Scale-Out):

      서비스 요청에 대한 분산 혹은 병렬 처리를 위해 동일한 기능을 수행하는 서버를 추가하여 다수의 서버로 처리 성능 높임.

      하나의 장비에서 처리하던 일을 여러 장비를 추가해서 확장하는 방식.
      기존 서버만으로 용량이나 성능의 한계에 도달했을 때, 비슷한 사양의 서버를 추가로 연결해 처리할 수 있는 기존 서버의 부하를 분담해 성능 향상의 효과를 기대할 수 있음.

      수평 스케일링(Horizontal scaling)이라고도 함.
      자원 사용량을 모니터링하여 자동으로 서버를 증설하는 Auto-scaling기능도 있음.
    • 수직 확장(Scale-Up):
      단일 서버 인스턴스에 CPU, 메모리 등으로 하드웨어 장비의 성능을 높여, 확장하여 고성능 서버로 변경.

      기존의 서버를 보다 높은 사양으로 업그레이드하는 것.
    • 자동 확장(Auto-Scaling):
      스케쥴링된 시간, 임계치 사용량 초과 등의 확장 이벤트 발생 시, 설정된 정책에 따라 리소스 자동 확장.
    • 수동 확장(Manual Scaling):

      이용자로부터 원하는 리소스 사양(CPU, 메모리 등)을 입력받아 리소스 확장.
    • 수직확장을 고려할 경우, 다운타임이 발생하여 가용성이 떨어지고, 성능 제한이 있기 때문에 한계를 고려해야 한다.

    부하 테스트의 목적

    • 시스템이 확장성을 가졌는지 확인
    • 성능을 개선하기 위해 확장해야 하는 시스템이 무엇인지 파악
    • 부하가 많이 발생했을 때 문제 상황 개선
    • 각 시스템의 병목 지점 예측, 진단 및 개선

    확장성에 대한 특징

    • Throughput이란?

      시간 당 처리량을 뜻하며 시스템 성능 지표로는 RPS(Reuqest P er Second), TPS(Transaction Per Second)와 같은 단위로 표현
      • RPS : 서버가 초당 처리할 수 있는 요청 수

        1초당 100개의 요청 처리 시 = RPS = 100
      • TPS : 데이터베이스나 트랜잭션 처리 시스템에서 초당 처리할 수 있는 거래 수

        1초당 50개의 트랜잭션 처리시 = TPS = 50

    부하가 많이 발생할 때 문제

    • 응답 속도 Latency 저하

      캐시 사용, 로드밸런싱, 데이터베이스 최적화, 코드 최적화, 네트워크 최적화

    • 시스템 잠금 Lock 경합

    • 여러 프로세스나 스레드가 동시에 하나의 공유 리소스에 접근하려고 할 때 발생

    • Lock이 걸려있는 경우, 다른 프로세스나 스레드는 해당 리소스에 접근할 수 없고 대기 상태로 들어감.

    • 대기 상태로 들어간 프로세스나 스레드가 많아질 수록 시스템 성능이 저하될 가능성 있음.

    • 비관적 잠금(Pessimistic locking), 낙관적 잠금(Optimistic locking)을 사용하여 시스템 성능을 개선할 수 있음.

      비관적 잠금: 
      다른 프로세스나 스레드가 데이터나 자원을 변경하지 않도록 락을 걸고 기다림.
      락이 걸려있는 동안 해당 데이터나 자원에 접근할 수 없음. 
      락 시간이 길어지면 시스템 성능에 영향을 미침.
      
      낙관적 잠금: 
      락을 거지 않고 변경 요청이 있을 때, 실제 데이터가 변경되었는지 검사.
      다른 프로세스나 스레드가 데이터를 변경해야하는 경우를 감지하고, 변경되지 않았을 경우에만 데이터를 업데이트함.
      락이 없어서 시스템 성능이 향상될 수 있지만 충돌이 발생할 수 있음.
  • 부하 발생 시 어플리케이션 또는 서버 에러 발생

  • 데이터 일관성 문제 또는 손실

Throughput

시간 당 처리량

Latency

처리 시간
시스템이 요청 받고 응답줄 때까지의 시간.

CDN

콘텐츠 전송 네트워크
네트워크 사용량이 많은 어플리케이션의 웹 페이지로드 속도를 높이는 상호 연결된 서버 네트워크

확장성 점검 항목 예

  1. 확장성 지원 능력
    • 확장성 보장을 위한 관리체계 및 운영정책(42p)
  2. 확장 기능
    • 서비스 인스턴스 수평 확장(Scale-Out) 기능(89p)
    • 서비스 인스턴스 수기 확장(Scale-Up) 기능 (92p)
    • 애플리케이션 서비스 인프라 확장 기능
      (94p)
    • 애플리케이션 서비스 기능 확장 (96p)
  3. 확장 요청 처리시간
    • 확장 요청 처리시간 (97p)

부하발생 테스트 툴

stress-ng & AB(Apache HTTP server benchmarking tool)를 함께 사용할 예정.

  1. stress-ng
    시스템 리소스에 부하를 가해 시스템 안정성과 성능을 테스트하는 도구.

    CPU, 메모리, 디스크, 네트워크 등 다양한 리소스를 사용해서 시스템 신뢰성 확인 후 부하테스트 수행 가능.
  2. AB(Apache HTTP server benchmarking tool)
    Apache HTTP 서버나 다른 웹 서버의 성능 및 부하 테스트를 위해 사용되는 도구.

    웹 서버의 응답 시간, 처리량, 동시 접속 수 등을 측정하는 데 사용
profile
👩🏻‍💻

0개의 댓글