토이 프로젝트

    Kafka offset에 대해서

    모든 소스 코드는 https://github.com/lkimilhol/kotlin-kafka-toy에서 확인 가능합니다! 안녕하세요. 이번에는 Kafka의 offset에 대해서 알아볼까 합니다. Kafka 메시지를 처리하는 도중 예외를 만난다면 어떻게 될지, 그리고 offset 관련 옵션 설정에 따라서 어떻게 변할지 공부해보려고 합니다. 이는 실제 Kafka를 이용하여 실제 서비스를 할 때도 많은 도움이 될 것이라 생각합니다. 1. offset이란 무엇일까? offset이란 무엇일까요? 바로 consumer에서 메시지를 어디까지 읽었는지 저장하는 값 이라고 볼 수 있을거 같네요. 만약 offset=4 인 경우 offset 0, 1, 2, 3은 메시지를 읽은 것으로 생각 할 수 있습니다. 위 그림과 같이 ..

    Kafka 메시지 순서 보장 확인해보기

    모든 소스 코드는 https://github.com/lkimilhol/kotlin-kafka-toy 에서 확인 가능합니다. 오늘의 고민 내용은 카프카를 통하여 메시지를 순서대로 받을 수 있을까 입니다. 사실 이는 가능한데요. 카프카의 파티션을 하나만 사용한다면 어렵지 않게 순서를 보장 할 수 있습니다. 하지만 이는 카프카의 성능을 100% 발휘 할 순 없는 구조라고 생각됩니다. 천천히 고민해 보도록 하겠습니다. 1. 성능을 어떻게 보장할까? 카프카의 파티션과 컨슈머를 생각해보겠습니다. 아래 사진은 파티션 3개가 컨슈머 3개와 1:1로 매핑되어 있는데요. 카프카의 프로듀서(producer)가 키를 지정하여 각 파티션으로 프로듀스 되었고, 컨슈머가 이 토픽을 컨슘하여 동작하는 방식입니다. 저 사진에서 파티션..

    MongoDB를 활용하여 Repository 구현

    모든 소스 코드는 https://github.com/lkimilhol/matchingProject 에서 확인 가능합니다. 안녕하세요. 저번에 MongoDB(이하 몽고) 설치하였고, 계속해서 간단하게 데이터가 들어가는지 정도 확인을 했었는데요. 이번에는 기획 단계를 하나 추가해 볼까 해요. 바로 주문 히스토리를 몽고를 사용하여 쌓도록 하는 것입니다. 다음과 같은 생각으로 이런 기획을 결정하였어요. NOSQL에서 업데이트가 빈번하지 말아야 한다. 히스토리 기록은 계속해서 데이터를 쌓는다. 히스토리 기록을 통해 데이터를 조회하고 이를 가공해서 추후에 지표를 추출 할 수 있다. 이 때 몽고디비가 적절할 것이라고 판단했다. 몽고는 확장에 용이하기에 서비스의 트래픽이 증가하면 이에 대한 관리가 쉬울 것. 위의 내용..

    Spring-data-mongodb + docker 사용해보기

    안녕하세요. 오늘은 토이프로젝트에 몽고 디비(이하 몽고) 설정을 추가해 보려고 합니다. 실무에서 몽고를 사용한 적은 있었는데요. 뭔가 깊게 사용해보지 않았다는 생각이 많았었어요! 이번 기회로 프로젝트에 몽고 의존성을 추가해보고 기획 내용을 추가하여 몽고를 사용 해보도록 하겠습니다. 모든 소스 코드는 https://github.com/lkimilhol/matchingProject 에서 확인 가능 합니다! 1. 도커에 몽고 설치 일단 저는 도커를 이용하려고 해요. docker를 pull 받도록 해보겠습니다. docker pull arm64v8/mongo 잘 추가가 되었네요. 이제 아래 명령어를 사용하여 몽고를 띄워놓겠습니다. docker run -d -p 27017:27017 --name mongo 3941..