선착순 쿠폰 발급 시스템 개선과 정합성 문제 해결 (Redis·Kafka)
·
서버
🔷 들어가며안녕하세요. 이번 글에서는 B2B 쿠폰 솔루션인 굿폰 서비스를 개발하며 겪었던 선착순 쿠폰 발급의 성능 개선 과정과, 그로 인해 발생한 데이터 정합성 문제를 해결한 경험을 공유하려 합니다. 굿폰은 커머스 서비스를 운영하는 고객사가 자체 개발 없이도 손쉽게 쿠폰 및 프로모션 기능을 도입할 수 있도록 돕는 서비스입니다. 시스템은 크게 관리자용 Dashboard와 고객사 커머스 서비스 서버와 연동되는 Partner OpenAPI로 구성됩니다.Dashboard: 고객사 관리자가 계정과 상점을 생성하고, 쿠폰 템플릿 발행 및 관리하는 시스템입니다. 사용자별/주문별 쿠폰 내역을 조회하여 효율적인 운영을 지원합니다.Partner OpenAPI: 고객사의 커머스 서비스와 직접 연동되는 API 서버입니다. ..
Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 4편: 설정, 사용, Fallback
·
서버
※ 시리즈 글Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 1편: 이해와 설계Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 2편: 상태 머신, 상태 전이Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 3편: 슬라이딩 윈도우Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 4편: 설정, 사용, Fallback (현재 글)🔷 들어가며이번 글에서는 직접 구현한 CircuitBreaker를 Spring 환경에서 편리하게 사용할 수 있게 하는 방법을 살펴보겠습니다. 이 글에서 다룰 내용은 다음과 같습니다.YML 기반으로 CircuitBreaker를 설정하고 생성하는 방..
Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 3편: 슬라이딩 윈도우
·
서버
※ 시리즈 글Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 1편: 이해와 설계Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 2편: 상태 머신, 상태 전이Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 3편: 슬라이딩 윈도우 (현재 글)Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 4편: 설정, 사용, Fallback🔷 들어가며이전 글인 2편: 상태 머신, 상태 전이에서는 CircuitBreaker가 어떤 기준으로 상태를 전이하는지, 그리고 그 기준이 되는 통계를 어떻게 활용하는지를 살펴봤습니다. 하지만 상태 전이는 결국 통계가 어떻게 계산되느냐에 달려 있습..
Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 2편: 상태 머신, 상태 전이
·
서버
※ 시리즈 글Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 1편: 이해와 설계 Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 2편: 상태 머신, 상태 전이 (현재 글)Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 3편: 슬라이딩 윈도우Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 4편: 설정, 사용, Fallback🔷 들어가며저번 글인 1편: 이해와 설계에서는 Resilience4j CircuitBreaker의 기본적인 이해와 구조에 대해서 살펴보았습니다. CircuitBreaker는 3가지 핵심적인 상태인 CLOSED, OPEN, HALF_OPEN을 가..
Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 1편: 이해와 설계
·
서버
※ 시리즈 글Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 1편: 이해와 설계 (현재 글)Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 2편: 상태 머신, 상태 전이Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 3편: 슬라이딩 윈도우Resilience4j CircuitBreaker, 직접 구현하면서 이해해보자! - 4편: 설정, 사용, Fallback🔷 들어가며외부 API를 호출하는 서비스에는 생각보다 쉽게 문제가 발생합니다. 평소에는 빠르게 응답하던 외부 API가 갑자기 느려지거나, 일시적으로 장애가 나면 어떻게 될까요? 우리 서비스도 그 응답을 기다리느라 처리 속도가 줄어들고, 어느 순간..
Redis 분산락, 직접 구현하면서 이해해보자! - 2편: Pub/Sub 방식
·
서버
❇️ 들어가며안녕하세요! 저번 글에서는 Spin Lock 방식의 분산락을 구현해 봤습니다. 이번 글에서는 Spin Lock 방식의 단점들을 보완한 Pub/Sub 방식을 구현해 보겠습니다. 이어지는 글이므로 1편: Spin Lock 방식을 먼저 읽어주시면 감사하겠습니다. 글에서 설명할 코드는 Spring, Kotlin, Spring Data Redis로 작성되어 있습니다. 테스트 코드는 Testcontainers를 사용하기 때문에 Docker를 실행하고 테스트해 주시길 바랍니다. 전체 코드는 다음의 링크를 확인해 주세요. spring-lab/distributed-lock-impl at main · alstn113/spring-labSpring에 대한 다양한 실험. Contribute to alstn113..