inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

백엔드 애플리케이션 성능 테스트하기

부하 테스트 진행 중, DB사용과 관련하여 데이터 관리 문의사항

해결된 질문

240

BeakGwa

작성한 질문수 17

1

안녕하세요!

DB가 붙어있는 서버에 post 메서드의 테스트를 진행하고있습니다.

api의 내용은, 데이터를 생성하는 작업을 진행합니다.

 

문제는, 테스트를 진행 후에 테스트를 위한 데이터가 생성되어 이 데이터를 삭제해줘야 하는 부분이 문제가 되고 있습니다.

몇가지 가정을 하면 배포되어있는 서버에 테스트를 진행하는 상황이고, 별도의 테스트용 db는 아직 구성해놓지 않은 상태입니다.

 

  1. 실제 성능 테스트를 진행할 때에는, 테스트용 서버에 배포를 해두고, 테스트용 db를 따로 구성해둔 상태로 진행해야 되는건가요? 이 때 테스트서버의 성능은 배포 서버와 최대한 비슷하게 구성하나요?

  2. 만약 테스트 후 더미데이터를 삭제해야하는 경우가 발생하면 (성능 테스트간 독립성 확보 목적 등), 어떤식으로 롤백을 시켜주는것이 좋을까요?

     

1. 당장 드는 생각은, SSH 접속을 하여 DB의 내용을 정리하는 스크립트를 작성하여 artillery의 after 스크립트에 작성해서 추가해준다.

2. 이런 상황이 발생하지 않도록 애초에 테스트간 영향이 없도록 구성한다.

 

stress-testing artillery

답변 2

1

이준형(Foo)

BeakGwa님 안녕하세요!

질문 주신 내용에 대해 답변드리겠습니다.

성능 테스트를 진행하면서 데이터베이스에 데이터를 생성하는 POST 메서드를 테스트하고 계신데, 테스트로 인해 생성된 데이터의 관리가 고민이 되시는 것 같습니다. Write 연산에 대한 성능 테스트라면 반드시 고려해야 할 중요한 내용입니다.

결론부터 말씀드리자면, 성능 테스트 시 일반적으로 별도의 테스트용 서버와 테스트용 데이터베이스를 구성하여 테스트를 진행하는 것이 권장됩니다. 이때 테스트 서버의 성능은 실제 배포 서버와 최대한 유사하게 구성하여 현실적인 성능 측정이 가능하도록 하는 것이 좋습니다. 보통 이러한 테스트 환경을 "스테이징 환경"이라고 부릅니다. 관련해서는 제가 최근 업로드한 강의에 설명이 간략하게 나와 있으니 참고해보세요~

하지만 여러 가지 이유로 스테이징 환경을 구성할 수 없어서 개발 환경에서 성능 테스트를 진행해야 하는 상황이라면, 기능 테스트를 위한 데이터와 성능 테스트에 사용된 데이터가 섞일 수 있습니다. 이로 인해 성능 테스트에 사용된 데이터를 반드시 제거해야 하는 상황이라면, 말씀하신 것처럼 SSH로 서버에 접속하여 데이터베이스를 정리하는 스크립트를 작성하고, 이를 Artillery의 after 스크립트에 추가하여 자동화하는 것도 하나의 방법입니다. 다만, 성능 테스트에 사용한 데이터는 어떤 식으로든 구분되도록 만들어야 하기 때문에 다소 번거로울 수 있습니다.

질문에 대한 답변이 되었길 바랍니다.

또 다른 궁금한 사항이 있으시면 언제든지 질문 남겨주세요.

감사합니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

BeakGwa님, DB가 연결된 서버에 대한 성능 테스트 시 데이터 관리와 관련된 두 가지 질문을 주셨는데요. 이에 대해 유사한 답변을 포함한 기존 질의응답을 안내해 드리겠습니다.

  1. 실제 성능 테스트를 진행할 때, 테스트용 서버테스트용 DB를 마련하는 것은 일반적인 방법입니다. 이때, 테스트 서버의 성능은 실제 배포 서버와 최대한 유사하게 구성해야 테스트 결과의 신뢰성이 높아집니다. 동일한 인프라 환경에서 테스트를 진행해야 실제 운영 환경에서도 동일한 성능을 기대할 수 있습니다.

  2. 테스트 후 생성된 더미 데이터를 삭제하는 것과 관련해서, 기존의 게시글들을 참고하면 다음과 같은 해결 방법을 제시하고 있습니다:

기존 질문에 대한 답변과 유사한 해결 방법을 적용해서, SSH 접속 후 DB 내용을 정리하는 스크립트를 작성하여 artillery의 after 스크립트에 추가하는 방법을 추천드릴 수 있습니다. 이러한 접근 방법으로 테스트를 독립적으로 유지하며 롤백하는 것이 큰 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

부하테스트 시나리오

0

51

1

Artillery에서 VUSER는 어떻게 측정되는 걸까요?

1

73

2

RPS 개념을 잘모르겠어요

1

175

2

강의자료 질문

1

69

1

Latency에 대한 질문이 있습니다!

0

104

3

질문있습니다!!

1

106

2

테스트 시나리오 작성에 대한 문의

0

240

3

비동기 테스트가 필요한 경우가 따로 있는건지 문의드립니다.

1

124

1

테스트 대상 웹 페이지 비 정상 노출 상태 문의 건

1

148

2

강사님 강의를 듣고 실제 프로젝트에서 제가 만든 API에 대해 성능 테스트를 진행하고 성능 개선을 해봤습니다.

1

166

1

기준이 뭘까요??

1

245

2

성능 병목 지점 확인 관련 질문

1

231

1

외부 api는 어떻게 테스트해야 하나요 ?

1

581

2

http 문제

1

186

3

성능 테스트 스크립트 실행결과에 대해 질문 있습니다.

1

201

2

파라미터 활용하여 테스트 하는 부분 질문 있습니다.

1

177

2

api 요청 횟수와 시나리오 갯수에 대해 질문 있습니다.

1

290

3

시나리오가 여러개면 요청이 분리되는 것 아닌가요?

1

269

4

aws ec2 서버에 /hello컨트롤러를 만들어서 강의와 같은 yml을 실행했더니 아래 그림과 같이 뜨는데 서버 성능을 올려줘야 할까요..?

1

273

1

postman 에서 api 테스트했을 때 응답 레이턴시 차이가 있는 이유

1

1191

2

test-config.yaml

1

288

1

report.html 파일이 404 Not Found 에러가 뜹니다.

2

488

1

로그인 한 유저만 접근 가능한 API도 부하테스트가 필요할까요?

1

548

2

ramp to 를 하는 이유

1

418

1