Outsider's Dev Story

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

기술 뉴스 #126 : 19-05-15

웹개발 관련

  • HTTP headers for the responsible developer : 제목은 HTTP 헤더라고 되어 있지만, 웹페이지를 더 안전하고 빠르게 하려고 다양한 HTTP 헤더와 HTML 태그를 설명하고 있다. HTTPS로 페이지를 안전하게 관리하는 방법부터 CSP와 인코딩 방법 등 필요한 이유와 사용방법을 설명하는데 콘퍼런스에서 발표한 내용을 글로 정리한 것이다. 이런 쪽에 관심 있다면 알만한 부분이긴 하지만 내용이 잘 정리되어 있고 이미지 사이즈를 제어하는 Accept-CHFeature-Policy는 잘 몰랐던 부분이라 다음에 사이트를 만들 때 자세히 봐야겠다 싶다.(영어)
  • Google I/O 2019: Day 1 후기 : 이번에 열린 구글 I/O에 참석한 후기인데 웹 관련 기술을 위주로 이번 I/O에서 어떤 발표를 했는지 살펴볼 수 있다. 특히, Duplex on the Web, <img loading="lazy" />이나 WebAuthn등이 흥미로웠다. Day 2 후기 참고.(한국어)
  • 마이리얼트립 웹사이트 성능 측정 및 최적화 Part 1. 리소스 로딩 : 마이리얼트림의 웹사이트의 사용자가 여행지 등 네트워크가 좋지 않은 곳에서 이용하는 경우가 많으므로 초기 웹사이트의 로딩 속도를 높이기 위해 최적화한 과정을 정리한 글이다. webpack-bundle-analyzer로 자바스크립트 파일을 분석해서 불필요한 용량을 제거하고 Code splitting을 적용하고 외부 라이브러리 사용을 최적화하고 이미지 스프라이트를 적용해서 로딩 사이즈를 많이 줄이고 메인 페이지의 구성상 초기에 불러오지 않아도 되는 이미지와 내용을 지연 로딩을 통해서 속도를 개선한 내용이 나와 있다.(한국어)
  • The new evergreen Googlebot : 이제 웹사이트를 크롤링하는 구글봇이 최신 크로니움 렌더링 엔진으로 동작(현시점에서는 74 버전)으로 동작한다고 한다. 이로써 구글봇이 ES6 등 최신 JS 기능을 지원하고 Lazy Loading이나 웹 컴포넌트 등을 지원한다고 한다.(영어)

그 밖의 프로그래밍 관련

  • Introducing GitHub Package Registry : GitHub에서 저장소에 바로 연결해서 운영할 수 있는 패키지 저장소를 공개했다. 이곳에 배포된 패키지는 GitHub의 CDN으로 배포되고 npm, Maven, RubyGems, NuGet를 지원한다. 현재는 아직 클로즈 베타 상태이다.(영어)
  • git rebase in depth : git rebase는 Git에서 배우기 어려워하는 기능 중 하나이지만 배워두면 강력한 기능이기도 하다. Reabse를 이용해서 커밋을 합치고 순서를 조정하고 다시 쪼개는 방법을 설명하는 문서인데 따라해 볼 수 있도록 설명하고 있어서 이해하기가 좋다.(영어)
  • (번역) WSL 2를 공개하며 : 이번 Build 2019에서 Microsoft가 공개한 WSL 2(Windows Subsystem for Linux)을 공개하는 글을 번역한 글이다. WSL 2에서는 Linux 커널이 완전히 내장되었고 이번 버전에서는 4.19 버전의 커널을 포함 시킬 예정이라고 한다. 커널을 내장함으로써 WSL 1보다 훨씬 빠르게 실행할 수 있고 업데이트도 빨리 적용할 수 있게 되었다.(한국어)
  • 타다 클라이언트 개발기 : 언젠가부터 믿고 읽게 되는 타다의 글이다. 3달 반 정도의 기간 안에 타다 앱을 만들어서 배포한 과정을 설명하고 있다. 기간이 짧았기 때문에 필요한 스펙을 제한해서 정하고 RIBs라는 iOS, Android에서 같이 사용할 수 있는 오픈소스 아키텍처를 사용하고 Protocol Buffer로 서버와 데이터를 주고받았다고 한다. 각 영역에서 어떤 기술을 선택해서 사용했는지 설명하면서 성공적으로 출시한 이후의 회고까지 잘 나와 있다.(영어)
  • 딥러닝 추천 시스템 in production : 당근마켓에서 사용자가 보는 피드에 개인화 추천을 하기 위해 추천 시스템 개발에 대한 접근은 딥러닝 개인화 추천에서 설명하고 이 글에서는 Kubeflow Pipelines를 사용해서 어떻게 서비스에 적용했는지를 설명하고 있다. 유튜브와 핀터레스트에서 공개한 내용을 통해 2단계 학습을 적용하는 시스템을 실제 당근마켓 서비스에 맞게 적용한 과정이 자세히 나와 있다. 딥러닝은 거의 모르기는 하는데 실제 서비스의 적용하는 과정이라서 재미있게 읽었다.(한국어)
  • 구글, 도커 컨테이너 기반 서버리스 서비스인 클라우드 런 발표 : 이번에 발표된 GCP의 클라우드 런을 설명하는 글이다. 클라우드 런은 서버리스로 Docker 컨테이너를 바로 운영할 수 있는 서비스로 마치 AWS의 Lambda와 Fargate의 장점을 섞어놓은 듯한 서비스인데 간단한 글이지만 이 글을 통해 클라우드 런의 특징을 이해할 수 있다.(한국어)
  • Linkerd or Istio? : 서비스 메시 프로젝트인 Istio와 Linkerd의 기능을 비교하는 글이다. 트래픽 관리, 보안, 설치, 지원 환경, 관측성, 정책 관리, 성능으로 나누어서 특징을 설명하고 영역마다 기능을 표로 만들어서 비교해 줘서 차이점을 쉽게 파악할 수 있다.(영어)

