spring boot4 [Kafka] 하나의 토픽에 두개의 컨슈머가 구독하면 안되나요? 들어가며개인 프로젝트에서 대규모 데이터 처리를 위해 카프카를 도입했다. MSA를 사용해 서비스를 분리했기 때문에 주문이 들어오면 각 서비스 간에 이벤트를 주고 받게 된다. 주문 취소 기능을 구현하다가 하나의 토픽에 대해 두개의 컨슈머가 구독하여 각 서비스에서 행동을 하도록 구현을 했다. 그러나 하나의 서비스에서만 이벤트를 받아서 동작하였다. 이 문제를 분석하고 해결한 방식에 대해 작성할 예정이다. 문제 발생발생한 문제에 대해서는 이전에 설명한 것과 같다. 다시 간단하게 요약하자면 하나의 토픽을 두개의 컨슈머가 구독한 상황에서 하나의 컨슈머만 이벤트를 처리하고 있다는 것이다.처음에는 파티션이 1개여서 발생한 문제라고 추측을 했다. 그래서 파티션을 2개로 늘려서 다시 시도해봤지만 실패했다.이때 실패한 이유는.. Tech/Kafka 2024. 5. 16. [Caching] 상품 주문 성능 개선 들어가며현재 진행하고 있는 프로젝트에서 레디스 캐시를 사용해 재고 관리를 하고 있다. 처음에는 write-throgh 전략을 사용했다. 데이터 정합성을 맞추는 게 가장 중요하다고 생각했다. 사용자에게 재고를 보여줄 때 정확해야하기 때문이다. 그러나 데이터베이스에 자주 접근하기 때문에 성능도 조금 떨어질 수 있다는 점이 trade-off로 존재한다.그래서 우선 가장 먼저 사용했던 전략에 대해 테스트를 수행했다. 그 다음에는 write-back 전략을 사용해서 테스트를 해보았다. 사실 write-through 방식을 사용하면서 캐시의 확실한 장점을 제대로 사용하지 못한다는 느낌이 들었다. 계속 데이터베이스에 들어갔다 나올거면 간김에 재고도 감소시키면 될텐데... 라는 생각이 들었다.캐시의 장점을 좀 더 활용.. CS/DB 2024. 5. 11. Spring으로 게시판 만들기(1) : 개요 현재 진행하고 있는 프로젝트에서 분실물 찾기 게시판을 담당하여 구현하고 있다. 어떻게 보면 CRUD밖에 없어서 시시하다고 생각할 수 있겠지만 기본은 언제나 중요하다고 하니까. 스스로 기본기가 부족하다고 느꼈고 차근차근 다시 쌓아볼 예정이다. 아직 프로젝트를 완성하진 못했지만 지금까지 구현한 기능에 대해 정리하고, 고민했던 거나 궁금했던 걸 기록해보기 위한 목적으로 작성하게 되었다 ꒰⑅◡̎ ꒱𓈒𓏸 데이터베이스 우선 데이터베이스 설계부터 살펴보면, LostFoundBoard: 분실물 찾기 게시판 LostFoundBoardImage: 분실물 찾기 게시판 이미지 Comment: 분실물 찾기 게시판 댓글 (현재 고민하고 있는 게 초기에는 불필요한 관계라고 판단하여 Comment에서 Member 연관관계를 맺지 않.. Tech/Spring 2024. 2. 22. 스프링 AOP - this VS target this: 스프링 빈 객체(스프링 AOP 프록시)를 대상으로 하는 조인 포인트 target: Target 객체(스프링 AOP 프록시가 가르키는 실제 대상)를 대상으로 하는 조인 포인트 둘 다 적용 타입 하나를 정확하게 지정해야 한다. 같은 패턴 사용 불가 부모 타입 허용 this vs target 단순히 타입 하나를 정하면 되는데, this와 target은 어떤 차이가 있을까? 스프링에서 AOP 적용하면 실제 target 객체 대신 프록시 객체가 스프링 빈으로 등록된다. this는 스프링 빈으로 등록되어있는 프록시 객체를 대상으로 포인트컷을 매칭한다. target은 실제 target 객체를 대상으로 포인트컷을 매칭한다. 프록시 생성 방식에 따른 차이 스프링은 프록시를 생성할 때 JDK 동적 프록시와 CG.. Tech/Spring 2023. 10. 27. 이전 1 다음 728x90 반응형