Outsider's Dev Story

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

기술 뉴스 #105 : 18-07-02

웹개발 관련

  • 웹브라우저 user-agent string 의 역사 : 브라우저의 user-agent를 보면 왜 이렇게 복잡하고 다른 브라우저의 이름을 사용하는지 이해하기 어려운데 오래된 번역 글이지만 모자이크부터 user-agent가 왜 수많은 브라우저에서 지금처럼 혼란스러운 문자열을 사용하는지 이해할 수 있다.(한국어)
  • [번역] 깊이 있는 리액트 개발 환경 구축하기 : Learn Webpack for React의 번역 글이다. 요즘은 create-react-app으로 구성하는게 보통이지만 프론트엔드 환경이 워낙 복잡해서 그 내용을 다 이해하기가 어려운데 이 글에서는 직접 의존성을 설치하고 React 앱을 만들면서 HMR, 코드 스플릿 등의 설정하며 이해하기 쉽게 각 webpack의 설정과 babel 설정을 설명하고 있다.(한국어)
  • Rendering large lists with React Virtualized : React에서 많은 수의 리스트를 출력하면 렌더링 속도도 느리고 스크롤 반응이 느리게 되는데 이를 react-virtualized가 어떻게 해결하는지 설명한 글이다. 기본 접근은 모든 아이템을 다 그리지 않고 화면에 보이는 부분만 그려서 속도를 높이는 것으로 이를 활용해서 60fps로 성능을 높인 것을 보여주고 브라우저 크기가 달라지만 자동으로 크기를 맞춰주는 부분까지 설명하고 있다.(영어)
  • REST vs. GraphQL: A Critical Review : REST와 GraphQL을 비교한 글이다. 내가 느끼기에는 GraphQL을 좀 더 지지하고 있지만 두 API의 특징을 표로 깔끔하게 정리하고 있고 장단점이 잘 나와 있어서 어느 쪽을 선택해야 할지 고민할 때 참고할 수 있는 글이다. REST를 이해하기는 꽤 어려우므로 전혀 모르고 있다면 그냥 GraphQL을 쓰라고 하고 있다.(영어)
  • What is the CSS ‘ch’ Unit? : CSS의 단위 중 하나인 ch에 대해 에릭 마이어가 설명한 글이다. 보통 ch는 캐릭터 글자 수로 가독성을 위해 한 줄의 글자 수를 제한하려고 사용한다고 설명하지만, 이는 0을 기분으로 크기를 잡으므로 고정폭 글꼴에서는 맞는 말이지만 다른 글꼴에서는 다르게 나타날 수 있다.(영어)

그 밖의 프로그래밍 관련

  • React Native at Airbnb : 2016년부터 React Native를 도입했던 Aribnb가 React Native를 버리고 네이티브 개발로 전환하면서 그동안의 경험을 5개의 글(2, 3, 4, 5)로 정리했다. 단순히 React Native의 사용뿐 아니라 React Native를 선택하면서 목표로 했던 점과 DSL(Design Language System)이나 다른 React Native 관련 인프라를 만들어서 개선했던 점이 정리되어 있다. 성능도 잘 나오고 코드도 많이 공유할 수 있지만, 생태계가 아직 부족하고 React Native가 아직 초반이라서 대응해야 할 부분이 많은 등 왜 다시 네이티브 개발로 바꾸는 선택을 했는지 잘 정리되어 있다. 모든 조직이 React Native가 어울리지는 않으므로 Airbnb라는 큰 기업이 React Native를 신중하게 선택하고 다시 바꾸기까지의 고민이 고스란히 남아있는 이 글은 React Native를 고민하고 있다면 정말 소중한 글이다.(영어)
  • MySQL High Availability at GitHub : GitHub에서 데이터를 모두 저장하고 있는 MySQL의 가용성을 높이기 위해 개선한 내용이 정리되어 있다. 마스터 노드가 장애 났을 경우 이전에는 VIP와 DNS를 통해서 변경을 가했으나 이 경우 기존 서버와의 연결을 제대로 끊기지 않고 시간이 걸리는 문제를 해결하기 위해 orchestrator에 Consul과 GLB/HAProxy를 어떻게 이용해서 개선했는지가 잘 정리되어 있다.(영어)
  • Threads in Node 10.5.0: a practical intro : Node.js 10.5.0에 추가된 worker_threads의 사용방법을 설명하는 글이다. Node.js는 싱글 스레드이지만 이번에 워커 스레드가 추가되어 CPU 작업이 많은 경우 워커 스레드를 이용할 수 있게 되었다. 아직 워커 스레드는 실험 상태이므로 언제든 호환성을 깨뜨리는 변경사항이 생길 수 있다.(영어)
  • 구글 I/O 2018 안드로이드 파트 리뷰 : 얼마 전 열린 구글 I/O 2018에서 안드로이드 관련 부분을 정리한 글이다. 구글 I/O의 많은 세션을 다 보기 어려운데 안드로이드 앱의 동적 배포나 새로 공개된 도구나 기술들이 정리되어 있다.(한국어)
  • Web Assembly and Go: A look to the future : Go 1.11에 추가될 Web Assembly 지원을 사용해서 Go 언어로 To do 앱을 만들어 보면서 사용한 경험을 정리한 글이다. Go를 JavaScript로 변환할 수 있는 GopherJS와 Go/wasm이 어떻게 다르게 동작하는지도 나와 있다.(영어)
  • [Go로 구현하는 블록체인] Part 1: 기본 프로토타입 : Building Blockchain in Go. Part 1: Basic Prototype의 번역 글로 Go 언어로 블록체인을 구현하는 튜토리얼이다.(한국어)
  • 이미지 탐지기 쉽게 구현하기 : 당근마켓에서 캐릭터 이미지를 식별하기 위해서 Tensorflow Hub를 이용해서 "당근이"라는 이미지를 구별할 수 있게 구현한 과정이 나와 있다. 딥러닝은 잘 모르지만, 너무 간단한 구현에 놀랐다.(한국어)

