187
12
장
-
실무 관심사
이후 확장될 웹사이트를 만들 때 기억해야 할 가장 중요한 것은 지속성입니다. 파일 기반 스토
리지에 의존해 지속성을 설계해왔다면, 당장 멈추십시오. 그 길은 가시밭길입니다. 이 문제에
관한 필자의 첫 경험은 거의 재앙이었습니다. 고객사 한 곳이 웹 기반 콘테스트를 열게 되었습
니다. 콘테스트 웹 애플리케이션은 승자
50
명에게 상을 받을 거라는 사실을 알려주도록 만들
어졌습니다. 고객사의
IT
부서는 데이터베이스 사용을 허락하지 않았으므로 텍스트 파일을 만
들어 지속성을 충족해야 했습니다. 필자는 늘 하던 대로 항목당 파일을 하나씩 만들어 저장했
습니다. 일단 파일에 승자가
50
명 기록되면 그다음부터는 상을 준다는 공지를 하지 않게 만든
겁니다. 문제는 서버가 분산 처리형 서버였다는 겁니다. 요청 중 반은
A
서버에서 처리됐고, 나
머지 반은
B
서버에서 처리됐습니다. 그리고
A
서버는 승자
50
명에게 수상을 축하한다고 알렸
고, 물론
B
서버도 그렇게 했습니다. 불행 중 다행인 건 상품이 양털 모포라서 아이패드처럼 비
싼 건 아니었다는 겁니다. 결국 고객사는
50
명이 아니라
100
명에게 상품을 지급했습니다(필
자는 실수를 책임지려고 상품
50
개 값을 내겠다고 했지만 고객사는 관대하게도 그 제안을 사양
했습니다). 이 이야기의 교훈은 모든 서버가 접근할 수 있는 파일시스템을 운영하는 게 아니라
면, 로컬 파일시스템에 지속성을 맡겨서는 안 된다는 겁니다. 예외가 있다면 로그나 백업 같은
읽기 전용 데이터입니다. 예 ...