Redisson 분산 락을 이용한 SMS 중복 발송 제한 구현

개요 사용자가 인증 번호 요청 버튼을 여러 번 클릭하거나 악의적인 요청을 보낼 때, 동일한 번호로 짧은 시간 내에 여러 건의 SMS가 발송되는 것을 방지해야 합니다. 이를 위해 Redis 기반의 Redisson 분산 락을 활용하여 1분간 발송을 제한하는 로직을 구성합니다. 의존성 설정 프로젝트의 pom.xml에 분산 락을 위한 Redisson과 알리운(Aliyun) SMS API 라이브러리를 추 ...

7월 31일 18:59에 게시됨

Redis 클러스터 환경에서 CLUSTERDOWN 오류 해결 방법

문제 상황 애플리케이션에서 Redis 클러스터를 사용 중인 환경에서 CLUSTERDOWN The cluster is down라는 오류가 주기적으로 발생합니다. 스택 트레이스는 다음과 같습니다. org.springframework.data.redis.RedisSystemException: 실행 중 오류 발생; 원인: io.lettuce.core.RedisCommandExecutionException: CLUSTERDOWN The cluster is down at org.springframewor ...

7월 28일 09:35에 게시됨

ZooKeeper 분산 락

분산 락 개요 다중 프로세스가 상호 간섭 없이 동작하도록 하기 위해 분산 시스템에서 일관성 유지 기술이 필요합니다. 이 기술의 핵심은 **분산 락**입니다. 분산 락 요구 조건 동시에 하나의 머신의 스레드만 실행 가능 고가용성 및 고성능 획득/해제 재진입 가능 락 만료 처리 기능 비차단 락(락 획득 실패 시 즉시 반환) 분산 락 구현 방식 Memcached: add 명령 ...

7월 28일 03:07에 게시됨

Redis: 주요 개념, 활용 사례 및 메모리 관리 전략

Redis는 고성능의 오픈 소스 인메모리 NoSQL 데이터베이스입니다. C 언어로 개발되었으며, 메모리 기반 동작으로 인해 기존 디스크 기반 데이터베이스보다 훨씬 빠른 데이터 읽기 및 쓰기 속도를 제공합니다. 불필요한 임시 데이터의 저장 및 관리를 피함으로써 애플리케이션의 전반적인 성능을 크게 향상시킬 수 있습니다. 1. Redis 개요 및 특징 ...

7월 27일 05:50에 게시됨

Redis를 이용한 분산 락 구현 전략

단일 애플리케이션에서는 synchronized나 Lock을 사용하여 동기화를 처리할 수 있습니다. synchronized는 클래스 레벨 락(바이트코드 락)을 사용하는 것이 전역적인 유일성을 보장하는 데 유리하며, 객체 락을 사용할 경우 해당 객체가 비즈니스 로직 내에서 고유함을 보장해야 합니다. 하지만 마이크로서비스 아키텍처에서는 각 서비스가 여러 노드에 배포되고, 서로 다 ...

7월 26일 16:17에 게시됨

Django-Q를 활용한 비동기 작업 큐 구축 및 Redis·MongoDB 브로커 설정 가이드

Django-Q는 Django 환경에서 멀티 프로세싱을 지원하는 강력한 분산 작업 큐 라이브러리입니다. 복잡한 비동기 작업이나 주기적으로 실행해야 하는 스케줄링 태스크를 처리할 때 유용하며, 다양한 메시지 브로커와 원활하게 통합됩니다. 이 가이드에서는 Django-Q의 설치 방법과 주요 메시지 브로커별 설정 구성에 대해 자세히 설명합니다. Django-Q의 주요 특징 ...

7월 26일 15:49에 게시됨

Spring Boot Redis 통합 가이드: 설정, 직렬화 및 활용

1. 개요 1.1 Spring Data Redis Spring Boot에서 데이터 작업은 Spring Data를 통해 처리됩니다. Spring Data는 Redis, MongoDB, JPA 등 다양한 데이터 소스와의 통합을 지원하며, Spring Data Redis는 Redis와의 연동을 담당합니다. 1.2 Lettuce vs Jedis Spring Boot 2.x 버전부터 기존의 Jedis가 Lettuce로 대체되었습니다. Jedis: 직접 연결 방식을 사용하며, 멀티 ...

7월 24일 20:19에 게시됨

JAVA 기반 대리운전 미니프로그램 아키텍처와 uniapp 실전 코드

시스템 구성 개요 대리운전 서비스는 사용자 앱과 관리 백엔드로 구성되며, 프론트엔드는 uniapp 기반의 크로스플랫폼 앱을, 서버는 JAVA 생태계로 구축한다. 앱 핵심 기능 계정 체계: SMS 인증, 위채 오픈ID 연동 GIS 기능: 실시간 위치 수집, 목적지 검색 예약 흐름: 요청 → 배차 → 완료 정산 결제 연동: 위채/알리페이 결제 만족도 평가: 별점 및 코멘트 서버 기 ...

7월 24일 03:31에 게시됨

Docker를 활용한 Java 개발 환경 필수 소프트웨어 설치 가이드

본 문서는 Java 개발 환경 구축에 필요한 다양한 소프트웨어를 Docker 컨테이너를 사용하여 설치하는 방법을 안내합니다. 1. JDK 설치 AdoptOpenJDK 8 버전을 Docker 이미지로 설치합니다. docker pull adoptopenjdk/openjdk8 docker run -di --name=jdk1.8 adoptopenjdk/openjdk8 docker exec -it jdk1.8 /bin/bash 2. MySQL 설치 MySQL 8.0 버전을 설치하고, ...

7월 23일 22:00에 게시됨

SpringBoot, MyBatis-Plus, UniApp 기반 무인 바둑/카드방 관리 시스템 아키텍처 및 구현

무인 바둑/카드방 관리 시스템 개요 및 기술 과제 최근 무인 운영 방식의 바둑/카드방은 자동화된 예약, 원격 출입 통제, 정산 시스템을 통해 운영 효율성을 높이고 사용자 편의를 제공하는 새로운 형태의 오프라인 엔터테인먼트로 자리 잡고 있습니다. 이러한 시스템을 안정적이고 효율적으로 구축하기 위해서는 몇 가지 기술적 도전 과제를 해결해야 합니다. 기기 ...

7월 23일 16:39에 게시됨