볼만한 링크

  • 10배 뛰어난 개발자 되기 : "10배 뛰어난 엔지니어는 남들보다 10배 뛰어난 사람이 아니라, 주변 사람을 10배 뛰어나게 만드는 사람이다."라는 요지의 글로 더 나은 동료가 되기 위한 10가지 접근 방법을 정리한 글이다. 요즘 협업이나 팀 문화에 대해서도 많이 생각하고 있어서 와닿는 부분이 많았다.(한국어)
  • X-Window 탄생 : X-Window의 탄생과정을 만화와 함께 설명한 글이다. 최근 Wayland에 대해서도 알았고 X-Window의 역사를 몰랐기에 재밌게 봤다.(한국어)
  • OWASP Mobile Security Testing Guide : OWASP(Open Web Application Security Project)에서 Android와 iOS 앱의 보안 테스트에 대한 안내를 책으로 묶어서 발간했다. Leanpub에서 무료로 이북을 다운로드 받을 수 있다.(영어)

프로젝트

  • mkcert : 로컬에서 개발용 인증서를 생성할 수 있는 CLI 도구.
  • DensePose : 실시간으로 이미지를 3D 표면으로 매핑해주는 RCNN.
  • DevTube : 개발 관련 동영상을 검색할 수 있는 서비스.
  • Material Dashboard : Bootstrap 4 기반의 머터리얼 디자인 대시보드.

버전 업데이트

2018/07/02 23:04 2018/07/02 23:04

GitHub 인수를 보며 드는 생각

2주 정도 전에 Microsoft가 GitHub을 75억 달러(약 8조 원)에 인수했다. Facebook이 Instagram을 10억 달러에 인수하고(지금 와서 보면 정말 싸게 샀다고 생각하지만...) Facebook이 WhatsApp을 190억 달러 인수한 걸 생각하면 아주 많지도 적지도 않은 금액이다.

인수 결과가 발표되기 전에 온라인에서 소문이 들렸지만 별로 신경 쓰지 않았다.

위 트윗을 올리고 이틀 만에 바로 인수 뉴스를 접했다.

처음에는 거부감이 많이 들었는데 "왜 거부감이 들지"라고 생각해 보니 위의 이유였다. 인수되고 2주 정도가 흘렀고 지금 오픈소스, 그리고 개발의 중심에 있는 것이나 마찬가지인 GitHub이 인수되었는데 생각을 좀 정리해볼 필요가 있어서 개인적 느낌이나 적어보려고 한다. GitHub이 인수되었는데 아무런 글도 안 남기기도 그렇고 해서...

Microsoft

Microsoft를 좋아하는 편은 아니지만 Satya Nadella가 CEO가 된 이후로는 정말 잘하고 있다.(개인적으로 스티브 발머는 정말 싫었다.) 한때(라기에는 너무 오래되었나.) 오픈소스의 완전히 반대쪽 입장으로 대변되던 MS가 "Microsoft ♥ Linux"나 "Microsoft ♥ OpenSource"라고 말하는 걸 보면 격세지감을 느끼긴 한다. 어느 순간부터 MS의 기술들은 나하고는 많이 멀어져서 접할 일이 많지 않지만 최근 Microsoft의 행보는 긍정적으로 보고 있다.

