Engineering cases

하나의 실패 경계를
끝까지 따라갑니다.

프로젝트의 전체 기능을 반복하지 않고, 사용자에게 영향을 주는 한 가지 경계와 선택한 trade-off만 다룹니다.

01

Concert Booking

같은 좌석을 누른 두 사람에게 다음 행동까지 돌려주기

대기열 입장, 동일 요청 재시도, 좌석 상태 변경을 한 장치에 몰지 않고 각각의 경계가 책임지게 했습니다.
02

Concert Booking

commit 이후의 실패를 사라진 사건으로 만들지 않기

Outbox는 발행 실패를 DB에 남기고, DLT는 처리 실패를 정상 흐름에서 격리해 다시 시작할 위치를 제공합니다.
03

Realtime Chat

상대가 본 메시지는 먼저 저장돼 있어야 한다

accepted와 persisted를 구분하고 DB commit 뒤에만 broadcast해 실시간 화면과 복구 가능한 기록을 같은 순서로 맞췄습니다.
04

BorrowMe

팀 시연이 끝난 코드를 다시 검증 가능한 상태로 만들기

과거 개선 수치를 되풀이하지 않고 현재 코드가 지켜야 할 조회 SQL 상한과 재고 불변식을 테스트로 남겼습니다.