아마존 웹 서비스 부하 테스트 입문

철근콘크리트·2021년 1월 14일
0

AWS 부하 테스트

목록 보기
1/1

적절한 부하 테스트를 할 수 있다면 우리의 서비스에 맞는 인프라 구조와 규모를 산정해 운영하면 비용을 절감할 수 있다.
확장성을 가지며 가용성이 높은 시스템을 만들어야 하는 시스템 담당자를 위해 필요한 내용을 "클라우드를 이용한 설계"와 "부하 테스트" 그리고 그에 필요한 사전 지식, 구체적인 방법, 사례 등을 통해 설명하고 있다.


목차

1장 부하 테스트의 문제와 웹 시스템의 실패 사례

2장 웹 시스템 설계 방법.

3장 부하 테스트 기본 지식

4장 부하 테스트 도구

5장 부하 테스트 계획

6장 부하 테스트 준비

7장 부하 테스트 실행1 (테스트 실행과 병목 현상 확인)

8장 부하 테스트 실행2 (원인 분석과 시스템 개선 작업)

9장 부하 테스트 보고서 작성

10장 부하 테스트에 대한 실제 사례

11장 용어 설명

12장 AWS 로드 테스팅




부하 테스트와 PDCA 사이클

PDCA 사이클이라는 것은 Plan- Do - Check - Action을 반복하는 것을 말한다.

  • Plan : 부하 테스트 계획 수립.
  • Do : 부하 테스트 준비와 실행
  • Check : 계획한 목표값과 전제 조건을 만족했는지, 의미 있는 숫자가 나왔는지 확인.
  • Action : 부하 테스트 보고서 작성과 시스템 개선, 목표값과 전제 조건을 검토한 다음 PDCA와 연결.

PDCA를 한 번에 전체적으로 진행하는 것은 많은 작업이 발생하므로 시간과 리소스 낭비가 많아지고 위험성이 높아질 것이다.


대상 독자

  • 안정적인 웹 시스템을 운용해야 하는 분.
  • 현재 웹 시스템 부하로 인해 고민하는 분.
  • 부하 테스트를 처음 시작하려고 하는 분.
  • 부하 테스트를 과거에 몇 번이고 해봤지만, 결과에 자신이 없는 분.
  • 시스템 설계에서 구축까지 한 번 더 공부하고 싶은 분.

🔥 부하 테스트의 문제와 웹 시스템의 실패 사례.

  • 잘못된 개발 일정.
  • 잘못된 테스트 전제 조건.
    (결정된 사항과 시나리오)
  • 잘못된 테스트 준비.
  • 잘못된 테스트 실행.
  • 잘못된 테스트 보고서

" 현재 세상에는 대규모 웹 시스템이 운용되고 있지만, 그 뒤에는 부하 대책에 실패한 시스템이 많이 존재한다. 겉으로는 안정적으로 운용되고 있는 것처럼 보이지만, 사용자 수가 없어서 문제없는 것이지 실제 예상했던 많은 사용자가 요청하게 되면 버티지 못하는 웹 시스템도 있다."




🔥 웹 시스템 설계 방법.

1. 높은 가용성을 가진 시스템 설계 방법.

  • 시스템을 이중화한다.
    • 시스템 이중화라는 것은 시스템의 일부분을 사용할 수 없게 되어도 다른 시스템을 이용하여 서비스를 계속하는 것을 의미한다.
    • 여기서 대체 시스템이 독립된 별도의 시스템이어야 한다는 것이다.
    • 백업한 데이터는 같은 시스템에 저장되어 있어 서버에 장애가 발생하면 원본 데이터도 백업 데이터도 사용할 수 없게 된다.
  • 시스템을 확장한다.

DB 이중화는 기본적으로 어렵다.
DB 이중화를 한 경우 하드웨어뿐만 아니라 데이터베이스 안에 저장된 데이터도 이중화해야만 한다.
1. 여러 대의 DB에 같은 데이터를 저장하고 참고한다.
2. 한쪽의 데이터를 저장하고 자동으로 반대쪽 데이터를 동기화한다. 다운이 발생했을 때 다른 한쪽의 DB를 이용한다.

1의 경우에는 쓰기, 읽기 모두 응답 속도의 저하를 막을 수 없다. 데이터가 맞지 않을 때는 어떻게 복구할지에 대한 문제도 발생한다.
2의 경우에는 다운이 발생했을 때 한쪽을 사용할 수 있게 하는 페일오버(Fail Over) 작업이 어렵진 않지만, 자동으로 데이터 동기화가 어렵다 .Sync 방식은 동기화 중에 처리 지연에 따른 성능 저하가 발생할 수 있으며, Async의 경우에는 DB 간의 데이터 무결성 문제가 발생할 수 있다 .

2. 시스템 확장.

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

확장가능한 시스템을 구축하는 3가지 방법.

1) 스케일 업/ 스케일 다운 한다.

  • 시스템의 성능을 높이기 위해 병목이 되는 부분의 시스템 리소스를 보다 높은 성능으로 변경하는 것을 스케일 업.
  • 반대로 낮은 성능으로 변경하는 것을 슼일 다운
    ex) AWS의 EC2 인스턴스나 RDS 인스턴스의 경우 인스턴스 타입을 변경하는 것이 이에 속한다.

2) 스케일 아웃/ 스케일 인 한다.

  • AWS에서 웹 서비스를 구축할 때 AWS에서 제공하는 로드 밸런서 서비스인 ELB(Elastic Load Balancing)을 이용하여 애플리케이션 서버 대수를 동적으로 늘리고 줄이는 것이 가능하다.

3) 클라우드 사업자가 확장성을 보증하는 서비스를 사용한다.

  • Route 53(DNS 제공 서비스), CloudFront(CDN 제공 서비스), Elastic Load Balancing(로드 밸런서 제공 서비스), S3(스토리지 제공 서비스)



3. 클라우드에서의 시스템 구축.

" 클라우드는 가장 큰 장점은 서버 리소스 추가가 아주 빠르고 서버 리소스 추가 자동화가 가능하다는 것이다. 온프레미스에서는 몇 주에서 몇 개월이 걸렸던 작업이 클라우드에서는 단 몇 분 만에 사용 중인 서버를 복제하여 새로운 서버를 구축할 수 있다.


✔ 클라우드 디자인 패턴을 사용한 고가용성/높은 확장성의 시스템 구축.

- AWS에서 사용 가능한 대표적인 클라우드 디자인 패턴

  • EC3 인스턴스를 이용한 동적 콘텐츠 배포.
  • S3를 이용한 정적 콘텐츠 배포.
  • 동적 콘텐츠와 정적 콘텐츠.
  • 서버리스 아키텍처를 이용한 동적 웹 서비스 구축.
  • RDS를 이용한 RDB 구축.
    • 부하테스트는 가용성과 확장성이 높은 시스템을 구축하기 위한 방법이다.
    • 온프레미스에서 가용성과 확장성이 높은 시스템을 구축하긴 어렵다.
    • 클라우드 디자인 패턴을 활용하면 가용성과 확장성이 높은 시스템을 쉽게 구축할 수 있다.

0개의 댓글