Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

[Book] 구글 스토리

구글 스토리
책 표지 구글 스토리 - ⭐⭐⭐⭐
데이비드 A. 바이스 지음
마크 맬시드 지음
우병현 역
인플루엔셜

페이지는 다음과 같이 말했다. "만약 큰 회사를 가지고 있는데, 할 수 있는 일이 오직 다섯 가지뿐이라면 그건 어리석은 일이라고 항상 생각해왔습니다. 신생 기업의 경우, 한 가지 일을 잘 수행하지 못하면, 나머지 일도 할 수 없게 됩니다. 하지만 대기업의 경우와 스타트업의 경우는 달라야 한다고 생각합니다."

이 책은 구글이 만들어지고 현재까지 오기까지의 내용을 정리한 책으로 2005년 처음 나왔다가 구글 창립 20주년을 기념해서 내용을 업그레이드해서 다시 나온 책이다. 2005년에 나왔던 구글 스토리는 보지 않았고 다양한 글이나 책을 통해서 구글의 이야기는 어느 정도 알고 있지만, 구글이 걸어온 길을 다시 보고 싶었다.

이전 버전과 비교해 보진 않았지만, 그 사이에 구글은 알파벳이란 모회사가 생기고 사업 규모가 더욱 커졌는데 개정판이다 보니 주 내용은 2005년까지의 일에 집중되어 있다. 그래서 스탠퍼드 대학교에서 래리 페이지와 세르게이 브린이 구글을 창업하고 검색엔진 시장에서 경쟁하면서 성장하고 지메일 등의 서비스를 내놓은 초반에 대부분 내용이 정리되어 있다. 사실 그 뒤의 이야기들도 궁금하긴 했는데 알파벳을 만들고 유전자 검색이나 자율주행 같은 사업은 뒷부분에서 간략히 설명하고 끝난 점은 좀 아쉬웠다.

"불가능을 무시하는 건전한 도전 정신을 지녀라. 정말로 좋은 말 아닙니까? 여러분은 다른 이들이 잘 하지 않으려는 일을 과감하게 시도해야 합니다."

여러분이 성공할 수 있는 유일한 방법은 우선 실수를 많이 하는 것입니다. 더 많이 실패할수록 가치 있는 일을 할 가능성이 높아진다는 것을 깨달은 것이다.

구글 홈페이지를 처음으로 방문한 사용자는 가끔 너무나 평범한 디자인을 보고 놀라기도 한다. 화려하게 꾸며진 다른 웹사이트나 당시 유행과 달리 구글 사이트는 단순하고 별 꾸밈이 없었다. '간결한 것이 더 아름답다Less is more'는 말은 구글을 두고 하는 말이었다.

래리 페이지와 세르게이 브린이 스탠퍼드에서 구글을 창업한 과정은 익히 알고 있는 얘기지만 잘 정리된 내용을 읽으니 새로 기억도 나면서 재미있었다. "아 맞다" 구글이 이랬었지라는 재미가 있었다. 당시에 개발자는 아니었지만, 구글을 처음 이용했을 때 너무 깔끔한 검색 화면(지금도 그렇지만)이 맘에 들었던 거와 지메일 쓸 때 처음에는 초청장을 받아서 베타 버전 달고 사용했었지 하는 기억이 새록새록 나서 재밌었다.

알타비스타, 익사이트, 라이코스 등 유명한 상업 검색엔진들은 가장 중요한 사업 영역인 검색을 향상하는 데 투자를 게을리하고 있었다. 대주주들이 검색엔진의 성능 개선에 관심이 없었고, 닷컴 열풍이 불자 기술 개발보다는 광고 수익 같은 수익성만을 좇았던 것이다.

다른 기업들이 검색을 하나의 상품에 불과하다고 우롱하며 검색 사업을 내던지고 있을 때 구글이 이 분야에서 독보적인 지위를 차지하겠다는 것. 이들은 검색이야말로 확장하고 있는 월드와이드웹을 항해하는 데 가장 중요한 역할을 한다고 굳게 믿었다.

