You are a developer, not a coder.

부하 테스트에 대해서 본문

AWS

부하 테스트에 대해서

Mattmk 2020. 5. 8. 14:49
SMALL

서비스 Lanuch 이후 초조하게 모니터링을 하면서 기다리냐? 아니면 부하테스트 사전 수행으로 부하를 선Check 할것이냐 둘중에 한개를 택하라 하면 개발자는 당연히 후자를 택할 것이다.

 

자 그럼 AWS 부하테스트에 대해서 알아보자.

1. 부하 테스트는?

소프트웨어 시스템 또는 컴퓨팅 장치에 요청을 보내고, 응답을 측정하는 테스트 방법이다.

 

우리는 부하테스트를 통해서 다음과 같은 현상들을 찾아낼 수 있다.

  • 현재 서비스 구성의 제한(limit)을 찾기
  • 원하는 부하를 수용할 수 있게끔 구성되었는지 확인
  • 병목 지점을 찾고 병목 현상을 제거

2. 종류

부하 테스트 (Load Test)

소프트웨어 시스템에 요청을 보내서 응답을 측정하는 절차

 

스트레스 테스트 (Stress Test)

시스템의 안정성을 결정하기 위해서 수행되는 의도적인 심한 테스트. 일반적인 운영 용량을 넘은 테스트를 수행하여 결과를 관찰함

 

3. 부하 테스트 수행전에 고려해야할 내용들

  • 충분한 테스트용 서버 자원 확보
  • 테스트 시, 블랙박스 혹은 격리된 환경 제어
  • 글로벌 기반의 부하 생성
  • 높은 비용과 불규칙적인 사용성에 대한 주의
  • 높은 아키텍처 복잡성에 대한 주의

4. AWS 클라우드 기반의 부하 테스트 장점

효율적인 비용
  • 테스트 조건에 맞는 인스턴스 사용
  • 워밍업 테스트에는 작은 인스턴스 사용
  • 테스트 종료 후, 자원 반환
충분하고 유연한 자원
  • 필요한 규모의 테스트 자원 확보 가능
  • 오토스케일링을 통한 부하 테스트시 자원 자동 증가 및 감소
글로벌 리전 활용
  • 전 세계 리전을 활용한 부하 테스트 수행
쉽고 단순한 아키텍처 구성 및 관리
  • CloudFormation을 이용한 동일한 운영, 테스트 환경의 손쉬운 구성
  • 관리형 서비스, Serverless Service를 이용한 부하 테스트 환경 운영 간소화 및 단순화

5. 단계별로 수행하는 부하 테스트

  • 비결합(Loosely Coupled)된 개별 컴포넌트에 대한 부하 테스트
  • 내부 서비스에 대한 부하 테스트
  • 외부 서비스에 대한 부하 테스트
  • 전체 스택에 대해 부하 테스트

6. AWS에 있는 컴포넌트 및 서비스 테스트

  • 같은 VPC에 부하 테스트 구성
  • JMeter를 이용한 DB 성능 테스트
  • ORM 부하 확인

7. 각 레이어별 고려사항

네트워크 용량 확인
  • 아웃바운드 연결에 예상되는 최대 부하를 처리 가능한지
  • EC2 인스턴스 타입 - Enhanced Networking
  • VPN 네트워크 성능
부하 생성 클라이언트
  • 원하는 부하양을 생성 할 수 있는 충분한 인스턴스 확보
  • 부하 생성 클라이언트 특징 확인 필요
Elastic Load Balancing
  • back-end / Target 인스턴스들이 요구량 증가에 신속하게 대응 가능한지 (Auto Scaling)
  • 급격한 부하 증가 시나리오인 경우, 사전 ELB 확장
  • Keep-Alive 설정을 통한 불필요한 연결 재수립 방지
서버 인스턴스
  • 서버 성능 최적화
  • Open Files Limit
어플리케이션 서버
  • Thread 기반인 경우 Thread Pool 크기가 적당한지
  • Event 기반 비동기 형태의 어플리케이션 서버 사용
어플리케이션

어플리케이션 코드 - Unit 테스트, Lint

  • 잘못된 방식의 프레임워크, API 사용
  • Blocking 코드
  • 불필요한 연산 또는 테스트 코드

어플리케이션 프레임워크

  • 웹 프레임워크나 ORM 라이브러리 오류
데이터베이스
  • CPU 사용률과 응답 시간 확인
  • 설정에 따라 더 요구되는 자원이 있는지 점검
  • 메모리 사용률 확인

8. 부하테스트 시 유용한 팁

  • 가능한 모든 것을 자동화
  • 로그 기록과 확인
  • 적절한 인스턴스의 선택
  • 비용 최소화
  • 다양한 도구와 서비스의 복합적 활용

 

 

 

 

 

LIST
Comments