활용 사례

제대로 된 Redis 활용을 위해 아래 포인트를 점검해 보세요.

‘성능’, ‘데이터 무결성’, ‘안정성’에 대한 문제를 Redis로 해결할 수 있어야 합니다.

대규모 트래픽을 고려한 구조 설계

초기에는 단일 인스턴스로도 충분하지만 트래픽 증가 시 부하 집중, 데이터 일관성 문제, 확장성의 한계가 발생할 수 있습니다. 이를 해결하려면 캐싱 전략, 장애 대응(Failover) 등을 고려한 멀티 모듈 설계가 필수적입니다.
중요 포인트
단일 인스턴스의 한계 - 초기에는 단일 서버로 충분할 수 있지만, 트래픽 증가 시 CPU, 메모리, 네트워크 병목이 발생합니다.
성능 및 응답 속도 유지 - 트래픽이 급증해도 일정한 응답 속도를 유지하는 것이 중요합니다.
확장성 향상 - 서비스 성장에 맞춰 무중단 확장이 가능해야 지속적인 운영이 가능합니다.
활용 사례 1
https://github.com/hanghae-skillup/redis_1st/pull/26
Clean Architecture 형식을 사용하게 되면, 계층 간 객체 변환 비용이 발생합니다. 이를 Mapstruct 라이브러리를 사용하여 생산성도 확보해 주신 부분이 인상 깊은 사례 입니다.
필수적인 3개의 모듈을 기반으로 적절히 구성하였습니다.
미리보기
활용 사례 2
헥사고날 아키텍처 기반으로 깔끔하게 모듈이 구성되어 있습니다. 공통 의존성과 각 모듈별 의존성을 필요에 맞게 설정함으로써, 멀티 모듈을 적절히 활용한 케이스입니다.
JPA 의 연관 관계 매핑을 바로 사용하기 보다, 간접 참조를 통해서 N+1 문제를 해결하는 모습이 인상 깊은 사례 입니다.
미리보기

인덱싱/캐싱을 통한 성능 최적화

DB 조회 비용 증가 시 응답 속도가 느려지고 시스템 부하가 급증할 수 있습니다. 결국, 고속 처리와 안정적인 서비스 운영을 위해 인덱싱과 캐싱 최적화는 필수입니다. 인덱싱은 빠른 검색을 보장하고, 캐싱은 DB 부담 없이 즉각적인 응답을 가능하게 합니다.
중요 포인트
적절한 인덱스 설계 - 인덱스는 조회 속도를 높이지만, INSERT/UPDATE 성능에는 부담을 줄 수 있습니다.
캐싱 일관성 - DB와 캐시 데이터가 불일치할 경우, 사용자에게 잘못된 데이터를 제공할 위험이 있습니다.
DB 안정성 확보 - 캐시 만료 시, 동시에 많은 요청이 발생하는 경우 DB가 다운될 위험이 있습니다.
활용 사례 1
성능 개선을 위해 특히 중요한 것은 DB 부하를 줄이는 것입니다. 이를 위해, 인덱스를 적절히 설계하고 로직을 최적화하는 것이 특히 중요합니다.
위 사례는 인덱스와 관련된 핵심 부분인 복합 인덱스를 특히 잘 설정한 사례 입니다. 또한, 문서를 통해 인덱스 적용 전/후 변화를 수치적으로 표현한 것이 눈에 띕니다.
미리보기
활용 사례 2
인덱스 적용 후와 캐싱 적용 후의 성능을 비교 분석해주셔서 성능 개선이 이루어진 부분을 명확하게 인지할 수 있는 사례입니다.
더불어, 조회 관련 테스트 코드에서 엣지 케이스를 포함한 테스트 코드를 함께 작성해 잠재적인 에러의 위험성을 줄였습니다.
미리보기

락을 통한 정합성 이슈 해결

멀티 스레드/멀티 프로세스 환경에서 동시에 같은 데이터를 수정할 때, 데이터 정합성 문제가 발생할 수 있습니다. 각 락의 장점과 특징이 상이하기에, 각 상황에 맞는 락 전략을 적용하고 테스트를 통해 성능과 안정성을 검증하는 것이 필수적 입니다.
중요 포인트
데이터 정합성 - 동시 수정이 발생할 때, 데이터가 유지되는지 검증해야 합니다.
성능 최적화 - 락으로 인해 시스템 처리 속도가 저하되지 않도록 유의해야 합니다.
확장성 - 분산 환경에서는 TTL 설정과 Lau script 기반 락 해제 방식을 적용해야 합니다.
활용 사례 1
주니어 개발자를 벗어나기 위해 중요한 부분 중 하나는 기술의 특징을 이해하고 응용하는 것입니다. 해당 사례는 낙관 락의 특징을 명확하게 이해하고, 그에 맞게 로직을 작성한 점이 눈에 띕니다.
AOP 기반 분산락과 통합 테스트까지 적절히 진행한 사례 입니다.
미리보기
활용 사례 2
요구사항에 맞춰 비관적 락, 낙관적 락, AOP형 분산 락, 함수형 분산 락을 다양하게 구현했으며 각각에 대한 테스트 진행이 돋보이는 사례 입니다.
함수형 락과 AOP형 락의 성능 테스트를 통해 둘의 차이를 실험하고 실제 성능 차이와 그 원인을 이해하려는 접근 방식이 인상적입니다.
미리보기