본문 바로가기

Programming137

Webflux는 얼마나 빠를까? Spring Mvc Vs. Webflux 성능 비교 테스트 개요 및 설명 최근 개발한 한 도메인 서비스를 이용해 로컬 환경에서의 Webflux와 비교 테스트를 진행해보았다. 테스트 도구는 JMeter를 활용했다. Gatling이 기능이 더 많고 리포트 ui도 좋아서 사용하려고 했는데 Webflux 구현을 스프링부트 3.대와 jdk 17을 사용하였더니 지원을 하지 않아서 JMeter로 했다. Cpu 수치에 대해서는 Spring actuator에서 제공해주는 메트릭을 Prometheus와 Grafana를 이용해 모니터링했다. 테스트는 총 3가지 부하 환경을 구성하여 진행하였다. 노멀한 상황으로 유저 5명 상황 극단적 상황으로 동시 유저 200명 상황 초 극단적 상황으로 동시 유저 10,000명 상황. 테스트의 목적은 논블로킹과 비동기 환경을 제공하는 webflux가.. 2023. 12. 14.
spring 단위 테스트에서 autowired와 mockbean의 차이 (feat. spybean) 단위 테스트를 작성하면서 쓰긴 쓰는데 한참 동안 차이점도 잘 모르고 썼던 것이 바로 @Autowired와 @Mockbean이었다. 둘의 차이점을 정리해보았다. 문제 파악하기 다음과 같은 코드에서 MockBean을 주입하는 것과 Autowired를 주입하는 것의 차이는 무엇일까? @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = TestConfig.class) class GenericServiceFeignSenderTest { @Autowired private GenericServiceFeignSender genericServiceFeignSender; @MockBean private ExternalApiClientV1 externalA.. 2023. 12. 13.
spring mock mvc에서 한 번쯤은 만나는 unnecessary stubbing을 lenient 옵션으로 해결하기 MVC 단위 테스트를 하면서 발생한 "Unnecessary stubbing" 에러를 lenient 옵션을 통해 해결한 경험을 소개한다. 아래 코드는 실제 코드를 조금 각색하고 추상한 코드이다. 에러가 난 상황 에러 메시지 Unnecessary stubbings detected. Clean & maintainable test code requires zero unnecessary code. Following stubbings are unnecessary (click to navigate to relevant line of code): 1. -> at kr.co.....TTLHelperTest.setUp(TTLHelperTest.java:32) 2. -> at kr.co.....TTLHelperTest.se.. 2023. 12. 13.
스프링 캐싱 메커니즘에서 @Cacheable과 @Cacheput 차이점은 ? @Cacheable과 @CachePut은 스프링의 캐싱 메커니즘에서 사용되는 애노테이션인데, 두 애노테이션의 캐싱 동작은 약간 다르다. @Cacheable 목적: 메서드의 실행 결과를 캐시에 저장, 동일한 입력값에 대해 메서드가 다시 호출될 때 캐시된 값을 반환. 동작: 주어진 파라미터로 캐시를 조회하고, 해당 값이 존재하면 메서드를 실행하지 않고 캐시된 값을 반환. 캐시에 값이 없을 경우 메서드를 실행하고 결과를 캐시에 저장한 후 반환. 주로 사용되는 경우: 결과가 변경되지 않고, 계산 비용이 높은 메서드에 사용한다. @CachePut 목적: 메서드의 실행 결과를 캐시에 항상 저장. 이미 캐시된 값이 있다면 덮어쓰기 동작: 메서드를 항상 실행하고 그 결과를 캐시에 저장. 이전에 캐시된 값이 있더라도 덮.. 2023. 12. 13.
인텔리제이에서 이전 화면, 이전 커서 바로가기 (맥에서 사용법) 소개 인텔리제이(IntelliJ) 사용 중 정말 유용한 단축키 하나를 소개합니다. 코딩하다 보면, 방금 전, 혹은 그전전으로 돌아가고 싶을 때가 많은데, 코드가 긴 경우 스크롤을 많이 하면서 시간 낭비하는 경우가 종종 있습니다. 이럴 때 정말 '이전 커서 위치로 돌아가기' 단축키를 사용하면 정말 편리합니다. 몇 초 전에 작업하던 코드 위치까지 마우스 없이 쉽게 찾아갈 수 있어요. 단축키 사용하기 인텔리제이에서 이전 커서 위치로 돌아가려면 command + ] 반대로 뒤로 왔다가 다시 앞으로 가려면 command + [ + [ 🚀👨‍💻👩‍💻 2023. 12. 11.