이력서 기반의 면접 예상질문 자문자답 2
🧠 전반적 기술 및 아키텍처 관련 질문
- MCP 전면 개편 프로젝트에서 Java 21을 선택한 이유는 무엇인가요?
- Virtual Thread, Record 등 어떤 기능을 활용했는지 예시와 함께 설명해주세요.
Spring Boot 프로젝트에서 Package by Component를 선택하신 이유와 장단점을 설명해주세요.
- Layered Architecture와 비교해보세요.
ArchUnit을 사용해 아키텍처를 검증하신 사례를 설명해주세요.
- 어떤 규칙을 정의했고, 실제로 위반된 사례가 있었는지도 궁금합니다.
- Mapstruct를 통한 DTO 매핑을 도입하신 이유는 무엇이며, 수작업 매핑과 비교한 이점은 무엇이었나요?
⚙️ 성능 개선 및 병목 처리 관련 질문
계약 코드 생성 시 시퀀스 테이블 병목을 해결한 방식을 설명해주세요.
- Time-based UUID, Redis Increment, 분산 시퀀스 테이블을 어떤 기준으로 제외하셨나요?
EntityManager.flush()/clear() 호출 주기를 조정해 OOM을 해결하신 경험에 대해 구체적으로 설명해주세요.
- 어떤 기준으로 flush 타이밍을 설정했는지, 성능에 어떤 영향을 주었는지요?
전체 다운로드 요청에 대해 예측 기반 캐싱 로직을 도입하신 전략을 설명해주세요.
- 어떤 조건 조합이 캐시 대상으로 분기되었고, 처리 시간 예측 모델은 어떻게 구성하셨나요?
🗃️ 데이터 처리 및 배치 관련 질문
Spring Batch를 사용한 대용량 엑셀 업로드/다운로드 시 고려한 병렬성과 안정성 확보 전략은 무엇이었나요?
Apache POI Streaming API를 선택한 이유와 실제 적용 후 메모리 사용량 변화에 대해 설명해주세요.
지분율 대량 등록 시 Redis 기반 분산 락을 어떻게 구현하셨나요?
- 락 경합이나 Deadlock을 방지하기 위해 어떤 전략을 사용하셨나요?
🔐 보안, 인증, 로그 관련 질문
@TransactionalEventListener를 통해 외부 API 호출을 트랜잭션 후로 분리하신 구조에 대해 설명해주세요.
- 동기 호출 대비 장점과 주의할 점은 무엇이 있었나요?
Redis를 세션처럼 활용해 인증 토큰을 관리한 구조에서 TTL 갱신이나 세션 고갈 문제는 어떻게 방지하셨나요?
ISMS 인증 대응을 위한 로그 수집 체계 구성에 대해 설명해주세요.
- MDC, Filebeat, Elasticsearch-Kibana를 통한 로그 추적 체계가 어떻게 구성되었는지요?
🧪 테스트 및 품질관리 관련 질문
SonarCloud 정적 분석을 도입하셨다고 했는데, 어떤 위반 규칙을 주로 개선했나요?
JUnit5 기반 테스트를 작성할 때 가장 신경 쓰는 부분은 무엇인가요?
- 단위 테스트와 통합 테스트의 기준은 어떻게 구분하시나요?
🔍 협업 및 커뮤니케이션 관련 질문
MCP 리팩토링에서 프론트엔드와 API 페이로드 재구성 협업 시 가장 큰 난점과 해결 방안은 무엇이었나요?
DDEX 기반 글로벌 유통 채널 연동 시 파트너사와의 협업에서 고려해야 할 기술적 또는 정책적 이슈는 무엇이었나요?
📌 보너스: 블로그 기반 질문
- 블로그에서 다룬 가장 기억에 남는 주제는 무엇인가요? 기술적 관점에서 어떤 교훈을 얻으셨나요?
🔍 꼬리질문
✅ Q1. Java 21을 선택한 이유는 무엇인가요?
예시 답변: Java 21은 LTS(Long-Term Support) 버전으로, 프로젝트 안정성과 성능을 고려하여 선택했습니다. 특히 MCP 개편 프로젝트에서는 Virtual Thread를 일부 도입해 API 서버의 동시 처리량을 향상시켰습니다. 기존 ThreadPool 기반의 구조에서는 컨텍스트 스위칭 비용이 높고, 대기 상태의 스레드가 많아지는 문제가 있었는데, Virtual Thread를 통해 경량화된 처리가 가능했습니다.
꼬리 질문:
- Virtual Thread를 사용했을 때의 모니터링 포인트는 어떻게 달라지나요?
- Virtual Thread와 기존 ThreadPool을 병행해서 사용하는 경우 고려할 점은?
✅ Q2. EntityManager.flush()/clear() 호출 주기 조절로 어떤 효과를 얻었나요?
예시 답변: Spring Batch 기반의 대용량 엑셀 업로드 처리 시, 약 20만 건 이상의 데이터를 처리하면 영속성 컨텍스트에 누적된 엔티티 때문에 Heap이 급격히 증가했습니다. flush()
와 clear()
를 5,000건 단위로 호출하여 영속성 컨텍스트를 정리함으로써, Full GC 발생 빈도와 STW 시간을 현저히 줄였고, 배치 성능이 약 2배 향상되었습니다.
꼬리 질문:
- flush()/clear() 호출 주기를 1,000건/10,000건 등 다른 단위로 설정했을 때 차이가 있었나요?
- 영속성 컨텍스트 외에 다른 OOM 원인을 탐지할 수 있는 방법은?
✅ Q3. 지분율 대량등록 성능 개선에서 Redis 분산락을 도입한 이유는 무엇인가요?
예시 답변: 지분율 등록은 기존 데이터를 삭제하고 새로 등록하는 구조라, 두 작업이 병렬로 실행되면 정합성 문제가 발생할 수 있습니다. 이를 방지하기 위해 Redis의 SETNX 기반 락을 사용하여 작업 순서를 제어했습니다. 또한, 락의 TTL을 설정하고 종료 시점에 명시적으로 삭제함으로써 데드락이나 락 홀딩 이슈를 방지했습니다.
꼬리 질문:
- Redisson, ShedLock 같은 분산 락 도구와의 차이점은 무엇이라고 보시나요?
- 락이 실패했을 때 재시도 전략은 어떻게 구성하셨나요?
✅ Q4. @TransactionalEventListener를 통해 외부 API 호출을 분리한 이유는 무엇인가요?
예시 답변: 외부 시스템(Braze, Mixpanel)과의 API 연동을 트랜잭션 내에서 수행하면, 실패 시 롤백이 불가능하거나 불필요한 재시도 문제로 이어질 수 있습니다. 그래서 AFTER_COMMIT 이벤트 기반으로 트랜잭션 커밋 이후 API를 호출하게 구성하여, 데이터베이스와 외부 호출 간의 결합을 약화시켰고, 롤백 안정성도 확보했습니다.
꼬리 질문:
- 동기 호출 대신 이벤트 기반으로 구성할 때의 장애 처리 전략은?
TransactionalEventListener
와@Async
를 병행할 경우 주의할 점은?
✅ Q5. 레거시 시스템에서 단편적인 API 호출로 인한 오버헤드를 어떻게 개선하셨나요?
예시 답변: MCP의 앨범 상세 화면은 1개 페이지에서 6개 이상의 API가 호출되었고, 각각의 API가 반복적으로 DB 접근을 하여 전체 로딩 속도에 영향을 주고 있었습니다. 이를 기능 단위 API로 통합하고, 도메인 중심의 응답 페이로드로 재구성하여 초기 렌더링 속도를 절반 수준으로 개선했습니다 (5.2s → 2.3s).
꼬리 질문:
- 도메인 중심 페이로드를 설계할 때 기준으로 삼은 원칙은?
- BFF(Backend for Frontend) 패턴 도입도 고려해보셨나요?
🔧 아키텍처 및 설계 관련 질문
기존 MCP 시스템이 JSP 기반에서 API 기반 구조로 전환되면서 어떤 구조적 변화가 있었나요?
- Controller, Service, DTO 간 계층 분리 전략은 어떻게 설계했는가?
Swagger 기반 API 명세 관리를 도입한 이유와 실제 도입 후 효과는 무엇이었나요?
도메인 중심 서비스 계층을 구성하면서 고려한 기준과 실제 적용된 설계 사례를 설명해주세요.
- ex. 트랜잭션 분리 기준, 도메인 서비스 vs 애플리케이션 서비스 구분
📊 데이터 처리 및 성능 최적화 질문
음원 유통 시스템에서 DDEX 기반 자동 전송 기능을 구현하셨는데, DDEX 표준을 다룰 때의 기술적 어려움은 무엇이었나요?
엑셀 다운로드를 일배치로 처리한 구조에서, 사용자의 UX를 해치지 않기 위해 고려한 전략은 무엇이었나요?
FastExcel을 사용한 이유는 무엇이며, 기존 Apache POI 대비 어떤 장점을 경험하셨나요?
QueryDSL을 사용해 복잡한 조회 조건을 구현할 때, 어떤 방식으로 동적 쿼리를 안전하게 구성하셨나요?
🛡️ 보안 및 감사 대응 관련 질문
ISMS 인증 대응을 위한 감사 로그 구조를 설계하면서 가장 신경 쓴 부분은 무엇인가요?
- 예: 메뉴 기능 식별자, 사용자 식별, MDC 사용 등
Spring Security + LDAP 연동 구조에서 사용자 인증 시 고려했던 주요 보안 포인트는 무엇이었나요?
Redis에 저장된 인증 토큰이 악의적으로 탈취되었을 때를 대비한 보완책은 있었나요?
⚒️ 배치, 비동기 처리, 운영 질문
Spring Batch에서 Job 분할 전략을 어떻게 구성하셨고, 병렬 처리 시 충돌 방지를 위해 어떤 설계를 하셨나요?
Amazon SQS 기반 메시지 큐 시스템에서 메시지 유실 방지를 위한 전략은 무엇이었나요?
Zookeeper를 사용한 이유는 무엇이고, 어떤 부분에 활용되었는지 설명해주세요.
👥 협업, 커뮤니케이션 및 리딩 관련 질문
프로젝트 리딩 시, 프론트엔드나 기획팀과 API 통합 구조에 대해 어떻게 협의하고 설득하셨나요?
신규 기능 배포 전 테스트 또는 릴리스 검증 과정에서 가장 중요하게 여긴 부분은 무엇인가요?
코드 리뷰 시 주로 어떤 부분에 중점을 두며 피드백을 하셨나요?
🧪 기타 기술 기반 질문 (주관적 사고 확인)
Spring Data JPA를 사용할 때 N+1 문제를 경험하셨다면, 어떻게 진단하고 해결하셨나요?
Datadog을 활용해 성능 모니터링할 때 가장 유용하게 사용한 기능은 무엇이었나요?
@Transactional을 사용할 때 주의해야 할 점이나 실무에서 발생한 이슈가 있었나요?
기술 블로그 운영 중 가장 반응이 좋았던 글이나, 개인적으로 인사이트를 얻은 글은 무엇이었나요?
🏗️ 고급 설계/아키텍처 질문
도메인 계층의 비즈니스 로직을 서비스 계층과 어떻게 분리하셨나요?
- 구체적인 예시와 함께 설계의 장점 설명
모듈 간 순환 의존성이 발생하지 않도록 아키텍처를 어떻게 유지했나요?
멀티모듈 프로젝트에서 공통 모듈의 설계 전략과 유의사항은 무엇인가요?
CQRS 또는 Event Sourcing을 고려하신 적이 있다면, 어떤 상황이었고 왜 도입/미도입했는지 설명해주세요.
🧵 동시성 / 분산 처리 질문
Redis 기반 분산락과 DB 락(예: SELECT … FOR UPDATE) 간의 실무적 차이점과 선택 기준은 무엇인가요?
낙관적 락을 적용하셨다고 했는데, 구체적으로 어떤 방식으로 구현하셨고 충돌 시 어떤 전략으로 대응했나요?
병렬 배치 처리 시 트랜잭션 충돌을 최소화하기 위한 Partitioning 전략을 설명해주세요.
API 서버와 배치 서버가 동일 DB를 사용할 때 생길 수 있는 동시성 문제를 어떻게 방지했나요?
🚦 실시간 처리 / 메시징 / 이벤트 기반 설계 질문
SQS 기반 메시지 시스템에서 메시지 중복 처리(Idempotency)는 어떻게 구현하셨나요?
@TransactionalEventListener를 통해 외부 API 호출을 지연시키는 구조에서 장애 상황(예: API 다운)은 어떻게 처리했나요?
RabbitMQ를 운영하면서 발생할 수 있는 장애 시나리오를 예상하고, 복구 전략을 설명해주세요.
실시간 트래픽 급증 시, 시스템 부하를 완화할 수 있는 Rate Limiting 또는 Queueing 전략은 어떤 방식으로 구현할 수 있을까요?
🧬 JPA / 데이터 모델링 질문
Spring Data JPA에서 벌크 업데이트 시 주의할 점은 무엇이며, 성능 개선을 위해 어떤 방법을 사용해 보셨나요?
JPA 기반 도메인에서
equals()
와hashCode()
구현 시 주의할 점과 실제로 발생했던 문제 사례는 있었나요?복잡한 데이터 모델을 설계할 때 정규화와 성능 사이에서 어떻게 균형을 맞추셨나요?
📈 운영/모니터링/장애 대응 관련 질문
Datadog으로 추적 가능한 주요 지표(Metric)는 어떤 것들이 있었고, 실제로 어떤 알림 기준을 설정하셨나요?
GC 로그를 분석해 성능 병목을 해결하셨다고 했는데, GC 튜닝 시 사용한 툴이나 기준이 궁금합니다.
트래픽 폭증 시의 대응 경험이 있으신가요? 예를 들어 Scale-out, 캐시 사용, DB 튜닝 등 어떤 조치를 하셨나요?
🔑 보안 / 인증 / ISMS 관련 질문
ISMS 대응을 위해 로그에 적용한 MDC 구조는 어떤 방식으로 요청 단위를 식별했나요?
LDAP 인증 연동 시, 사용자 Role/Group 매핑 구조는 어떻게 구성하셨고 어떤 보안 위협을 고려하셨나요?
🔍 꼬리질문
✅ Q1. 낙관적 락을 어떻게 적용했고, 충돌 시 어떤 전략을 사용하셨나요?
예시 답변: MCP 계약 코드 생성 과정에서 시퀀스 테이블 병목 문제를 해결하기 위해 낙관적 락을 적용했습니다. 코드 생성 시점에 캐시된 코드 블록을 소진하면, DB 시퀀스 테이블에서 갱신을 시도하는데, version
필드를 두어 마지막 갱신 시점과 비교 후, 일치하지 않으면 OptimisticLockingFailureException
을 발생시켜 재시도하게 했습니다. 이를 통해 락 보유 시간을 줄이고, 병렬 환경에서의 충돌을 최소화했습니다.
꼬리 질문:
- 낙관적 락이 유효한 조건은 어떤 상황인가요?
- 비관적 락과의 트레이드오프를 설명해주세요.
- 재시도 로직은 최대 몇 회까지 적용하셨나요? 재시도 실패 시에는 어떻게 처리하셨나요?
✅ Q2. Redis 기반 분산 락과 DB 락의 실무적 차이점은 무엇인가요?
예시 답변: DB 락은 트랜잭션 내에서 정합성을 확보하는 데 강력하지만, 성능 부하가 크고 범위가 협소합니다. 반면, Redis 기반 분산 락은 시스템 간 분산 환경에서도 사용이 가능하며 락 소유권 관리(SETNX, TTL)와 명시적 해제를 통해 확장성과 유연성이 뛰어납니다. 저는 지분율 대량등록 시 Redis 락을 사용하여 배치 간 충돌을 방지했습니다. 락 소유 ID를 기준으로 정확히 해제하며, 만료시간을 설정해 데드락도 예방했습니다.
꼬리 질문:
- Redisson 같은 라이브러리도 고려해보셨나요?
- 락 해제 실패나 Redis 장애 상황에서는 어떤 대체 전략을 사용하셨나요?
✅ Q3. FastExcel을 도입한 이유와 장점은 무엇이었나요?
예시 답변: Apache POI는 안정적이지만 대용량 엑셀 처리에는 메모리 이슈가 컸습니다. 특히 Streaming 방식이 있더라도 쓰기/읽기 시 제약이 있었고, 스타일 적용이 어렵다는 문제가 있었죠. FastExcel은 POI보다 훨씬 가볍고 빠르며, 엑셀 쓰기 처리에 특화되어 있어 대량 다운로드 기능에서 유리했습니다. 배치 시 OOM을 방지하고, CPU/메모리 리소스를 약 40% 이상 줄일 수 있었습니다.
꼬리 질문:
- FastExcel의 한계는 무엇이며, Excel 업로드 처리에는 왜 사용하지 않으셨나요?
- 스타일이나 셀 병합이 필요한 경우에는 어떻게 대처하셨나요?
✅ Q4. @TransactionalEventListener를 사용할 때 주의한 점은 무엇인가요?
예시 답변: 가장 주의한 점은 트랜잭션 커밋 이후의 비동기 처리라는 특성을 명확히 이해하고, 외부 API 호출 로직을 메인 트랜잭션과 분리하는 것입니다. 또한, 이벤트 리스너에서 예외가 발생해도 커밋된 트랜잭션은 롤백되지 않기 때문에, 장애 로깅, 재처리 전략, 알림 체계를 별도로 구성했습니다. 이벤트 객체는 @TransactionalEventListener(phase = AFTER_COMMIT)
으로 등록했고, 내부에서 SQS
큐 전송 또는 외부 API 요청을 수행했습니다.
꼬리 질문:
- AFTER_COMMIT이 아닌 BEFORE_COMMIT이나 AFTER_COMPLETION과의 차이를 설명해주세요.
- 이벤트 처리에서 @Async와 함께 사용할 경우 주의사항은 무엇인가요?
✅ Q5. QueryDSL을 사용해 복잡한 조회 조건을 안전하게 구현한 경험을 말씀해주세요.
예시 답변: 크리에이터 스튜디오 프로젝트에서 사용자별 콘텐츠 필터링, 상태, 등록일 조건 등이 복합적으로 결합된 검색 API가 있었고, 이를 QueryDSL로 안전하게 구성했습니다. BooleanBuilder를 사용해 null-safe한 조건 분기 구조를 만들었고, 인자로 받은 조건들을 조합하면서도 코드 가독성과 재사용성을 높였습니다. 또한, 쿼리 튜닝을 위해 fetchJoin
을 활용하여 N+1 문제도 사전에 방지했습니다.
꼬리 질문:
- QueryDSL 대신 Specification을 쓰지 않은 이유는?
- 동적 쿼리가 많아질 경우 유지보수를 위해 어떤 구조를 고려하셨나요?
✅ Q6. GC 튜닝 과정에서 어떤 분석 도구와 기준을 사용하셨나요?
예시 답변: 대용량 배치 작업 중 Full GC가 자주 발생했고, 처리 성능이 급격히 저하되는 이슈가 있었습니다. GC 로그를 수집하여 GCEasy와 GCViewer로 분석했고, G1GC에서 힙 사이즈 조절, InitiatingHeapOccupancyPercent
설정 변경을 통해 GC 트리거를 늦췄습니다. 또한, POI 사용 시 객체 생성을 줄이고, flush()/clear()
주기를 조정하여 힙 점유율을 낮췄습니다.
꼬리 질문:
- G1GC를 선택한 이유는 무엇인가요?
- G1GC와 ZGC를 비교하면 어떤 상황에 더 적합한가요?
- ✅ JPA & 트랜잭션 관리
- 🚀 배치 처리 & 대용량 데이터 처리
- 🔄 이벤트 기반 아키텍처 & 메시징 시스템
- 🧰 Redis & 캐싱 전략
✅ 1. JPA & 트랜잭션 관리
Q1. @Transactional 사용 시 주의해야 할 점은 무엇인가요?
예시 답변: @Transactional은 기본적으로 프록시 기반으로 작동하기 때문에 동일 클래스 내 self-invocation 시 트랜잭션이 적용되지 않는 점을 주의했습니다. 또한, 트랜잭션 전파 전략(Propagation.REQUIRED vs REQUIRES_NEW)과 롤백 조건을 명확히 이해하고, 예외가 발생했을 때 예상대로 롤백되는지 테스트를 통해 검증했습니다.
꼬리 질문:
- REQUIRES_NEW를 실제로 사용하신 사례가 있다면 설명해주세요.
- RuntimeException 외 CheckedException에 대해서는 어떻게 처리했나요?
Q2. N+1 문제를 어떻게 해결하셨나요?
예시 답변: 앨범-트랙 간 OneToMany 관계에서 트랙을 렌더링할 때 N+1 문제가 발생했습니다. 이를 해결하기 위해 @EntityGraph
또는 JPQL의 fetch join
을 사용했습니다. 단, fetch join은 여러 관계에 동시에 적용 시 Cartesian Product 문제가 있어, 필요한 관계만 선별적으로 적용했습니다.
꼬리 질문:
- EntityGraph vs fetch join의 장단점 비교해보세요.
- 데이터 양이 많을 경우 Lazy 전략은 어떻게 처리하셨나요?
🚀 2. 배치 처리 & 대용량 데이터 처리
Q3. Spring Batch에서 롱 트랜잭션 문제를 어떻게 해결하셨나요?
예시 답변: 지분율 데이터 일괄 등록 배치에서, 트랜잭션이 길어지며 데드락이나 GC 부하가 자주 발생했습니다. 이를 해결하기 위해 chunkSize를 조정하고, flush()
/clear()
주기를 도입했습니다. 또한, 청크 단위의 커밋이 끝나면 Redis 락을 해제해 다른 프로세스가 진행할 수 있도록 설계했습니다.
꼬리 질문:
- Chunk-oriented processing과 Tasklet 방식의 차이점은?
- 청크 단위 실패 시 Rollback 정책은 어떻게 구성하셨나요?
Q4. Excel 업로드/다운로드에서 성능 최적화를 위해 어떤 전략을 사용하셨나요?
예시 답변: POI 대신 POI-SXSSF Streaming 또는 FastExcel을 적용하여 메모리 사용량을 줄였고, 대용량 데이터 처리 시에는 필터 조건을 받아 비동기적으로 처리하거나 사전 배치 생성 구조로 변경했습니다. 또한, 업로드 시에는 파일 파싱 전에 S3에 저장하고, 병렬 처리로 시간과 리소스를 분산했습니다.
꼬리 질문:
- Excel 업로드 중 검증 오류 발생 시 롤백 처리 방식은 어떻게 구성하셨나요?
- 업로드 도중 중단되면 어떻게 복구했나요?
🔄 3. 이벤트 기반 아키텍처 & 메시징 시스템
Q5. SQS를 이용한 비동기 구조의 장점은 무엇이었나요?
예시 답변: 엑셀 다운로드 요청 시, 필터 조건을 포함한 요청을 SQS에 보내고, 별도 소비자 프로세스가 파일을 생성해 S3에 업로드하는 구조로 구성했습니다. 이로써 API 서버의 부담을 줄이고, 사용자는 결과 링크를 polling으로 조회하게 했습니다. 특히 전체 데이터 다운로드는 사전 생성으로 분기 처리하여 성능 병목을 방지했습니다.
꼬리 질문:
- SQS의 Visibility Timeout 설정은 어떤 기준으로 했나요?
- 메시지 중복 처리 방지를 위해 어떤 방식의 Idempotency를 적용했나요?
Q6. 이벤트 기반 아키텍처의 단점과 보완책은 무엇이라고 생각하시나요?
예시 답변: 장점은 비동기 확장성과 모듈 간 느슨한 결합이지만, 단점은 추적 불가/장애 시 디버깅 어려움, 정확한 일관성 보장 어려움입니다. 이를 보완하기 위해 이벤트 ID를 로깅하고, dead-letter queue(DLQ) 설정과 모니터링을 통해 장애를 추적할 수 있도록 했습니다.
꼬리 질문:
- 이벤트 중복 전송 시 비즈니스 중복 처리를 어떻게 방지했나요?
- Retry 시 지연 전략(backoff)을 적용한 경험이 있으신가요?
🧰 4. Redis & 캐싱 전략
Q7. Redis를 세션처럼 사용하셨다고 했는데, TTL 및 인증 상태 유지를 어떻게 관리하셨나요?
예시 답변: FLO API에서 받은 인증 토큰을 Redis에 저장하고 TTL을 설정해 세션처럼 활용했습니다. 사용자의 요청이 들어올 때마다 TTL을 갱신하거나, 일정 시간 전에 갱신 로직을 별도 배치로 처리했습니다. 세션이 만료되면 자동 로그아웃되도록 구성하고, 인증 불일치 시 보안 로그로 감지했습니다.
꼬리 질문:
- 세션 TTL 갱신 시 동시 갱신 요청이 들어올 경우 어떻게 처리했나요?
- Redis 장애가 발생했을 경우 인증 흐름은 어떻게 처리되도록 설계하셨나요?
Q8. 예측 기반 캐시 전략을 제안하셨다고 했는데, 구체적인 동작 방식은?
예시 답변: 엑셀 전체 다운로드에 가까운 조건 조합은 반복될 가능성이 높아, 처리 시간 임계값을 기준으로 캐시 대상으로 분기했습니다. 초기 요청은 직접 처리하고, 이후 동일 조건에 대해서는 S3 사전 결과를 반환했습니다. 처리 시간 예측은 과거 요청 로그 기반으로 모델링했습니다.
꼬리 질문:
- 캐시 키 설계 시 어떤 필드를 조합했나요?
- 캐시 무효화 전략은 어떤 기준으로 정하셨나요?