뭔가 알고 싶거나 접속하고 싶은 페이지가 있을 때 검색하고 싶은 문구를 브라우저에 입력하기만 하면 즉시 최신 결과를 반환해 준다. 정보 검색에는 검색 엔진 인덱스라는 다양한 학문 개념을 포함한 복잡한 메커니즘이 활용되고 있지만 과거 구글에서는 검색 엔진 인덱스를 생성하는 시스템이 중단되는 치명적인 장애에 직면했다.
웹을 크롤링해 검색 엔진 인덱스를 생성하는 구글 핵심 시스템이 중단된 건 1999년 10월 일이었다. 사용자는 구글에서 검색할 수 있었지만 예를 들어 2000년 3월 무언가를 검색한 경우 결과는 5개월 전 것에 머물러 있어 최신 뉴스나 웹페이지에 검색 결과로 접근할 수 없는 문제가 계속됐다. 또 사용자 뿐 아니라 다른 중요한 문제도 있었는데 당시 구글은 야후! 검색 엔진을 구동하기 위해 검색 엔진 인덱스를 제공하는 계약을 맺고 있었으며 시스템이 완전히 중단되면 계약은 파기되고 구글은 자금을 모두 소진해 사라질 위험에 처해 있었다고 한다.
2000년 3월 경 구글 창립 시 소프트웨어 엔지니어였던 크레이그 실버스타인을 중심으로 한 시스템 엔지니어가 집중적인 문제 해결 회의를 설치했다. 하지만 4일 동안 코드를 확인했지만 어떤 개선안도 찾지 못했다. 실버스타인은 이후 진행하던 분석은 어느 것도 의미가 없었다며 모든 게 망가져 있었고 그 이유를 알 수 없었다고 회상했다.
한때 미국을 대표하는 컴퓨터 기업 중 하나였던 DEC에서 1999년 초경 구글에 입사한 제프 딘( Jeff Dean)과 마찬가지로 DEC에서 1999년 12월 구글에 막 입사한 산제이 게마왓(Sanjay Ghemawat) 두 사람도 구글에서의 경력은 짧았지만 시스템 문제에 대응하고 있었다. 딘은 이후 구글 AI 부문 책임자로 취임했다.
이들은 DEC 소속 시절부터 깊은 사이였으며 나란히 앉아 공동으로 코드를 작성하는 걸 좋아했다고 한다. 두 사람은 중단된 인덱스를 자세히 조사해 몇몇 단어가 빠져 있거나 순서가 잘못되어 있는 등 코드 결함을 며칠에 걸쳐 발견했지만 명확한 버그는 찾지 못했다. 작업 시작 5일째 두 사람은 문제는 소프트웨어가 아니라 물리적인 것이 아닐까 의심하기 시작한다. 그리고 복잡하고 번잡한 인덱스 파일을 2진수로 표현한 바이너리 코드로 단순화해 기계가 무엇을 보고 있는지 알아내려고 시도했다.
바이너리 코드에서는 모니터에 1과 0의 열이 표시된다. 각 열은 인덱스 내 데이터를 나타내지만 어느 순간 게마왓은 0이어야 할 숫자가 1이 되어 있다고 지적했다. 이에 딘과 게마왓이 잘못 표시되는 단어를 모두 정리하자 일정한 패턴이 나타났다. 결과적으로 기계 메모리 칩이 어떤 이유로 손상되어 있었다는 게 밝혀졌다.
구글 설립은 1998년으로 문제가 발생한 1999년부터 2000년경에는 아직 스타트업처럼 운영되고 있었다고 한다. 실제로 메인보드나 하드 드라이브, 배선 등 다양한 면에서 고장이나 결함이 발생하고 있었으며 미항공우주국 나사(NASA)나 금융 기관 등은 1비트의 0과 1이 하드웨어 문제로 반전되어도 전체에 영향이 생기지 않는 특별한 하드웨어를 사용하고 있었지만 구글에서는 저렴한 컴퓨터를 사용하고 있어 하드웨어 장애를 피할 수 없었다. 결과적으로 딘과 게마왓이 문제가 있는 기계를 보완하는 코드를 작성해 새로운 인덱스가 완성되어 대책 회의는 해산됐다.
이 문제가 발생한 근본적인 원인으로 구글 성립 배경을 들고 있다. 구글 창업자인 래리 페이지와 세르게이 브린은 소프트웨어 엔지니어가 아니라 스탠퍼드 대학 박사 과정에 재학 중인 검색 기술 연구자였다. 보도에 따르면 페이지와 브린의 초기 소프트웨어인 빅파일(BigFiles)은직원으로부터 버그파일(BugFiles)이라고 불렸거나 중요한 인덱스 코드를 작성할 때 문제가 발생하면 처음부터 다시 시작해야 하는 등 소프트웨어 면에서는 문제점이 컸다고 한다. 실리콘밸리 용어로 말하자면 구글은 스케일러블하지 않았다고 말한다.
당시 구글은 메인보드와 하드 드라이브를 조합한 디바이스를 1,500대 쌓아 올렸지만 하드웨어 결함 때문에 그 중 1,200대 정도만 기능했다. 하드웨어 결함으로 인한 장애는 시스템을 계속 파괴하고 있었기 때문에 구글은 컴퓨터를 회복력 있는 전체로 통합할 필요가 있었다. 문제 재발을 방지하기 위해 딘과 게마왓은 하드 드라이브 1대가 고장 나도 시스템 전체가 다운되지 않도록 코드를 작성했다. 2005년 엔지니어링 팀 책임자로 취임한 컴퓨터 과학자 앨런 유스타스는 역설적이지만 대규모 문제를 해결하려면 세부 사항까지 알고 있어야 한다며 딘과 게마왓 은 컴퓨터를 비트 레벨에서 이해하고 있었다고 이들의 능력을 칭찬했다.
구글 엔지니어는 IT 지원 스태프 레벨 1, 대학을 갓 졸업한 레벨 2, 석사 학위를 가진 레벨 3과 같이 단계적으로 등급이 매겨져 있다. 레벨 4에는 수년간 공헌이나 박사 학위가 필요하고 이후 경력을 쌓아도 레벨 5에서 대부분 스태프가 멈춘다. 레벨 6 엔지니어는 상위 10%이며 레벨 7은 레벨 6에서 오랜 실적이 있는 이들이다. 레벨 8은 주요 제품이나 인프라와 관련된 사람이며 레벨 9는 존경심을 갖고 언급되는 유명한 엔지니어가 도달할 수 있다. 레벨 10은 세계를 이끄는 영향력 있는 전문가 임원. 그리고 딘과 게마왓은 구글 시니어 펠로우로 구글 최초이자 두 사람만의 레벨 11로 인정받고 있다.
이들은 두 사람이 컴퓨터 1대를 다루는 페어 프로그래밍을 좋아한다. 게마왓은 왜 페어 프로그래밍이 좋다고 결정했는지 잘 모르겠다며 자신의 사고방식과 궁합이 좋은 사람을 찾을 수 있다면 두 사람이 서로 보완하는 힘이 되며 지금은 왜 더 많은 사람이 하지 않는지 모르겠다고 말했다. 소프트웨어 엔지니어로서 딘과 게마왓만큼 뛰어난 파트너십을 발휘하는 경우는 드물며 더구나 딘과 게마왓은 일 뿐 아니라 사생활에서도 가족을 포함해 밀접하게 연결되어 있다. 보도에선 두 사람의 문제 해결 사례를 구글을 거대하게 만든 우정이라고 표현하고 있다. 관련 내용은 이곳에서 확인할 수 있다.