콜로세움 면접 CS 질답 시뮬레이션 회고 (2026-06-10)
TL;DR
콜로세움(시리즈B, 2027 IPO 목표) 백엔드 시니어 면접 대비 4시간 CS 질답 시뮬레이션. 부릉 TMS 카드 5종을 다루며 "프레임워크가 한 일 vs 내가 깐 안전망" 분리, 계층 방어 라인, "당시엔 용어 안 썼지만 결과적으로 X" 사후 명명 라인 등 시그니처 답변 구조 4종 확립. 반복 약점은 수치/관측성 부재 · 표준 용어 부재 · 부릉 외 회사 다양성 빈자리. 다음 액션: 2026-06-11 12:30-13:30 면접 웜업.
컨텍스트
- 회사: 콜로세움 (시리즈B, 2027 IPO 목표)
- 직군: 백엔드 시니어
- 세션: 2026-06-10 16:00-20:00 (4시간, 원래 16-19시 슬롯 + 추가 1시간 CS 보강)
- 페르소나 운영: 지니(면접관/코칭), 완수(답변 라인 정리), 라파엘(반박)
- 다음 액션: 2026-06-11 12:30-13:30 면접 웜업 슬롯
다룬 카드
- 부릉 TMS 워커 매니징 — 멀티 스레드 솔루션 변형 + 시간 예산 + 동시 문제 시 솔루션 퀄리티 trade-off, 스케일링 트리거=문제 단위 격리
- EKS 셀프서비스 플랫폼 — 플랫폼팀/사용팀 책임 경계, 의도된 게이트
- RDB-as-MQ → outbox 패턴 — Axon framework + 주문 트랜잭션과 같은 begin/commit에 묶음
- 워커 동시성 + idempotency — Axon RDB event store 1차 방어 + order_id 기반 state check no-op
- Redis lock + 낙관적 락(version 컬럼) — 상황별 선택, 이중 방어
시그니처 패턴 (다음 면접에 그대로 가져갈 답변 구조)
1. "프레임워크가 한 일 vs 내가 깐 안전망" 분리
- Axon RDB event store + 우리 idempotency
- EKS 셀프서비스에서 플랫폼팀/사용팀 경계
- "잘 모릅니다" → "프레임워크가 추상화한 영역 + 내가 추가로 깐 장치" 분리로 재프레이밍하면 약점 → 시니어 답변으로 전환
2. "계층 방어" 라인
- Redis lock(1차 직렬화) + idempotency(2차 안전망)
- 시간 예산(1차 가드) + 솔루션 퀄리티 가드(2차)
- TTL 만료 후 동시 진입 케이스에서도 idempotency가 2차 안전망으로 작동
3. "당시엔 용어 안 썼지만 결과적으로 X" 사후 명명 라인
- outbox 패턴 케이스에서 효과적이었음
- 패턴은 이해하고 있지만 표준 용어를 모를 때, 이 라인이 약점을 가산점으로 전환
4. "결과 회수 + 의도된 게이트 + 트레이드오프 회고" 3단 구조
- 경험/의사결정 질답에서 시니어 답변 무게 채우는 표준 구조
반복적으로 약했던 곳 (다음 면접 사전 보강 필수)
1. 수치/관측성 부재
- "적절한 시간", "큰 문제 없었다" 같은 모호어가 면접관이 파고드는 신호로 작동
- 보강: 카드별로 초당/일별 처리량 + 중복/실패를 어떻게 발견했는지 한 줄씩 미리 정리
2. 표준 용어 부재
- outbox, SKIP LOCKED 같은 표준 용어 모르는 채로 패턴은 알고 있었음
- 보강: 패턴-용어 매핑표 사전 준비 (outbox / SKIP LOCKED / 낙관적 락 / 멱등성 등)
3. 회사 다양성 빈자리
- 카드 셋 다 부릉 사례 → "Class101 7년은요?" 압박에 빈자리
- 보강: Class101 7년 중 가장 의사결정 무게 있던 사례 1개 미리 선정
메타 학습 (면접 준비 방법론 자체)
1. 면접관 모드 ↔ 코칭 모드 토글
- 답변 하나 받을 때마다 면접관 모드에서 "이 답변에 어떻게 후속 압박할지" 한 줄 + 코칭 모드에서 "어떻게 보강할지" 한 줄
- 답변을 그 자리에서 다듬는 효율이 단순 모의면접보다 훨씬 높았음
2. "잘 모릅니다" 재프레이밍
- "모른다"로 닫지 않고 "프레임워크 / 내가 손댄 영역" 분리로 답변 두께 회복
- 면접에서 솔직함과 시니어다움을 동시에 확보하는 라인
3. 결정·질문 둘 다 하나씩 (오늘 메모리 업데이트한 룰)
- 여러 결정 항목을 한 번에 묶지 말고 하나씩, 면접관 질문도 한 번에 하나씩
다음 면접 사전 준비 체크리스트
- [ ] 카드 매트릭스 미리 만들기: 회사 × 도메인 × 결정 무게 (회사 다양성 확보)
- [ ] 모호어 사전 색출: "적절히", "큰 문제 없이" → 수치로 대체
- [ ] 패턴–용어 매핑표: outbox / SKIP LOCKED / 낙관적 락 / 멱등성 등 표준 용어 사전 확인
- [ ] 카드별 볼륨/관측성 한 줄 정리: 처리량 + 발견 방법
- [ ] 회사 컨텍스트 매칭: 상장 준비 단계라면 "운영 안정성" 톤, 초기라면 "속도" 톤
답변 라인 모음 (그대로 사용 가능한 표현)
RDB-as-MQ 방어
"초기에는 Kafka 대신 RDB 작업 큐를 썼고, 주문 상태 변경과 큐 row 생성을 같은 트랜잭션에 묶어서 이벤트 유실을 막았습니다. 결과적으로 outbox 패턴에 가까운 설계였습니다."
워커 동시성
"Axon framework가 RDB event store 위에서 1차 방어를 했고, 운영 중 중복 케이스가 관찰돼서 우리가 책임진 레이어에서는 중요도 낮은 건 throw + 모니터링, 정합성 필요한 건 idempotent 처리(order_id 기반 state check no-op)로 막았습니다."
이중 방어
"Redis lock으로 1차 직렬화하고, idempotency를 2차 안전망으로 깔아서, TTL 만료 후 동시 진입이 생겨도 한 번만 반영되도록 이중 방어했습니다."
사후 명명
"당시엔 outbox라는 용어를 쓰진 않았지만, 결과적으로 outbox 패턴이었습니다."