지금은 구글의 검색이 얼마나 중요하고 강력한지 모르는 사람이 없지만, 결과를 아는 입자에서 당시에 알타비스타, 야후, AOL 등 대형 업체들이 검색엔진을 등한시하고 구글은 이 사이에서 검색엔진에 집중해서 성장하는 모습을 보는 것은 꽤 재미가 있었다. 지금 보면 당연한 검색의 중요성을 눈치채지 못한 당시의 상황을 상상해 보게 되었고 검색 시장이 점점 커지면서 경쟁자와 또 경쟁만 하는 것이 아니라 제휴를 맺어서 시장 파이를 키우는 전략이 무척 흥미로웠다. 특히 무너져가던 애스크 지브스가 구글과 협약을 맺어서 회복하는 모습을 보면서 결과를 모르는 상황에서 얼마나 큰 모험이었을까 싶은 생각이 들었다.

1998년 발표한 글에서 강한 어조로 광고에 대한 검색엔진의 입장을 이렇게 표현한 바 있다. "광고 수익에 의존하는 검색엔진은 '어쩔 수 없이 광고주에게 편향'될 수밖에 없다. 소비자가 원하는 검색결과를 제공하기 위해 광고를 적게 싣는 검색엔진이 더 바람직하다." 하지만 동시에 일부 사용자는 일종의 정보로서 광고를 원할 수도 있다는 생각이 들었다.

브린과 페이지는 광고를 사악한 대상으로 여겼던 생각을 바꿔, 광고도 온라인 검색 사용자에게 제공할 수 있는 중요한 정보의 일부분으로 바라보기 시작했다.

또한, 검색 광고도 지금은 당연한 접근이지만 오버추어를 벤치마킹해서 기존과 다른 검색 광고 시장을 만들어내고 이 때문에 법정 공방까지 가는 일도 흥미로웠다. 당시에도 배너광고라는 형태는 있었던 것 같지만 키워드를 중심으로 입찰해서 광고하고 이 시작이 실제로 꽤 크다는 것을 오랫동안 숨겨오면서 검색엔진에서 수익을 만들어가는 과정은 흥미진진하다. 구글을 처음 썼을 때 나도 "구글에 광고가 있어?" 하는 반응을 했던 기억이 있는데 검색 결과를 헤치지 않으려고 영역을 분리해서 광고를 노출하는 방식을 선보이는 과정까지도 잘 나와 있다. 오버추어라는 추억의 이름도 오랜만에 들었지만, 이 가운데 방향이 조금만 달라졌어도 지금과 같은 형태의 검색 키워드 광고를 사용하고 있었을까 하는 생각도 들었다.

"구글의 광고는 아주 효과적인데, 이는 대부분의 사람들이 그것을 광고로 인식하지 못하기 때문이다. 이것은 과연 사악하지 않은 것인가?" 앨런 도이치먼(Alan Deutschman)은 〈패스트컴퍼니Fast Company〉의 한 기사에서 구글의 전략에 의문을 던졌다.

그동안 유명한 구글의 "사악해지지 말자"라는 표어가 사실이 아니라는 얘기도 많이 들었는데 구글에서 발행한 것은 아니더라도 구글의 일대기 같은 이 책에 이 말이 너무 많이 나와서 사실이 아니라는 말이 잘못된 거구나 하는 생각을 하게 되었다. 구글에서 좋아하는 부분도 있고 최근에는 안 좋아하는 부분도 있지만, 엔지니어가 좋아하는 회사로 잘 키워왔다는 생각이 책을 읽으면서 많이 들었다. 지금은 너무 대기업이 되었지만 이래서 내가 구글을 좋아했었지 하는 느낌이랄까?

2019/05/13 11:01 2019/05/13 11:01

기술 뉴스 #125 : 19-05-01

