
분산 환경이란?여러 애플리케이션 서버가 하나의 Redis 서버를 공유하는 환경입니다.분산 캐시 환경을 구축하려면 아래와 같은 고려사항들을 염두하여 구축해야 합니다.문제: 서버 A에서 데이터를 업데이트하고 캐시를 삭제했지만, 서버 B의 캐시는 아직 이전 데이터를 가지고

캐시는 서비스의 속도 개선과 사용자 경험의 향상을 위해선 없어선 안될 존재입니다. 이번 포스팅에선 Cache-Aside 패턴에 대해서 학습해봅니다.

Resilience4j는 회복탄력성 패턴을 통해 장애가 발생해도 서비스가 버티게하는 역할을 합니다.

Resilience4j의 여러 패턴들에 대해서 알아보도록 하겠습니다.이전에는 CircuitBreaker 패턴에 대해 알아보았지요!이번엔 Retry부터 TimeLimiter, RateLimiter 등 다양한 회복 탄력성과 장애 전파 방지 패턴에 대해 학습해봅니다!Retr

항상 주요하게 사용되는 락의 개념들 중 분산락이라는 개념이 있습니다. 오늘은 그 중 분산락에 대해 간략히 알아봅니다.

분산락의 구현 방법론 중 가장 많이 사용되는 Redis를 통해 분산락을 구현하는 방법에 대해 알아보겠습니다. Redis는 기본적으로 인메모리 DB이기 때문에 매우 빠릅니다. 컴퓨터 구조상 멀리에 위치해있는 하드디스크보다 바로 옆에 위치해있고 I/O 비용

이제 실제로 Spring 프로젝트에서 분산락을 구현하는 방법에 대해 스터디한 내용을 정리해보겠습니다.

이번엔 Redis 기반의 Java 분산 객체 및 서비스 제공 라이브러리인 Redisson에 대해서 알아보겠습니다.이 라이브러리는 분산락 이외에도 분산 컬렉션이나 분산 세마포어 등 다양한 기능을 제공합니다.또한 실제 운영 환경에서는 앞서 LockManager를 직접 구현

이번엔 앞서 살펴봤던 분산락 개념을 통합하여 실제 운영 환경에서 바로 사용할 수 있는 시스템을 만들어보도록 하겠습니다.'포인트 시스템'으로 잔액을 조회하고, 충전하고, 차감하고 다른 사용자에게 이체하는 방식의 서비스를 구현해보도록 하겠습니다.프로젝트 구조는 아래와 같습

Redlock은 Redis의 창시자인 Salvatore Sanfilippo가 제안한 분산락 알고리즘입니다. 단일 Redis 인스턴스 환경에서도 장애시 안전하게 동작하도록 설계되어있습니다. 왜 Redlock이 필요한가? 그럼 왜 Redlock이 필요한걸까요? 일반적인

DB를 배우다보면 항상 나오는 문구가 '비관적 락 vs 낙관적 락' 입니다. 락의 개념을 배운 뒤로 비관적과 낙관적 락에 대해 듣게 되는데, 이게 정확히 무엇인지에 대해 정리를 해보면 좋을 것 같다는 생각이 들어 이번 포스팅을 통해 정리를 해볼까 합니다. 앞서 우리가

캐시를 잘 쓰면 우리의 애플리케이션 속도를 기하급수적으로 끌어올릴 수 있고 사용자들로 하여금 긍정적이고 쾌적한 서비스 이용 경험을 선서할 수 있습니다.하지만 캐시가 무조건 만능일까요? 이번엔 캐시 스탬피드가 왜 발생하고 왜 위험한지에 대해서 알아보도록 하겠습니다.일전에
이 문서는 아래에 해당하는 분들을 위한 입문용 교육 자료입니다.트랜잭션, 락, 분산 시스템이라는 단어가 아직 낯선 분Redis 분산락은 들어보았지만 왜 필요한지 잘 모르시는 분SQL의 원자성(atomicity)은 들어보았지만 실제 설계에 어떻게 쓰는지 감이 잘 오지 않

"WebFlux를 도입했는데 오히려 장애가 늘었다"는 이야기를 종종 듣습니다. 그 원인의 상당수는 백프레셔(Backpressure)를 제대로 이해하지 못한 데서 옵니다.리액티브 모델은 스레드 부족 문제를 풀어주지만, 그 대신 생산과 소비의 속도 차이라는 새로운 문제를

코드가 동작은 잘 되는데 읽기는 답답하고, 한 줄 바꾸려고 들어갔다가 다섯 군데를 손대야 했던 경험이 있으실 겁니다. 그게 바로 코드에서 나는 냄새, 코드 스멜(code smell)입니다. 그 냄새를 맡고 구조를 다듬는 작업이 리팩토링(refactoring)이고요.이

AWS Lambda는 서버 관리가 사라진다는 점에서 매력적이지만, 그 대가로 새로운 고민이 생깁니다. 바로 콜드 스타트(cold start) 입니다. 요청이 왔을 때 실행 환경이 살아 있지 않으면, 코드 실행 전에 수백 ms에서 수 초의 지연이 더해집니다.특히 Java