운영 가능한 시스템은
설명할 수 있어야 합니다.

6년 동안 Java와 Spring Boot를 중심으로 결제·정산 도메인과 분산 시스템을 만들고 운영했습니다. 처리량보다 정확성이 먼저인 순간과, 정확성만큼 복구 속도가 중요한 순간을 구분하는 일을 좋아합니다.

문제의 수명보다
긴 해법을 찾습니다.

기능을 빨리 만드는 것과 시스템을 오래 운영하는 것 사이의 균형을 고민합니다. 장애가 났을 때 원인을 좁힐 수 있는 관측 가능성, 중복과 지연을 견디는 메시지 처리, 되돌릴 수 있는 배포 전략을 제품 개발의 일부로 봅니다.

01

실패 경로부터 설계합니다

타임아웃, 재시도, 중복 처리, 부분 실패가 데이터에 남기는 흔적을 먼저 그립니다.

02

측정할 수 있는 결정을 합니다

감각 대신 SLI와 로그, 트레이스로 가설을 검증하고 선택의 비용을 기록합니다.

03

복잡성을 경계 밖으로 밀지 않습니다

다른 팀과 사용자가 떠안게 될 운영 비용까지 포함해 설계를 평가합니다.