경험 중심 1인칭 답변
대규모 분산 시스템에서 가장 중요한 고려사항은 장애를 전제로 설계하는 것이라고 생각합니다. 노드 하나가 죽더라도 전체 시스템이 계속 동작할 수 있는 복원력(resilience) 설계가 기본입니다. 이를 위해 서킷 브레이커 패턴, 재시도 로직, 폴백 전략을 함께 고려해야 합니다. 또한 분산 환경에서는 일관성(Consistency)과 가용성(Availability)의 트레이드오프를 명확히 이해하고 시스템의 요구사항에 맞게 선택해야 합니다. 데이터베이스 수준에서는 샤딩 전략과 복제 지연이 실제 운영에서 예상치 못한 문제를 만들기도 합니다. 마지막으로 관찰 가능성(Observability)이 없으면 문제가 생겼을 때 원인을 찾기 어렵기 때문에, 분산 트레이싱과 메트릭 수집을 처음부터 설계에 포함시켜야 한다고 생각합니다. 앞으로도 분산 시스템을 설계할 때 장애를 전제로 한 복원력 설계와 관찰 가능성을 처음부터 고려하는 방식을 유지하겠습니다.
보이지 않는 시스템은 고칠 수 없습니다.