inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴

공통 코드의 단점 해결 방안 2

공통 코드에서 Redis Pub/Sub은 최근 실무에서 쓰이진 않나요?

133

kekim

작성한 질문수 5

0

Redis Pub/Sub 구독을 통해 Redis 갱신 시 Sub로 구독 중인 각 서버에 캐시 무효화 및 강제 갱신 시키는 구조는 잘 안쓰이나요?
이 방법도 네트워크 순단 시 fire and forget, 구현 복잡도가 높음 등의 문제가 있긴한데 실무에서는 Pub/Sub을 잘 안쓰는지 궁금합니다.

sql mysql dbms/rdbms 소프트웨어-설계 SQLD

답변 2

0

김영한

안녕하세요. kekim님

AI 인턴이 잘 답변해주었는데요. 조금 더 보충하자면

이 부분은 실무에서 겪고 있는 상황에 따라 다릅니다.

비즈니스 로직상 정확한 갱신이 너무 중요하다면 Redis Pub/Sub은 고민하신 것 처럼 리스크가 있습니다.

다만 현재 팀에서 Redis를 잘 사용하고 있고, 비즈니스 로직상 만약에 갱신에 일부 실패해도 허용 가능한 범위의 리스크라면 Redis Pub/Sub을 사용해도 괜찮습니다.

감사합니다.

0

인프런 AI 인턴

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

질문해주신 Redis Pub/Sub을 활용한 캐시 무효화 및 강제 갱신 구조에 대해 답변드리겠습니다. Redis Pub/Sub는 실시간으로 데이터가 변경될 때 여러 서버에 신속히 알릴 수 있는 장점이 있어 실무에서 사용되는 기술 중 하나입니다. 그러나 언급하신 것처럼 네트워크 단절 시 구독 메시지를 놓칠 위험이 있고, Pub/Sub 시스템을 구현하고 관리하는 데 있어 고려해야 할 복잡한 부분이 다수 존재합니다.

실무 활용 사례

실제로 Redis Pub/Sub을 사용할지 여부는 사용하는 시스템의 요구사항에 따라 달라질 수 있습니다. 특히, 데이터 일관성과 정합성이 중요한 시스템에서는 Pub/Sub 대신 메시지 대기열(Message Queue)과 같이 메시지 지속성을 보장할 수 있는 다른 방법을 선택하기도 합니다.

  1. 일관성이 중요한 경우: 캐시 무효화 및 데이터 갱신이 실시간으로 이루어져야 하고 데이터 정합성이 중요할 경우, Pub/Sub를 단독으로 사용하지 않거나, 보조적인 다른 시스템과 연계하여 사용하는 경우가 많습니다.

  2. 시스템 설계 고려사항: Pub/Sub는 매우 빠른 데이터 반응과 처리가 중요하지만 일정 수준의 데이터 유실 가능성을 허용할 수 있는 환경에서 유용합니다. 만약 데이터 유실이 허용되지 않는다면 다른 솔루션과의 결합이 필요합니다.

  3. 케이스별로 다른 선택: 경량 메시지 통신이 필요한 경우에는 Pub/Sub이 적합할 수 있지만, 메시지 손실 방지와 같은 기능이 필요하다면 Apache Kafka, RabbitMQ 등의 대안도 고려됩니다.

추가로 유사 질문 URLs:

많은 사용자들이 비슷한 질문을 갖고 있으며, 다음과 같은 게시글에서 유사한 고민을 해결할 수 있는 내용을 확인할 수 있습니다.

이 외에도 추가적인 방법이나 솔루션에 대해 궁금하신 점이 있으면 이어서 질문해 주시기 바랍니다. 곧 지식공유자께서 더 나은 방향으로 답변드릴 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

실제 FK제약조건을 설정하지 않는이유

0

30

2

히스토리 관련 질문

0

57

2

통계 데이터 수정 질문

1

63

2

DELETE -> SELECT 질문 드립니다.

0

48

1

상속 관계 모델링의 적용 기준 질문

0

75

1

TTL 캐싱에 대한 질문

0

78

1

공통 코드 사용시 컬럼 타입 설정

0

83

1

history_creted_at과 valid_from

1

65

2

함수 기반 인덱스 (Function-Based Index)

0

68

1

추후 강의 질문있습니다

0

124

2

실무 통계 질문(고민) 드립니다..!

0

91

2

Json 컬럼의 객체 맵핑

0

64

1

[Deprecated] 오타 제보

0

86

1

오타 제보

0

73

2

category_path 테이블에서 idx_descendant 인덱스를 생성하는 이유가 궁금합니다

0

96

2

물리적으로 외래 키 제약 조건을 설정하지 않을 때

0

97

1

`전체 행 스냅샷 이력 테이블`의 대상 테이블 칼럼 변경

1

84

1

common_code_detail의 code 변경 가능성

1

112

1

[해결책 - 코드값 분리] 중 orders(order_status) - common_code(code) 타입 불일치 제보

0

87

1

이미 문자열 타입인 컬럼을 캐스팅하는 이유

0

106

2

계층 구조 모델링 기타 방법들

0

106

1

섹션 9의 퀴즈가 영어로 출력되요.

0

106

2

섹션 6 SOFT DELETE) UNIQUE 제약 조건 + 가상 컬럼

0

77

1

섹션2 공통 코드) 애플리케이션 ENUM을 API에 그대로 노출한다면?

0

126

1