개발자

OAuth2 + jwt 환경 부하 테스트 방법에 대한 질문..

2024년 09월 18일조회 97

최근 성능 테스트의 중요성에 대해 알게 되어서 목표 성능치를 두고 부하테스트를 진행해보려는 계획에 있습니다! 테스트 툴로는 nGrinder를 사용할 생각인데요, 문제는 제 서버가 이메일 로그인을 지원하지 않고 oauth2와 jwt를 활용한 인증/인가 방식을 사용하는데 부하테스트 시 가상 유저에게 어떻게 accessToken을 발급해주어야 하는지에 대한 궁금증이 생겼습니다..! 제가 생각해본 방식들은 다음과 같습니다. 1. 실제 유저에 대한 accessToken을 하나 발급해두고 이를 고정값으로 사용한다. - 이 방식은 제일 편하지만 사실상 한명의 유저에 대한 시나리오만 테스트할 수 밖에 없고, 같은 유저에 대한 각종 캐싱된 데이터들로 인해 실제 상황과는 동떨어진 작업이 될 것 같아 채택하지 않았습니다. 2. FakeAuthServer와 같은 가상의 OAuth 서버를 만들어 로그인을 시도한다. - 구현하기는 어려워보이지만 그나마 가장 실제 서비스와 동일한 형태입니다. 하지만, 제가 테스트하려는 시나리오는 여러 요청에 대한 순차적인 테스트가 아닌 하나의 API가 얼마나 많은 부하를 견딜 수 있는지 보기 위한 테스트라서 굳이 로그인 과정을 테스트에 포함시킬 필요는 없어보입니다.. - 사실 하나의 API에 대한 테스트만 진행해도 괜찮은지 몰라서 이 방법을 버리지 못하고 있습니다 3. nGrinder의 테스트 스크립트에서 @BeforeThread에 jwt를 발급받는 로직을 작성해서 테스트 전 미리 토큰을 발급받아 요청한다. - 이 방식은 로그인 과정은 포함되어 있지 않고 이미 토큰을 발급받았다는 가정하에 하나의 API만 테스트하기 가장 적합한 방법이라고 생각이 되었습니다. - 번거롭지만 jwt를 직접 생성해주기 위해 jjwt 라이브러리를 nGrinder에 포함시켜야 될 것 같습니다 - 하지만 이렇게 스크립트에서 토큰을 발급해주는게 맞는지 실무에서도 이런식으로 사용하는 경우가 있는지 궁금합니다.. 처음 부하 테스트를 적용하려고 하는데 oauth2 + jwt로만 구성된 예제가 보이지 않네요 ㅠㅠ 어느 방법이 가장 적절한지 혹은 더 나은 방법이 있는지 조언을 구하고자 질문 남깁니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 0

답변이 없을 때 보이는 아이콘

첫 답변을 기다리고 있어요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 09월 18일

OAuth2와 JWT를 이용한 부하 테스트에 대한 고민이 깊으시군요. 부하테스트는 시스템이 어떤 수준의 부하를 얼마나 오래 견딜 수 있는지 판단하기 위해 이루어져야 하고, 그렇기 때문에 말씀하신 방법들 중 3번째 방법을 추천드립니다. 즉, nGrinder의 테스트 스크립트에서 @BeforeThread에 JWT를 발급받는 로직을 작성해서 테스트 전 미리 토큰을 발급받아 요청하는 것입니다. 1번째 방법은 말씀해주신대로 같은 유저에 대한 캐싱된 데이터들로 인해 실제 상황과 동떨어진 결과를 얻을 수 있습니다. 2번째 방법도 구현이 복잡하고, 로그인 과정까지 포함할 필요가 없다면 굳이 선택하지 않아도 될 것 같습니다. 3번째 방법은 스크립트에서 토큰을 발급하는 것으로 비교적 간단히 구현할 수 있고, 다양한 사용자의 접근을 모사할 수 있다는 장점이 있습니다. 실제로 목표하는 API에 대한 부하 테스트를 위해서는 각기 다른 사용자가 접근하는 것을 시뮬레이션하는게 중요합니다. 실무에서도 이런 방식을 적용하는 경우가 있습니다. 특히 부하테스트 도구 자체에 대한 이해와 그 밖의 상황에 따라 적절한 방법은 달라질 수 있으니, 상황에 맞춰 유연하게 접근하시는 것이 좋습니다. 다만, 로그인 과정 없이 JWT 토큰만으로 API 요청을 하는 것은 실제 서비스에서의 유저 사용 패턴과 다르므로 이 부분은 고려해야 할 사항입니다. 만약 로그인 과정까지 포함된 부하 테스트가 필요하다면 OAuth 서버를 모사하는 방법도 고려해보셔야 합니다. 마지막으로, jjwt 라이브러리를 사용하여 JWT를 생성하는 것도 하나의 방법인데, 이 부분은 개발 환경과 프로젝트 사양 등 여러 요소를 고려하여 결정하기 바랍니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!