구글을 성장 시킨 우정 (번역)
원문: The Friendship that made Google Huge (The New Yorker, December 10 2018, James Somers)
구글을 성장 시킨 우정
제프 딘과 산제이 게마와트는 같은 컴퓨터에 코딩을 하여 구글과 인터넷의 미래를 바꿨다.
2000년 3월 어느날, 구글의 가장 뛰어난 6명의 엔지니어가 간이 워룸(War Room)에 모였다. 구글은 여지것 경험해보지 못한 긴급사태를 겪고 있었기 때문이다. 작년 10월에, 구글의 주 기능인, 웹을 크롤링해서 “index”를 만드는 기능(검색 데이터를 쌓는 능력)이 더 이상 작동하지 않았기 때문이다. 유저들은 Google.com에 쿼리를 보낼수 있었지만, 결과는 5개월 전에 데이터들만이 보일 뿐이였다. 상황은 생각보다 복잡했다. 당시 구글의 공동 창립자, 레리 페이지와 세르게이 브린은 야후와 협상 중이 였다. 주 목적은 지금 현재 보유 하고 있는 검색 엔진의 10배의 index를 사용할 수 있는 엔진을 약속 했기 때문이다. 그 당시 World Wide Web이 일년 사이에 두배가 성장했다는 것을 볼 때, 성장속도를 따라 가기 위해서 꼭 필요한 딜이 였다. 만약 실패한다면, 구글은 시대에 뒤쳐진 기술이 되고 야후와의 협상이 결렬됨과 동시에 현재 보유하고 있는 펀딩을 모두 태워버릴 것이 뻔했다.
회의실에는 엔지니어들이 사다리에 문짝을 두고 컴퓨터를 세팅해 두었다. 크레이그 실버스타인(Craig Silverstein), 27살의 약간의 명성과 높은 목소리를 갖고 있는,은 한쪽 끝의 벽에 앉아 있었다. 실버스타인은 구글의 첫 직원이였다. 구글이 아직 세르게이 브린의 거실에 있을때 입사를 하였는데 상당수의 코드를 본인이 직접 다시 작성하였다. 4일 밤낮이 지나고, 실버스타인과 보그단 코코셀(Bogdam Cocosel, 루마니아에서 온 시스템 엔지니어)는 결국 아무것도 이루지 못하였다. “우리가 한 분석이 전혀 앞뒤가 맞지 않았습니다.” 실버스타인이 그 때를 회고 하면 말했다. “모든게 부서졌었죠, 그리고 우린 그 이유를 알지 못했습니다.”
실버스타인은 그의 왼쪽 어깨넘어있는 산제이 게마와트를 거의 존재를 거의 느끼지 못했었다. 산제이는 조용한 31살의 MIT 졸업생으로 두꺼운 눈썹과 검은 머리가 살짝 희끗희끗변하고 있었다. 산제이는 몇개월 전, 12월,에 구글에 입사를 했었다. 그는 제프 딘, 팔다리가 길고 에너지가 넘치는 Digital Equipment Corpartion(D.E.C) 출신 31살 엔지니어,를 따라 들어왔었다. 제프 딘은 산제이가 들어오기 10달전에 입사를 했었었다. 그 둘은 특이하게 가까운 사이였는데, 코드를 공동으로 작성하는 일을 선호했었다. 워룸 안에서 제프 딘은 본인의 책상을 버리고, 의자를 산제이의 책상가까운 곳에 끌고 갔다. 산제이가 키보드로 코드를 작성하는 동안, 제프 딘은 뒤에 기대서 뉴스 앵커 귀에 속삭이는 프로듀서처럼 수정과 회의를 하고있었다.
제프와 산제이는 정지된 index들을 끄집어 내기 시작했다. 그 둘은 몇가지 단어들이 없어진 것을 확인 하였다. “Mailbox”(메일함)을 검색 하였을때 아무 검색 결과를 얻을 수 없었다. 그리고 몇가지 단어는 순서대로 결과를 리턴하지 않았다. 몇 일동안 그들은 코드의 결함을 찾으려고 노력을 하였다. 모든 섹션을 검토 한결과, 모든것은 제 자리에 있었다. 버그를 찾을 수 없었다.
프로그래머들은 가끔 소프트웨어를 몇가지 레이어(계층) 구조를 가지고 있다고 구상한다. 위에서 유저 인터페이스 부터 시작을 해서, 내려가는 구조 말이다. 이 구조에 아래로 내려가다보면, 소프트웨어가 하드웨어를 만난다. 이 시점에서 플라토닉하게 순서대로 구성이 되있던 코드들은 전기작용과 실리콘으로 이루어진 기본적인 물리로 변한다. 워룸에서 5번째 날, 제프와 산제이는 지금 현 문제가 코드의 논리적이 문제가 아닌, 기계의 물리적인 결함일수도 있다는 생각을 하기 시작했다. 그들은 모든 index파일을 가장 기본적인 형태로 보기 시작 하였다, 바로 이진수로 이루어진 코드였다. 그 둘은 기계가 보는 것을 보고 싶었다.
산제이의 모니터에는 두꺼운 0과 1로만 이루어진 세로줄들이 나타났다. 각 가로줄은 indexing이 된 단어를 의미 하였다. 산제이가 한 지점을 가리키면 말 하였다. “여기 1은 원래 0이 되어야해” 제프와 산제이가 문제가 생간 단어들을 모두 끄집어내기 시작하자, 일정한 패턴이 보이기 시작했다, 같은 종류의 문제가 모든 단어에 존재했다. 구글의 하드웨어 메모리 칩에 손상이 가있었던 것이다.
산제이는 제프를 바라보았다. 몇 달동안, 구글은 예전보다 훨씬더 많은 하드웨어 고장이 나고 있었다. 문제는, 구글이 커지면서, 구글의 연산 인프라역시 커진다는 것이였다. 컴퓨터 하드웨어가 고장나는 경우는 거의 없다, 다만 그 한계를 넘으면 항상 고장이 나있는 상태가 된다. 선이 닳는다던가, 하드 드라이브가 부서진다던가, 마더보드가 가열된 경우들 말이다. 많은 기계들은 처음부터 제 기능을 하지 못할대도 있다, 어떤 기계는 점점 더 느려진다. 굉장히 희안한 요인들이 작용을 할 수도 있다. 슈퍼노바가 폭발하면, 폭풍파가 고에너지의 입자를 방출한다. 과학자들은 입자 하나가 매우 낮은 확률로 지구에 컴퓨터의 칩에 부딪힌다면 0과 1이 서로 바뀌는 사태가 “일어날수도” 있다고 한다. 세계에서 가장 탄탄한 컴퓨터 시스템을 보유하고 있는 곳(NASA, 금융기관)들은 특별한 장치들을 추가하여 이런 일을 방지한다. 하지만 구글은, 아직 스타트업처럼 운영되고 있었고, 싼 텀퓨터들을 사용하여 이런을 방지 할 수 없었다. 구글은 결국 변곡점에 도달하였다. 구글의 컴퓨터 클러스터는 너무 방대해져 가장 일어나지 않을 것같은 하드웨어 문제들이 일어나고 있었다.
제프와 산제이는 같이 문제가 있는 기계들을 보정할수 있는 코드를 짰다. 조금 뒤, 새로운 index들이 돌아왔고, 워룸은 해체되었다. 실버스타인은 당황하였다. 그는 뛰어난 디버거였다. 버그를 찾는 법은 계속 밑으로 파고 드는 것이다. 다만 제프와 산제이는 휠씬 더 깊이 내려갔을 뿐이다.
3월에 일어난 index관련 이슈전에는 구글의 시스템은 공동창업자가 대학원(스탠포드)에서 작성한 코드들이 기본에 깔려있었다. 레리 페이지와 세르게이 브린은 “전문적인” 소프트웨어 엔지니어는 아니였다. 그들은 학자출신에 검색 관련 첨단 기술을 실험하고 있었던 사람들이였다.
Comments