inflearn logo
강의

Course

Instructor

Complete in 6 weeks! 4 strategies to differentiate your backend resume - How to stand out among identical resumes

운영환경에 적용해볼 수 없을때...고민입니다 ㅠㅠ

2

HJ

8 asked

0

안녕하세요 딩코님! 좋은 강의 잘 들었습니다.

강의를 듣다가 조언을 구하고 싶은게 있어서 질문 남깁니다.


저는 현재 주니어 개발자로 일으나 부하테스트 같은것을 회사에서 해볼 수 없는 상황이라(운영 인력이 아님...)강의에서 다뤄주신 내용을 실무에 적용해보기가 어려운데요...


그래서 제가 생각해본게 테스트 코드로 만들어서 돌려보면 어떨까 생각했거든요. 예를들어 아래와 같은 메소드를 만들어 놓고, 캐시 전/후를 비교하는 거죠...

long start = System.currentTimeMillis();

service.findSomething(id);

long elapsed = System.currentTimeMillis() - start;
System.out.println(elapsed);


그런데 한가지 고민되는 포인트가, 테스트 코드로 만들어서 돌렸을때 성능 개선을 수치적으로 적기가 좀 애매할것 같다고 생각이 들어서요. 아무래도 JVM이라던지, warmup이라던지 통제할 수 없는 변수가 있다보니까요.


그래서 질문은 아래와 같습니다.

  1. 특정 메소드에 로컬 캐시를 적용하기 전/후 테스트 코드에서 성능을 비교했을때, 1초->1ms로 성능 개선했다. <- 이런 문장이 임팩트가 있을까요? 아님 테스트 코드에서 한건 좀 신뢰성이 떨어질까요? ㅠㅠ

  2. 테스트 코드에서 돌려봤을때 누가봐도 신뢰성있게 만들려면 어떻게(?), 무슨 툴(?)을 써서 하는게 좋을까요? ㅠㅠ

  3. 저 같이 운영 환경에 적용해볼수 없는 개발자에게 조언을 주시면 또 감사하겠습니다!


java spring mysql redis 이력서

Answer 1

0

communityai8509

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

강의 내용을 실무에 바로 적용해보기 어려운 상황에서 고민하고 계신 것 같습니다. 주니어 개발자로서 부하 테스트와 같은 환경을 회사 내에서 실험해보지 못하는 애로사항을 가지고 계시군요. 이럴 때 테스트 코드로 성능 개선 효과를 비교하고자 하는 계획은 굉장히 좋은 접근입니다. 몇 가지 안내드리겠습니다.

1. 성능 개선 임팩트

  • 테스트 코드에서 메소드의 성능을 원시적인 방식으로 비교하는 것은 유용할 수 있습니다. 예를 들어, 1초 -> 1ms로 개선되었다는 문장은 분명히 임팩트가 큽니다. 그러나, 이 수치는 테스트 환경과 실제 환경에서 다르게 나타날 수 있으며, 테스트 코드 기반일 경우 신뢰성을 담보하기 위한 명확한 설명이 필요합니다.

  • 성능 개선의 임팩트가 제대로 드러나도록 하려면, 개선 전후의 환경과 조건이 일관되게 유지되도록 해야 하며, 이 부분을 명확히 설명할 수 있어야 합니다.

2. 신뢰성 있는 테스트 설정

  • JMH(Java Microbenchmark Harness)를 사용하는 것을 추천드립니다. JMH는 자바 프로그래밍 언어에서 미세 성능 분석을 위한 공식적인 툴입니다. 이는 Warmup 단계, 측정 및 측정 결과의 신뢰성있는 분석을 제공합니다.

  • JMH를 통해 설정된 마이크로벤치마크를 작성하여 JVM의 최적화 영향을 최소화하고 성능 개선을 구현해보세요.

3. 운영 환경의 제약 극복

  • 운영 환경에 접근하기 어려운 경우에는 위와 같은 성능 측정 도구를 사용하여 로컬 환경에서라도 최대한 신뢰성 있는 데이터를 수집하시는 것이 좋습니다.

  • 자체 프로젝트나 가상 시나리오를 통해 실제 사용 환경을 모의 시뮬레이션 해보세요. 이때, 가상 시나리오를 설득력 있는 환경으로 설명할 수 있도록 관련 데이터나 가설을 바탕으로 시나리오를 구성하세요.

  • 성능 개선 측정 결과를 단순히 수치로만 표현하기 보다는, 개선 과정에서의 문제와 그에 대한 해결 과정을 중점적으로 설명하는 것이 더 중요합니다.

이와 관련한 구체적인 사례는 다음의 링크를 참조하시기 바랍니다:

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

답을언제쯤받아볼수있나요

0

63

2

프로젝트가 없어요..

0

72

2

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

75

2

Build 관련 문제 (테스트 관련 문제)

0

62

2

인덱스 관련 질문 있습니다.

0

99

2

비관적 락 구현 방식 문의 건

0

107

2

외부 api 처리 방안에 대하여 궁금한 점이 있습니다.

0

112

2

네임드 락 사용 시 커넥션 풀을 분리하는 방법에 대한 질문

0

99

2

이벤트) 백엔드 기술면접 실전문제집

0

120

2

로컬에서 테스트 한 결과를 이력서에 써도 괜찮을까요?

0

155

2

데드락 발생 시, 외래 키를 제거하는 방법 관련 질문

0

105

2

Redis 캐싱을 도입하는데 db조회와 성능이 차이가 거의 없습니다.

0

135

2

k6 부하테스트 중인데 개선 전 성능이 너무 안나와서 고민

0

168

2

강의와 성능수치 비교

0

112

2

13강 강의 뒷부분의 과제 안내부분은 어디있나요?

0

57

2

이벤트 참가자 수 증가 후, save 메서드 호출 코드 질문

0

70

2

[수업 자료 질문] Cache Aside의 특징 문의

0

102

2

[수업자료 문의] RedisTemplate으로 SETNX 시 리턴값 문의

0

97

2

블로그에 학습 내용 정리 포스트를 올려도괜찮나요?

0

127

2

멀티스레드 상황인데 currentParticipants 가 AtomicInteger가 아닌 이유?

0

95

3

클라우드 환경 배포시 부하 테스트 방식에 대하여

0

185

2

k6 dashboad 안나오는 상

0

124

2

2-4 도커 빌드 에러가 계속 납니다.

0

324

2

AWS EC2에 도커 컨테이너가 동작하지 않을 때 확인 해야하는 것

0

125

2