[kafka+redisson] 올리브영의 재고관리시스템 분석
·
Kafka
2025.03.18 - [Kafka] - [kafka+redisson] 올리브영의 재고관리시스템 분석 1편 [kafka+redisson] 올리브영의 재고관리시스템 분석 1편올리브영 재고 시스템 분석튜터님에게 발표한 내용을 기반으로 글을 작성하려고 한다. 위 그림은 레거시 서버에서의 올리브영이 겪고 있는 문제이다. 레거시 모놀리딕 서버에 여러 서버가 접근sunro1994.tistory.com  이전 글에 이어 이번에는 Kafka를 활용한 물류 시스템 재고 처리에 대해서 다뤄보려고 한다.Kafka 도입 이유대표적인 메세지 큐는 Kafka, RabbitMQ, Redis Pub/Sub 정도로 알고 있다. 왜 물류 시스템에는 Kafka를 도입했을까? 트래픽 처리Kafka는 RabbitMQ보다 더 많은 트래픽을 처..
[Redis/ Caching ] Spring에서 Cache를 구현하는 방식
·
Redis
Redis 특징Key-Value 방식으로 저장된다.컬렉션을 지원해서 다양한 타입으로 저장 가능하다.Pub/Sub 기능을 지원한다. 이 방식은 채팅이나 이벤트 소싱 방식에서 사용할 수 있다.디스크 저장이 가능하다. 메모리에 데이터를 저장하여 휘발성메모리라고 하지만 AOF/RDB 방식을 사용해서 영구적인 저장이 가능하다. 하지만 성능적인 측면에서 저하된다거나 중간에 데이터가 유실될 수도 있다는 단점이 있다.복제가 가능하다. Master/Slave 구조를 지원한다. 또한 샤딩을 사용해서 수평적인 확장이 가능하다.메모리를 통해 데이터를 조회하기 때문에 빠른 속도로 데이터를 처리한다.Redis의 타입 정리Redis 기본 개념, 자료구조Redis는 가장 자주 기본적으로 사용하는 구조는 다음과 같다. 각 타입의 특성..
[Redis] 레디스의 읽기/쓰기 전략
·
Redis/Redis 읽기쓰기 전략
[필요성]레디스를 사용하기 위해서는 왜 이런 전략이 필요할까?데이터의 일관성이 필요하기 때문이다.아래처럼 어떠한 데이터를 가져올 때 빈번하게 가져와야 하는 데이터는 캐시 메모리에 저장하여 더 빠른 처리가 가능하다.만약 200을 가진 주소의 값을 300으로 바꿔야 한다면 어디부터 수정하고 어떤 방식으로 수정해야 할까?메모리만 200을 300으로 바꾼다면 일관성이 깨지기 때문에 두 값을 모두 변경해야 한다는 사실은 자연스럽게 들 것이다. 이때 어떤 방법으로 데이터를 읽고 써야 하는지 그 효율을 위한 전략에 대해서 알아보고자 한다.[캐시 히트/캐시 미스]우선 전략을 세우기 전에 이러한 개념을 알고 가야 한다.캐시 히트란 캐시 스토어(redis)에 데이터가 있을 경우 바로 가져오며 매우 빠른 속도를 보인다.캐시..
Redis Pub/Sub을 활용한 채팅 구현의 여정 - 개념편
·
Redis/Redis 채팅
수많은 우여곡절 끝에 배포된 서버에 채팅 기능을 적용하게 되었다!간단히 말하자면 원래 담당했던 백엔드 팀원이 던져놓은 빅 똥을 치우게 되었다.내 프로젝트의 스택은 아래와 같다.Java 17 / Spring 3.x / JPA / Redis / Spring Security / JWT / OAuth / Websocket / MySQL / Firebase그리고 처음 팀원이 던져놨던 채팅 구현을 위한 기능은 Kafka + Socket.io 였다. 내가 알기로 Kafka는 MSA구조에서 그룹으로 묶어 메세지를 전달하는 메세지 큐 방식에 적합한 절대 가볍지 않은 스펙의 프레임워크였으며, Socket.io 또한 Spring으로 만든 프로젝트가 아닌 별도로 서버가 생성되는 과정을 요구하는 방식이였으나 팀원을 믿고 기다렸..