HTTP 200 OK

Memento mori & Carpe diem

MSA 2

DLQ 적용기

Dead Letter Queue (DLQ)란 무엇인가?DLQ는 정상적으로 처리되지 못한 메시지들을 저장하는 특별한 큐입니다.(카프카에서는 단순한 토픽입니다) DLQ의 본질은 특정 횟수 이상의 재시도 후에도 메시지 처리가 실패하거나 복구할 수 없는 오류가 발생했을 때 해당 메시지를 DLQ로 이동시켜 시스템이 계속 정상적으로 작동하면서 메시지를 손실하지 않고, 추후에 메시지를 검토하거나 재처리할 수 있도록 보장하는 방법입니다. DLQ가 필요한 이유 기존에는 isPublish라는 컬럼을 이벤트 소싱 패턴에 적용시켜놔서 이벤트 발송 실패시 시스템 내부적으로 처리하고 있었습니다. 처리량과 실패율이 낮아 별도의 DLQ가 필요없어보였지만 솔루션 연동과 고객사들이 증가함에 따라 미리 예방하는 차원에서 현재 시점에서 미..

Spring 2025.01.18

MSA 환경에서의 @JsonProperty 활용

데이터 필드 불일치 문제필자는 MSA 환경에서 여러 서비스 간에 데이터를 주고받고 데이터 필드명을 일치시킬 때 @JsonProperty를 사용하던 중 이슈가 발생했습니다. 바로 A서버에서 매핑한 데이터를 B서버에서 받지 못하는 상황이였습니다. 많은 분들이 @JsonProperty를 사용해보셨을 것 같고 저 또한 유용하게 사용하고 있었지만 동일한 JSON 객체를 2개 이상의 서버에서 연동시키며 사용해봤던 경험은 없었기에 이슈에 대한 해결방안을 공유하고자 글을 작성했습니다. @JsonProperty의 사용과 제한사항@JsonProperty는 내부 서버 통신에서만 매핑을 수행합니다. 즉 해당 서버 내부에서만 필드명이 변환되고 외부 서버와 통신할 때는 적용되지 않습니다. 앞선 이유 때문에 외부와 연동된 서버에서..

Spring 2024.10.13