본문 바로가기

백엔드52

[Backend] RabbitMQ 에러 핸들링 (feat. Retry) 무한 예외 발생MQ를 활용한 기본 발급 로직을 짠 뒤, 실패 테스트를 하던 중에 리스너에서 계속 예외를 던지는 상황을 마주하게 된다.Execution of Rabbit message listener failed. 기본적으로 RabbitMQ에서는 다른 조치가 없으면 리스너에서 예외가 발생하면 다시 큐에 집어넣게 된다.그리곤 무한히 반복하게 되기 때문에 이런 상황을 마주한 것이다.무한 Retry 해결하기이 상황을 해결하는 가장 쉬운 방법은 다음과 같다.1. Requeue 옵션 설정하기다음과 같이 yml 설정하면 가장 간단하게 Requeue 옵션을 제어할 수 있다.# application.ymlspring: rabbitmq: listener: simple: # exchange 옵션에 따라 다르.. 2024. 7. 14.
[이모저모] 리팩토링 고민 Fixtures현재 각 도메인 별로 Fixture가 존재한다.생성을 담당하는 Fixture는 도메인 별로 존재하지만, Fixture에서 Persist까지 담당할 필요는 없기 때문에 Fixtures를 만들었다.일종의 companion object이자 퍼사드 객체이다. 현재 기본적인 테스트 설정은 java-test-fixture 플러그인을 사용하는 common 모듈에서 담당하고 있다.앞서 언급한 Fixture들은 도메인(모듈)을 알아야 하기 때문에 common 모듈에선 해당 정보까지는 모두 알 필요가 없다고 판단했다.따라서, fixture들을 모든 의존성을 알고있는 client-api 모듈에 배치시켰다. 이게 하나의 문제를 이어지는데 바로 admin-api 모듈은 해당 fixture들을 모른다는 점이다.따라.. 2024. 6. 4.
TIL : gradle-build-action (짧) 🏃‍♂️ Github Action 이번에 CI를 작성하면서 시간이 생각보다 더 걸려서 gradle을 캐싱해야 하는 일이 생겼다. 처음에는 "CI를 굳이 어렵게 가야하나? 적당히 긁어와서 쓰자"라는 생각으로 다음 코드를 붙여서 사용했다. - name: Gradle Caching uses: actions/cache@v3 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- 근데 뭔가 시간적으로 개선이 안되는 것 같아서 "다른 방법이 없을.. 2023. 10. 27.
[Java] Jasypt 알아보기 🙋 들어가며 프로젝트를 진행할 때 보안에 예민해서 노출시키지 않는 값들이 있습니다. 여러 방법으로 노출시키지 않는 방법이 있지만 그중에 Jasypt라는 라이브러리가 존재합니다. 오늘은 어떻게 사용하는지 가볍게 알아보겠습니다. 😋 🔐 Jasypt란? Jasypt는 Java Simplified Encryption의 약자입니다. 공식 문서에 따르면 다음과 같이 설명되어 있습니다. Java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography wor.. 2023. 10. 21.
[Java] Fixture Monkey 사용해보기 🙋 들어가며 누구나 한 번쯤 테스트 코드의 생산성을 고민해 보았을 거라고 생각합니다. 저는 테스트용 데이터를 만드는데 시간이 꽤 걸려서 Object Mother 패턴을 도입하고, Fixture(테스트용 정적 객체)를 사용해서 이런 시간을 줄여보기도 했습니다. 저와 같은 고민을 하신 분들이라면 들어봤을 법한 라이브러리를 소개하겠습니다. 공식 문서는 모두 영어로 되어있어 번역하기 귀찮으신 분들을 위해서 사용에 필요한 내용만 정리해 보겠습니다. 🙉 Fixture Monkey Fixture Monkey는 임의의 테스트 객체를 생성하는 라이브러리입니다. 테스트 코드의 생산성과 간결함을 위해서 네이버에서 만든 PBT 도구이며 java와 kotlin을 지원합니다. 💡 PBT(Property Based Testing).. 2023. 10. 17.
[Security] 시큐리티 파헤치기 (4) : 인증이란? (feat. Authentication) 🙋 들어가며 이번 글부터 시큐리티의 인증 시리즈를 다뤄볼 생각입니다. 인증에 대해서 무엇인지 알아보면서 인증 시리즈를 시작해 보겠습니다. 또한, 어떤 객체에 인증 정보를 담을지까지 알아보겠습니다. 🙆‍♂️ 인증(Authentication)? 인증이란, 어떤 사용자가 접근하고 있는지 확인하는 절차입니다. 보안에 민감한 정보를 다룬다면 당연히 누가 사용하는지 확인하고 접근시켜야 합니다. 자세하게 어떻게 동작하는지는 몰라도, 인증하려면 정보를 담아줄 그릇이 필요할 것 같습니다. 바로 이 그릇이 Authentication 객체입니다. 🪙 Authentication 인터페이스 Authentication 인터페이스는 인증 정보를 담는 하나의 토큰입니다. 실제 코드는 다음과 같이 구현되어 있습니다. public in.. 2023. 8. 17.