개인 프로젝트에서 서버 다운 상황을 겪고 고가용성 개념을 적용한 경험을 중심으로 구성한 답변
고가용성 시스템을 설계할 때 가장 중요하게 고려해야 하는 요소는 무엇이라고 생각하나요?
개인 프로젝트로 소규모 일정 공유 서비스를 만들어서 운영했는데, 클라우드 서버 인스턴스가 갑자기 다운되면서 서비스가 2시간 동안 중단된 적이 있습니다. 사용자가 20명밖에 없었지만 그 경험이 충격이었습니다. 단일 서버 하나에 전체 서비스가 얹혀 있었던 것이 문제였습니다.
그 이후로 고가용성 개념을 공부하면서 로드밸런서와 다중 서버 구성으로 한 서버가 죽어도 서비스가 유지되도록 구조를 바꿨습니다. 비용이 두 배가 됐지만, 그 이후에 인스턴스가 한 번 더 다운됐을 때 서비스는 정상 운영되었습니다. 교과서로 배운 개념이 실제로 작동하는 것을 처음 확인한 순간이었습니다.
이 경험에서 고가용성 설계에서 가장 먼저 해야 하는 것은 단일 장애 지점이 어디인지 파악하는 것이라는 것을 배웠습니다. 장애가 나기 전에는 보이지 않는 경우가 많고, 직접 장애를 겪고 나서야 구조적 문제가 명확해진다는 것도 알게 되었습니다.