도입 : '완벽한 프로그램'이라는 환상IT 개발에 입문하는 많은 사람들이 흔히 가지는 오해가 있습니다. 바로 "버그 없이 완벽한 코드를 짜면 시스템은 영원히 안정적일 것"이라는 생각입니다. 하지만 실무 현장에서 마주하는 진실은 조금 다릅니다. 아무리 코드를 견고하게 작성하더라도 서버 다운, 네트워크 지연 및 단절, 디스크 오류, 외부 API 호출 실패 등 수많은 외부 요인으로 인해 현실의 시스템은 언젠가 반드시 실패합니다.분산 시스템 환경에서 실패란 일어날 확률이 희박한 특별한 사고나 예외 상황이 아닙니다. 도로에 차가 많아지면 자연스럽게 교통 정체가 생기듯, 시스템에서도 장애는 피할 수 없는 '정상적인 상황(Normal Condition)'으로 받아들여야 합니다. 따라서 실무 시스템 설계에서 안정성(S..