그리고 사람들 말대로 Microsoft를 살만한 회사인 Google, Facebook, Oracle, Amazon과 비교한다면 Microsoft는 괜찮은 선택이라고 생각한다. 물론 Satya Nadella 시대가 끝나고 다른 CEO가 온다면 또 어떻게 될지 모르지만 그건 GitHub의 CEO가 바뀌었을 때도 마찬가지일 테니...

추측이지만 Xamarin의 창업자인 Nat Friedman을 새 GitHub CEO로 선정한 것도 GitHub을 Microsoft으로 채우지 않고 기존처럼 유지해서 개발자들의 반발(?)을 줄이려는 의도가 아닐까 싶다. 이는 Nat의 글과 레딧에서 진행한 AMA를 봐도 개발자들의 반응을 Microsoft가 신경 쓰고 있다는 걸 알 수 있다. Xamarin을 잘 모르고 Microsoft의 다른 인물들도 잘 모르지만, 개발문화를 잘 이해하고 있는 사람일 거라는 생각에 이번 인선은 나쁘지 않아 보인다. 1년 정도 전에 GitHub의 CEO였던 Chris Wanstrath가 CEO를 대신할 사람을 찾으면 자신은 제품에만 집중하고 싶다고 했는데 Microsoft에 인수되는 형식으로 그 사람을 찾았다고 보인다. Chris에 대한 신뢰가 있어서 Nat을 새로운 CEO로 결정한 것에도 어느 정도 조율이 있었을 거로 생각한다.

GitHub

이렇게 생각하면 Microsoft는 잘하고 있고 GitHub이 인수된 것에 아무런 문제가 없다. 하지만 내가 느끼는 싫은 감정은 그대로였다.

개발자 중에 GitHub을 안 좋아할 사람이 얼마나 있겠냐마는 나는 GitHub을 무척 좋아한다. GitHub 굿즈도 웬만한 건 다 가지고 있다.

GitHub 굿즈

오픈소스의 중심이 된 주요플랫폼이기도 하지만 GitHub이 서비스를 만드는 것 보면 항상 너무 적절해서 감탄만 나올 뿐이다. 어차피 모든 사람이 원하는 기능을 다 만들 수는 없는 데 GitHub을 이용해서 개발하는 데 중요한 기능을 항상 잘 만들고 있다고 생각하고 있다.(비슷하게 서비스를 너무 잘 만든다고 생각하는 또 하나의 회사는 Instagram이다.) 그래서 수년간 입사하고 싶은 회사 1위였다.

인수되고 충격을 받은 이유 중 하나는 인수당하지 않을 거라고 생각했기 때문이다. GitHub이 회사 규모로 엄청나게 큰 회사도 아니고 Private repository와 GitHub Enterprise로 충분한(?) 수익을 벌고 있다고 생각하고 있었다. GitHub CEO Chris Wanstrath To Step Down After Finding His Own Replacement를 보면 연간 매출(revenue면 수익인가)이 2억 달러를 돌파했다는 얘기가 나오는데 평소 생각하면 GitHub의 규모를 생각하면 충분히 큰 매출이라고 생각했다.

이번 인수가 새로운 CEO를 물색하는 과정이었는지 아니면 GitHub이 수익이 충분치 않아서였는지는 나온 얘기가 없어서 잘 모르겠다. 한편으로 생각해보면 대부분의 오픈소스가 무료로 GitHub을 이용하고 있어서 서버 대수도 엄청날 테고 요즘은 패키지 매니저들이 GitHub에서 바로 끌어오거나 GitHub과 통합된 서비스들도 많으므로 CDN이나 트래픽 비용을 생각하면 저 매출은 많지 않을 수도 있겠다.

그래도 나는 GitHub이 자생해서 성공하거나 상장을 하는 모습을 은연중에 꿈꿨던 것 같다. 기술 중심 회사가 상장하는 것을 봐도 고무적인데 개발자 중심의 오픈소스를 사업의 핵심에 놓고 있는 회사가 상장하는 멋진 모습을 기대하고 있었던 것 같다. Microsoft에 인수되었다고 GitHub이 달라질 것 같진 않지만 결국 자립하지 못했다는 게 내가 슬픈 느낌이 드는 이유인 것 같다. 물론 스타트업 세계에서 인수도 성공적인 Exit의 한 방법이지만 내가 좋아하는 GitHub은 훨씬 멋진 모습으로 남아있길 개인적으로 기대했달까...

2018/06/18 03:53 2018/06/18 03:53