볼만한 링크

  • 뛰어난 개발자는 뽑히는 게 아니라 길러집니다. : 뛰어난 개발자가 시장에 실제로 많지 않기 때문에 뛰어난 개발자를 찾는 채용 과정에 더 노력하기보다는 채용과정을 완화하고 개발자를 뛰어난 개발자로 만드는 멘토링 과정에 신경 써야 한다는 내용의 글이다. 멘토링이 중요하다는 점에서는 동의하긴 하지만 어떻게 해야 하는지는 아직 잘 모르겠긴 하다.(한국어)
  • 밀레니얼즈가 사랑하는 Lemonade는 어떻게 보험산업을 파괴하고 있는가? : 밀레니얼즈를 타겟으로 보험료가 싸면서도 보험금을 청구하면 봇이 알고리즘으로 검사해서 빠르게 보험금을 지급하는 Lemonade라는 회사를 소개하는 글이다. Lemonade의 구조까지 자세히 나와 있는 것은 아니지만, 몰랐던 스타트업이 전통적인 보험산업을 도전하고 있다는 점에서 관심이 가는 접근이었다. 이미 Lemonade는 꽤 많은 투자를 받았고 보험 경험이 없어서 손실률이 높았지만, 점점 낮추고 있다고 한다.(한국어)
  • JMAP: A modern, open email protocol : IETF에서 오래되고 사용하기 어려운 IMAP같은 이메일 프로토콜을 개선하기 위해서 사용하기 쉬운 JAMP 이메일 프로토콜을 만들어서 공개했다. 차후에는 같은 프로토콜로 연락처와 일정도 동기화할 수 있다고 한다.(영어)
  • 4년을 기다린 인프런 서비스 리뉴얼 오픈 : 동영상 강의 플랫폼인 인프런이 초기 워드프레스로 구축한 서비스를 4년 만에 리뉴얼 하게 된 과정을 설명하는 글이다. 기술 스택에 관한 얘기가 있지만 상세한 아키텍처에 대한 이야기라기 보다는 1명인 회사에서 투자받고 9명이 되기까지 리뉴얼을 하려고 했던 큰 노력과 마침내 오픈한 리뉴얼 프로젝트의 과정 및 후기에서 그동안의 고생이 느껴진다.(한국어)
  • 안드로이드 Q의 새로운 기능을 소개합니다 : 안드로이드의 10번째 버전 안드로이드 Q의 베타 버전이 공개되었다. 5G를 지원하는 최초 OS로 온디바이스 머신러닝 기능 등이 추가되었다.(한국어)

IT 업계 뉴스

  • 우버, 뉴욕증권거래소 상장 첫날 7.6% 주가 하락 : Uber가 주당 45달러로 Facebook 이후 최대 규모로 상장했지만 7.5% 떨어진 41.57로 거래를 마쳤다. 영어지만 The Verge의 UBER GOES PUBLIC: EVERYTHING YOU NEED TO KNOW ABOUT THE BIGGEST TECH IPO IN YEARS를 읽어보면 이번 IPO 가격 책정의 배경이나 전망 등을 좀 더 살펴볼 수 있다.(한국어)
  • Git ransom campaign incident report—Atlassian Bitbucket, GitHub, GitLab : 지난 5월 2일 Bitbucket, GitHub, GitLab 모두에서 일부 사용자의 저장소(공개 비공개 모두)가 삭제되는 랜섬웨어 공격이 발생하고 이를 해제하려면 0.1 비트코인을 보내라는 메시지가 남겨졌다. 세 곳이 모두 발생해서 세 회사가 협업해서 이 문제를 조사했고 해당 공격은 모두 유효한 패스워드, 키, 토큰으로 이루어졌고 공격자의 IP와 같은 곳에서 이러한 정보의 덤프 파일이 올려져 있는 것을 발견했다고 한다. 현재 공격당한 사용자의 저장소는 모두 복구되었고 공개되어 있던 키 등도 모두 리보크했다고 한다.(영어)

프로젝트

  • go-perfbook : 고성능 Go 코드 작성에 관한 베스트 프렉티스를 모아놓은 문서.
  • This person does not exist : 페이지를 새로 고침할 때마다 AI가 만든 존재하지 않는 사람들의 얼굴 사진을 만들어 주는 사이트.
  • React Native for Windows : Windows 앱 용 React Native.
  • NetData : 실시간 성능 모니터링 도구.
  • WebAssembly Micro Runtime : 인텔에서 만든 스탠드얼론 WebAssembly 런타임.
  • Simplify : Gmail의 UI를 간단하게 만들어 주는 브라우저 확장.
  • DeepScan : JavaScript 코드 정적 분석 서비스로 오픈소스에서는 무료로 이용할 수 있다.
  • Full Metal Jacket : 1995년 미리내 소프트에서 만든 풀 메탈 자켓의 소스가 공개되었다.

버전 업데이트

2019/05/15 16:14 2019/05/15 16:14

[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