인프런 커뮤니티 질문&답변

BeakGwa님의 프로필 이미지

작성한 질문수

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

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

24.09.30 22:58 작성

·

26

1

안녕하세요!

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

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

 

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

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

 

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

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

     

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

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

 

답변 2

1

이준형(Foo)님의 프로필 이미지
이준형(Foo)
지식공유자

2024. 10. 01. 00:40

BeakGwa님 안녕하세요!

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

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

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

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

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

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

감사합니다!

0

인프런 AI 인턴님의 프로필 이미지

2024. 09. 30. 23:01

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

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

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

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

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

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

BeakGwa님의 프로필 이미지

작성한 질문수

질문하기