IT,과학

Firebase 설정을 틀려서 72시간에 3000만원이상 청구되어버린 웹 서비스

나나시노 2018. 8. 5. 11:30
반응형




Firebase 설정을 틀려서 72시간에 3000만원이상 청구되어버린 웹 서비스



Firebase는 구글이 운영하는 서비스에 하나로, 서버와 같은 기능을 쉽게 사용할 수 있도록 해주기 위한 웹 서비스나 스마트폰 앱 등 개발에 잘 사용됩니다. 기업가 니콜라씨도 Firebase를 사용해서 웹 서비스를 작성했습니다만, 설정을 틀려버렸기 때문에 72시간에 3000만원이상이나 되는 사용료를 청구되어버린 경위를 블로그에서 공개했습니다.



니콜라씨는 콜롬비아에서 "Vaki"라고 하는 크라우드 펀딩 사이트를 운영하고 있습니다만, 그 사이트에서 「#UnaVacaPorDeLaCalle」라고 하는 정치계 크라우드 펀딩이 대단히 인기가 있습니다. 이 크라우드 펀딩이 시작하고 나서 48시간으로 세션수는 200만을 넘고, 2000만회나 페이지 열람수가 있다고 합니다. 이하 이미지는 Vaki 페이지를 구글 애널리틱스로 해석한 것 같습니다만, 「En este momento(현재 사이트를 방문중의 사람)」이 2000명 가까이 있는 것을 확인할 수 있습니다.


이렇게 많은 액세스가 있으면서도 사이트는 다운하지 않고 가동을 계속했었습니다만, 일부 사용자가 페이지를 읽는데도 30초이상 걸렸다고 해, 니콜라씨 팀은 원인 조사에 착수합니다. 2일 가까이 사이트를 구성하는 프레임워크 Angular를 갱신하는등, 시도를 했지만 성과는 얻을 수 없었습니다만, 그 후 Firebase 대쉬보드에 있는 청구 금액을 보아서 놀랐습니다. Firebase 사용요금을 표시하는 페이지에서는 72시간에 3만달러(약3300만원)나 요금이 발생했다고 표시되었습니다.


조사한 결과, 크라우드 펀딩에서 서포트된 합계 금액을 표시하기 위한 코드 설계가 틀린 것이 판명. 통상이라면, 「합계 금액」이라고 저장된 문서를 한번 읽으면 좋았습니다만, 이번 「모든 지불 데이터를 읽어서 클라이언트상에서 합계한다」라고 하는 구현이 되어버렸습니다. 예를 들면 아래 이미지에서는 1666명이 합계 24만4875달러 서포트했습니다만, 244876이라고 하는 숫자를 1회 액세스해서 읽어내는 것이 아니고, 각각 서포트 금액을 1666회 액세스해서 읽어내고, 서로 더해서 합계 금액을 표시해버렸습니다.



이것은 목록 페이지라도 같은 구조입니다. 모든 지불 데이터를 읽기로 되어 버리기 때문에 방대한 액세스가 발생해버렸습니다. 페이지 로드는 2000만회 정도이었습니다만, Firebase에 액세스는 46억회를 넘었습니다.


Firebase는 구글 서버를 사용해서 제공하기 때문에 메리트는 있습니다만, 무심코 설정을 틀려도 스케일 해 버리기 때문에 사용요금을 막을 수 없는 결점도 있다고 실감합니다.


니콜라씨는 구글과 연락을 하고, 스타트업에 적합한 조성금을 얻는 것으로 무사히 끝냈다고 합니다만, 「출시전에 서버에 모든 액세스를 디버그하는 것이 대단히 중요하다」라고 이야기했습니다.


반응형