강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

portal.bj님의 프로필 이미지
portal.bj

작성한 질문수

2026년! 백엔드 개발자를 위한 Redis 실전 가이드: 기초부터 실무 패턴까지

패턴 06: 분산 락(Distributed Lock) - 동시성 문제 해결

Redlock 알고리즘 관해 궁금한게 있습니다!

작성

·

15

0

레디스 서버 한대가 죽더라도 락의 안전성을 보장하기 위해 3~5대의 다른 레디스 서버도 함꼐 있는거라면 이 서비스의 경우에는 레디스의 데이터를 모두 동기화시키는 작업이 매 요청마다 실행되는 건가요?

동기화 시키는 과정에서 TTL 에 작은 차이가 생길 수도 있디고 생각하는데 무시가능한 정도인지요??

동기화를 시키지 않는다면 또 그 여러대의 레디스 서버가 봐라봐야할 한 곳이 다시 존재하게 됨으로써 어짜피 똑같은 건 아닌지.. 궁금합니다!

퀴즈

68%나 틀려요. 한번 도전해보세요!

FastAPI의 `lifespan` 함수가 주로 어떤 목적으로 사용될까요?

API 라우트 정의

비동기 작업 스케줄링

애플리케이션 시작 및 종료 로직 관리

HTTP 요청 유효성 검사

답변 2

0

코딩하는기술사님의 프로필 이미지
코딩하는기술사
지식공유자

안녕하세요. 질문에 답변 드립니다.

1. Redis 노드들끼리 알아서 자동으로 동기화 되는 건 아니고, 클라이언트가 각 노드에 직접 SET NX PX 를 요청합니다. 즉 수동으로 동일한 값을 각 노드에 입력하는 것입니다. (Redis 노드들 끼리는 서로 전혀 모르는 사이입니다.)

2. 이렇게 하면 노드마다 미세한 시간 차가 생기는 게 맞습니다. 그래서 Redlock은 "설정 TTL - 락 획득에 걸린 시간"으로 실제 유효 TTL을 다시 계산하고, 이 유효 TTL안에 작업을 끝내도록 합니다. 만일 유효 TTL이 작업하기에 너무 짧으면 락 획득 자체를 포기합니다.

0

안녕하세요, 인프런 AI 인턴입니다. portal.bj님.

Redlock 알고리즘에 대한 질문을 주셨네요. Redlock은 분산 환경에서 Redis를 사용하여 안전한 락 메커니즘을 제공하기 위한 알고리즘입니다. 이 알고리즘은 단일 Redis 인스턴스의 장애나 지연에 대응하기 위해 여러 Redis 서버(보통 3~5개)를 사용하여 락의 안전성을 증대시킵니다.

Redlock 알고리즘의 기본 작동 원리:

  1. 다중 인스턴스: Redlock은 다수의 Redis 인스턴스에 락을 동시에 설정하여, 하나의 인스턴스가 실패하더라도 다른 인스턴스들이 이를 보완할 수 있도록 설계되었습니다.

  2. 동기화 필요 없음: 이 알고리즘은 각 인스턴스에 락을 독립적으로 설정하기 때문에, 인스턴스 간 데이터 동기화가 필요하지 않습니다. 락의 유일성과 만료 시간이 각 인스턴스에서 독립적으로 관리되므로 동기화로 인한 부하는 없습니다.

  3. TTL의 차이: TTL(만료 시간)이 여러 인스턴스에서 약간 차이 날 수 있지만, 이는 Redlock 알고리즘 설계 시 고려된 바이며, 각 인스턴스에서 대부분의 동시성을 만족시킬 수 있도록 구성되어 있어 실질적으로 큰 문제가 되지 않습니다.

  4. 분산 환경의 장점: 여러 인스턴스에 대한 접근 및 락 설정을 비슷한 시간 내에 완료하는 것이 핵심입니다. 동기화 작업 없이도 TTL 차이는 신뢰할 수 있는 동작을 수행하기에 무시 가능한 수준입니다.

Redlock에 대한 보다 심화된 내용을 다룬 기존의 자료나 논의를 보시려면, 다음의 관련 정보를 참고하시면 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

portal.bj님의 프로필 이미지
portal.bj

작성한 질문수

질문하기