지난 14일, 구글 서비스가 약 한 시간 가량 먹통 되는 일이 발생했다. 지메일이나 캘린더, 유튜브 같은 구글 서비스뿐만 구글 계정으로 로그인하는 외부 서비스들도 사용할 수 없었다.
18일에 사건(?) 보고서가 공식 홈페이지에 올라왔다. 문제가 발생했던 부분은 구글 인증 시스템이었다. 약 47분 간 인증이 제대로 이루어지지 않았고, 때문에 구글 계정으로 로그인하는 단계에서(또는 자동 로그인이 되어 있을 때) 오류가 발생했던 것이다. 시크릿 모드에서 유튜브 접속이 원활했던 이유는 로그인 상태가 아니므로 인증 시스템을 굳이 통하지 않았기 때문이다.
보고서 내용을 간략히 정리해보면 다음과 같다.
1. 구글의 계정 서비스는 모든 사용자 계정에 고유한 식별자를 부여한 후 그에 맞게 인증을 실행한다.
2. 계정 정보는 여러 데이터베이스에 분산되어 저장되어 Paxos 프로토콜을 기반으로 업데이트된다.
3. 만료된 데이터가 감지된 경우 업데이트가 중단된다(보안상의 이유).
4. 구글 서비스가 활용하는 여러 시스템 자원에는 각각 사용량 제한이 걸려있다.
5. 지난 10월, 계정 서비스에 새로운 제한 시스템을 도입했다.
6. 도입 후에도 계정 서비스 일부분에는 예전 시스템이 그대로 남아있었다. 이는 계정 서비스의 자원 사용량이 0으로 표시되게 만들었다.
7. 자원 사용량이 0으로 인식되니 계정 서비스의 사용량이 더욱 제한되었고, 이는 Paxos의 쓰기 작업을 방해하는 것으로 이어졌다. 읽기 작업도 중단되어 인증 lookup에서 오류가 발생했다.
8. 계정 서비스가 오류를 일으킨 지 1분 후, 엔지니어들에게 긴급 알림이 자동으로 발송됐다.
9. 호출을 받은 엔지니어들은 문제의 원인을 파악(20분 소요), 한 개 데이터센터의 사용량 제한을 일시적으로 해제했고(14분 소요), 효과가 보이자 전체 데이터센터로 해제를 확대해 사태를 진정시켰다(11분 소요).
10. 오류 감지 시스템이 작동하긴 했지만, 자원 사용량이 0으로 표시되는 시나리오를 예측하지 못했기 때문에 미리 예방하지는 못했다.
11. 더 나은 안정성을 위해 모니터링과 예방 시스템을 강화할 예정이다.
역시 무언가의 업데이트 이후가 가장 무섭다. 당장 문제가 생기지 않더라도 언제 튀어나올지 알 수가 없다. 작은 광고 서비스를 책임지는 나도 그런데 수억 명의 사용자와 함께하는 구글 엔지니어들과 프로덕트 매니저들은 오죽할까.
더 나은 환경을 위해 치러야 하는 대가일지도 모른다.