비즈니스 문제를 기술로 해결하고 시스템의 안정성과 효율을 끌어올린 5년간의 핵심 실무 경험을 정리했습니다. 단순 기능 구현을 넘어 **'왜 이 기술을 선택했는가'**와 **'예외 상황을 어떻게 통제했는가'**에 집중합니다.


1. 다단계 캐시 클라이언트 설계 및 단독 운영 (SK스토아)

기간 2025.04 ~ 2025.09 (이후 단독 운영 ~ 현재)

기술 스택 Spring Boot · Java 21 · Redis (Lettuce) · Caffeine · CompletableFuture

1) 배경 및 문제 상황

2) 기술적 의사결정

<aside>

왜 캐시 전용 서버(redis-api)를 분리했는가

레거시 본체(Java 8)에서는 Redis 8.x와 Lettuce 최신 기능을 온전히 쓸 수 없었습니다. 그래서 Redis 접근을 Spring Boot · Java 21 기반의 독립 캐시 서버로 격리하고, 본체는 이 서버를 호출하는 구조를 택했습니다.

(캐시 서버 자체 구현은 15년차 선임이 주도했고, 저는 이 서버를 호출하는 클라이언트 레이어 전체를 전담했습니다. 설계 과정의 90% 이상을 함께 공유하며 진행했습니다.)

</aside>

3) 직접 설계·구현한 부분

4) 결과

다단계 캐시 요청 흐름

flowchart TD
    U["사용자 요청"] --> MF["mobile-front"]
    MF -->|"비개인화 캐시 (예: GNB)"| HIT{"캐시 hit?"}
    HIT -->|"hit"| RESP["즉시 응답 (mapi 미호출)"]
    HIT -->|"miss"| MA["mobile-api"]
    MF -->|"개인화 포함 (예: 상품 상세)"| MA
    MA --> RAPI["redis-api 캐시 서버"]
    RAPI --> RDS[("Redis")]
    MA --> DB[("DB: 개인화·실시간")]
    MA --> MERGE["캐시 + DB 조합"]
    MERGE --> MF