웹개발 관련

  • Faster input events with Facebook’s first browser API contribution : 웹페이지에서 다운받은 JavaScript 파일을 실행할 때는 싱글 스레드라 다른 작업을 못 하게 되는데 큰 파일을 한 번에 처리하면 로딩속도는 빠르지만, 사용자가 인터렉션을 하기까지 시간이 걸리고 여러 파일로 쪼개면 인터렉션은 빠르지만, 로딩 속도가 느린 문제가 있다. 이를 해결하기 위해 Facebook에서 isInputPending이란 API를 만들어서 W3C에 제안하고 크롬과 협업해서 크롬 74에 포함되었다. isInputPending를 사용하면 큐에 들어간 이벤트가 있는지 빨리 확인할 수 있어서 로딩속도와 인터렉션 시작이 느린 문제를 둘 다 해결할 수 있다.(영어)
  • Introducing the Open Source and Full-Featured Seed Dashboard Plans : 브라우저 테스트 플랫폼인 cypress에서 대시보드 기능까지 완전히 사용할 수 있는 오픈소스 플랜을 발표해서 오픈소스 프로젝트에서는 무료로 사용할 수 있게 되었다.(영어)
  • Instant-loading AMP pages from your own domain : google.com/amp로 제공되던 AMP 페이지를 Signed Exchanges를 통해서 서비스 프로바이더의 도메인에서 직접 제공할 수 있게 되었다.(영어)
  • JavaScript's new #private class fields : 문법과 기능 모두를 좋아하진 않지만, private 클래스 필드가 최신 크롬과 Node.js v12에 들어왔는데 이 사용법을 설명하는 글이다. 현재 이 기능은 stage 2단계이다.(영어)

그 밖의 프로그래밍 관련

  • Open Distro for Elasticsearch Review : Elasticsearch의 상용라이센스를 문제 삼으면서 Amazon이 직접 오픈소스로 배포한 Open Distro for Elasticsearch를 Elasticsearch와 기능 비교를 하고 docker-compose를 이용해서 실행하는 방법 및 Elasticsearch Apache 2.0 라이센스 버전에서 제공하지 않는 기능 위주로 설정하는 방법을 설명하는 글이다.(영어)
  • Editor 01. Google Docs 같은 실시간 협업 에디터를 만드는 방법 : 실시간 협업 에디터를 만들 때 각 사용자의 변경 사항을 충돌 없이 합치는 접근 방법을 설명하는 글이다. Git처럼 로컬에서 만들어서 머지하는 방식이 아닌 실시간으로 변경하면서도 각 사용자의 변경내용이 문제없이 합쳐질 때 어떤 문제가 있는지 부터 이를 해결하기 위한 데이터 타입으로 LinkedList, Logical Clock, RGA, RGATreeSplit의 방식을 설명하고 있다.(한국어)
  • Kubernetes 03 – Kubernetes Cluster on AWS with kops : kops로 AWS에 Kubernetes 클러스터를 구성하는 방법을 설명하는 글로 기존 VPC 위에 설정하는 방법부터 예제 코드까지 함께 제공하고 있다.(한국어)
  • Announcing a new — experimental-modules : Node.js 8.9.0부터 --experimental-modules 플래그를 통해 ES modules를 사용할 수 있었는데 Node.js v12에서는 그동안의 피드백을 통해 완전히 새로 만든 구현체가 포함되었고 기존 코드에서 ES modules를 어떻게 사용할 수 있는지를 설명하는 글이다. 기존처럼 .mjs 확장자나 프로젝트 package.json"type": "module"를 지정해서 ES modules로 인식할 수 있으며 CJS가 섞여 있는 경우 .cjs 확장자를 사용하거나 하위 디렉토리 package.json"type": "commonjs"를 지정할 수 있다고 한다. v12가 LTS가 되는 10월 전에 --experimental-modules 플래그를 제거하는 것이 목표라고 한다.(영어)
  • Announcing WAPM: The WebAssembly Package Manager : wasmer에서 WebAssembly를 이용해서 어디서나 실행할 수 있는 유니버설 바이너리를 배포하고 사용할 수 있도록 패키지 매니저인 wapm을 공개했다.(영어)
  • Run your GitHub Actions workflow on a schedule : GitHub Actions에 새로 추가된 스케쥴 기능의 사용방법을 설명하는 글이다. 이 기능을 이용하면 크론탭을 쓰듯이 GitHub Actions를 주기적으로 실행할 수 있다.(영어)

볼만한 링크

IT 업계 뉴스

프로젝트

  • Accessibility Insights : 웹사이트의 접근성 지원 여부를 검사해주는 크롬 확장으로 Microsoft에서 만들었다.
  • Repo Remover : 다수의 GitHub 저장소를 지우거나 아카이빙 할 수 있는 웹 서비스.

버전 업데이트

2019/05/01 19:31 2019/05/01 19:31