전체 글119 SpringKafka Consumer 설정값으로 요리조리 테스트 해보기 SpringKafka Consumer 설정값으로 요리저리 놀아보았습니다. 해당 포스트에서는 그 과정을 전시합니다. 키워드는 두 가지 입니다. AckMode Concurrency 주로 쓰이는 kafka 설정값을 나열해보았습니다. 여기서 눈여겨봤던 것이 ContainerProperties 의 setAckMode 입니다. 그리고 하나는 acknowledgement 입니다. 이 둘은 연관이 있습니다. 어떤 연관을 가지고 있는지, 각각은 어떻게 가져갈 수 있는지 확인해보겠습니다. 일단 ContainerProperties 의 setAckMode는 메세지를 소비할 때 acknowledgement 모드를 설정하는데 사용됩니다. acknowledgement 는 메세지가 성공적으로 처리되었음을 브로커에게 알리는 역할.. 2024. 8. 6. Commit 실패된 메세지 Producer 가 책임질래 Consumer 가 책임질래 만약 @TransactionalEventListener 가 없다면 어떻게 될까. 바로 떠오르는 생각은 컨슈머에서 대응을 해야될 것 같았습니다. 해당 포스팅은 세계에 @TransactionalEventListener 가 없다는 가정하에 굳이굳이 컨슈머에서 그 영향을 대응하는 방법을 구현해보는 과정을 담았습니다. 저는 카프카를 잘 몰라서, 일단 Kafka Producer 의 기본 동작 방식을 차근차근 따라가보면서 시작해보았습니다. 해당 문서는 공식문서 를 기반으로 따라가보았습니다. 테스트는 testContainer 를 이용해서 테스트 했지만 @EmbeddedKafka 를 이용하는 방법도 있습니다. testContainer 를 이용한 테스트를 참조 하고 싶다면 아래를 참조하세요!더보기package com... 2024. 7. 27. 🥤 코카콜라 맛있다 DB Lock 과 Redis Lock 중에 뭐가 더 좋을까요 알아맞혀보세요 with JPA 동시성 접근 제어를 위해 DataBase 나 Redis Lock를 이용하는데요. 두 가지 선택지를 직접 구현해보고 각각의 동작 원리를 이해해보는 시간을 가져보았습니다. DB lock 과 Redis lock 의 트레이드오프 지점은 다음과 같이 거론되고 있습니다. DataBase Lock를 이용하면 추가적인 인프라 구성 없이 동시성 문제를 해결할 수 있다. 하지만 Lock 획득을 위해 대기하는 Connection 이 증가할 수 있고, 이건 높은 트래픽 상황에서 성능 저하로 이어지는 포인트다.Redis를 이용한 Distributed Lock은 DataBase Connection 증가를 방지할 수 있지만, 별도의 관리가 필요하다. Redis 관리에는 메모리 최적화, 장애 복구, 데이터 일관성 유지 등의 과제.. 2024. 6. 30. 동시성과 gap-lock 동시성 관련해서 이런 이슈를 겪은 적이 있습니다. 해당 포스팅에서 해결 방법을 제시했고 실제로 그렇게 해결을 하였지만, 다른 해결 방법은 또 없을지 고민하는 시간이 길었습니다. 일단 해결 방법을 찾기 위해 동시성과 Lock 에 대해 정리해보려고 합니다. 다음과 같은 목록을 하나씩 짚어나가보겠습니다.2PLrecord-lock 과 gap-lockgap-lock 의 존재이유데드락을 해결하기 위한 방법gap-lock 최소화하면서 동시성 향상시키기 2PL2단계 잠금 프로토콜은 하나의 데이터에 대한 동시 접근을 차단하여 직렬화를 보장하는 DBMS 의 동시성 제어 방법입니다. 트랜잭션 도중에 락을 걸어서 데이터 접근 권한을 선점하는 방식인데요. 각 트랜잭션이 락 획득과 락 해제, 두 단계로 진행해서 2 Phase L.. 2024. 5. 2. 성능과 일관성을 무게추에 달아보자 On Redis ! redis 는 동작이 매우 빠릅니다. replica 와 함께 동작하는 경우에도 그렇습니다. redis 는 왜 빠른가?해당 포스팅에서는 이 궁금증을 따라가보는데에서 출발합니다. 그리고 아래 질문들의 답을 찾아가는 과정입니다. redis 는 왜 kafka 처럼 일관성을 위한 지원이 두둑하지않는가?kafka 대용으로 redis 의 PUB/SUB 은 왜 거론되지않는가? redis 의 replica(복제)는 동기인가 비동기인가? 동기 (또는 비동기) 라면 왜 그럴까?동기/비동기의 방식을 사용자가 컨트롤할 수 있을까? 마치 kafka 의 ISR 설정처럼?redis 에서 쓰기 작업을 손실할 수 있는 케이스는 무엇이 있을까?쓰기가 손실되면 어떤 영향이 있을까?그럼 cluster 는 어떻게 동작하고 있을까? 동기일까 비.. 2024. 4. 30. 오늘도 기획자한테 안 된다고 말했다. 웹 구독 시스템, 주문, 배송, 상품까지 단기간에 많은 프로젝트를 달려왔습니다. 9개월 남짓한 시간동안 다음 문장이 현실되었습니다. | 상품에 대한 주문이 발생하면 구독이 이루어지고 실물 상품에 대한 배송이 예약될 수 있다. 이 문장에 관여하는 많은 데이터들이 있습니다. 당장 상품을 주문하고 결제한 유저들이 그 데이터에 관심있겠지만, 개발자도 해당 데이터를 주시합니다. 그리고 또 관심가질 사람들있는데 운영 실무자들이 그 대상입니다. 개발자를 포함한 운영 실무자들이 상품관리, 회원관리, 주문.. 배송 등등을 관리할 수 있도록 서비스 플랫폼 어드민을 만드는 것이 기나긴 프로젝트의 마지막 테스크였습니다. 특히 어드민은 지금 생각해도 아쉬움이 많습니다. 그 과정을 정리해보려고 합니다. 대략적인 어드민 사이드 메.. 2024. 3. 30. 이전 1 2 3 4 5 6 ··· 20 다음