UMOS 1차 면접 직전 1장 치트시트
16:30 시작 직전 1회만 훑기. 새 개념 금지. 입에 붙은 키워드만 재확인.
TL;DR — 4가지 mental check
- 반문은 정정 신호 — 버티지 말고 즉시
"아, 정확히는 ~"전환. - 수치 모르면 인정 + "지금이라면 ~" 라인. (reactive → proactive)
- 단언 금지 4종:
exactly-once/Redlock 단독 안전/PG RR로 직렬화/Infinispan = consistency 최대화. - 4분 안쪽 답변 + 말 속도 느리게 (회고 반복 약점).
A. 답변 라인 5종 (대규모 처리·정합성)
| # | 키워드 | 핵심 1줄 |
|---|---|---|
| 1 | Outbox | DB tx + 이벤트 row + at-least-once + consumer 멱등성 |
| 2 | Kafka·DLQ | 실패 메시지 격리 + 재처리 |
| 3 | SKIP LOCKED | 워커 분배 + fencing 불필요 |
| 4 | 멱등 키 + DB UK | idempotency 1순위 보장 |
| 5 | Sync timeout + CB | 외부 의존, fail-fast |
B. 장애 카드 (Keycloak 가용성 incident)
- 오프닝:
"가용성 장애 1건 가져왔습니다"(자가 평가 X — 운 띄우지 말기) - Timeline (4분): 어디서 터졌나 → 원인 파악·복구 → 재발방지
- 재발방지: Infinispan 분산 캐시로 세션 공유 + 노드 장애 시에도 세션 유지(HA)
- 함정: "Infinispan = consistency 최대화" 단언 X. 주 용도는 세션 공유·HA.
C. 회고 약점 5종 (함정 회피)
- 수치/관측성 —
"정확한 숫자 기억 안 나지만 수준은 X급. 발견은 exception + 고객 문의. 지금이라면 fallback rate + 멱등 충돌률 메트릭 알람화." - DB isolation —
"어느 DB 기준?"항상 명시 (PG=RC, MySQL=RR) - 극단 케이스 반문 = 정정 신호 —
"3000조에도 O(1)?"같은 반문은 답 검증이 아니라 수정 유도. 즉시"아, 정확히는 ~"전환. - Class101 7년 카드 1개 backup — 부릉 일색이면
"7년 Class101은?"빈자리. 결제·정산 멱등성 키 DB UK + 조회 방지 사례. - 상태전이 원자성 —
UPDATE ... SET status='paid' WHERE id=? AND status='pending'+ affected rows 검사 (race-free 보장)
D. 역질문 풀 3개
| # | 카드 | 컨텍스트 1줄 |
|---|---|---|
| 1 | 조직 구조 | "부릉에서 TMS 운영 7년 하다 보니 팀 R&R 명확성이 운영 품질에 직결되는 걸 봤어요. UMOS BE는 기능별 분리인가요, 도메인별 분리인가요?" |
| 2 | 우선순위 문제 | "시니어가 첫 90일에 닿을 가장 큰 문제가 운영 안정성 / 신규 도메인 확장 / 플랫폼 부채 중 어느 쪽인지요?" |
| 3 | VRP trade-off (클로징) | "VRP 다뤄본 경험으로 작은 문제는 1분 내 / 큰 문제는 10분 돌려도 더 좋은 해가 남는 경우가 많았어요. capora는 문제 크기에 따라 속도와 해 품질을 어떻게 trade-off 하셨나요? AI 활용은 탐색 공간 축소인지 해 품질 자체 향상인지요?" |
운용 룰:
- 역질문 타임 3분+ 남으면 →
조직 → 우선순위 → VRP(정석) - 2분 이하 →
VRP 먼저(강카드 보장) - 1분 이하 →
VRP만
E. 분산 시스템 기초 5종 — 단언 금지 + 키워드
① 트랜잭션 격리 수준
- 4단계: RU(dirty) → RC(non-repeatable) → RR(phantom) → SER(write skew까지)
- 디폴트: PG=RC, MySQL=RR (InnoDB gap lock으로 phantom 실질 차단)
- PG RR = Snapshot Isolation (SI) — phantom 막지만 write skew 못 막음
- PG SER = SSI (진짜 직렬화, abort/retry 비용)
- 답변 라인:
"디폴트 RC 유지 + 비관락 / 멱등 키 / 조건부 UPDATE 조합으로 응용 레이어에서 명시적 방어. 격리 올리면 throughput·deadlock 비용 커서 trade-off."
② Idempotency
- at-least-once + 멱등 처리 (exactly-once는 환상)
- 1순위 멱등 키 + DB UK 제약 > 2순위 조건부 UPDATE > 3순위 Redis SET NX (보조)
- HTTP: GET/PUT/DELETE 멱등, POST는
Idempotency-Key헤더로 보강
③ Outbox / Saga
- Outbox: dual-write 문제 해결. DB tx에 outbox row → publisher → Kafka.
- Saga: 2PC 대신. Choreography(이벤트 체인, 결합도 낮음) vs Orchestration(중앙 코디네이터, 흐름 명확).
- 보상 tx는 rollback 아님 — 효과 되돌리는 새 tx. 멱등성 필수.
④ 분산 락
- SKIP LOCKED (DB) —
SELECT FOR UPDATE SKIP LOCKED, fencing 불필요, 큐 워커 최적 - Redis Redlock —
SET key value NX PX ttl(NX=원자 lock 획득, PX=ms TTL 자동 해제) - Kleppmann 비판: GC pause / clock drift → split brain. fencing token + 멱등성 2중 방어 필수.
- 답변 라인:
"가능하면 락 자체 피하고 응용 레이어 멱등성으로 푸는 게 우선."
⑤ CAP / PACELC
- Partition 발생 시 C·A 택1. 평시엔 둘 다 가능.
- PACELC: 평시에도 Latency vs Consistency trade-off까지 확장.
- 시스템 예: Cassandra = AP (PA/EL), ZooKeeper·etcd = CP, RDB single-leader = CP 성향.
- 함정: "분산 = 항상 CP/AP" 단답 X. Partition 동안만의 선택.
F. Write Skew (SI 한계 — 면접 단골)
- 정의: 각 tx는 자기 read/write만 보면 OK인데, 동시 commit되면 불변 조건 깨짐.
- 예시 (잔액 100, 출금 70 + 50 동시): 각자 100>=70/50 보고 OK 판단 → 둘 다 commit → 잔액 -20.
- PG SI(=RR)는 못 막음 — snapshot으로 서로 모름.
- 해결 4종: 조건부 UPDATE + affected rows / SELECT FOR UPDATE / PG SER (SSI) / 분산 락 + fencing.
- 답변 라인:
"잔액·재고 같은 불변 조건 도메인은 SI 디폴트만 믿으면 write skew로 깨져요. 격리 올리는 대신 조건부 UPDATE + affected rows 검사가 가장 경제적이라 부릉에서도 그 패턴이 표준이었습니다."
G. 16:25 체크리스트
- [ ] 화장실 + 물 한 잔
- [ ] meet 링크:
meet.google.com/roc-nmog-spb - [ ] 카메라·마이크 점검
- [ ] 회사 소개서 1줄 메모:
Capora TMS = AI 기반 운송 관리. AI 명시 = 대화형 인터페이스 / 실시간 배차 / VRP 1분 단축 - [ ] 자기소개 hook 한 번 입에 굴리기
17:30 종료 후 회고 메모 5줄만 남기면 다음 단계 빠르게 진행 가능.