V8: Behind the Scenes (February Edition feat. A tale of TurboFan) : V8 개발자가 크롬 59부터 제공되는 Ignition과 TurboFan 파이프라인의 내부 접근에 대한 설명을 한 글이다. 기존 V8의 컴파일러는 Crankshaft였는데 이전에는 가장 빠른 성능을 내는 부분에 집중했는데 이는 반대로 느린 코드는 더 느리게 만들었고 그래서 벤치마크에서는 좋지만, 실제 애플리케이션에서는 느린 경우가 많았다. Turbofan을 개발하면서 이 부분을 알게 되었고 TurboFan을 개발할 때는 좋은 성능을 낼 수 있는 범위를 늘리고 나쁜 성능이 나는 부분은 덜 느리게 하려고 했다. 인터프리터인 Ignition으로 TurboFan을 위한 코드생성을 하고 TruboFan이 최적화를 하며 컴파일을 한다. Ignition과 TurboFan 파이프라인으로 많은 성능 개선이 있었지만, 이는 시작인 뿐이고 Crankshaft에서는 불가능했던 성능 개선을 위한 기반이 만들어졌다는데 더 의의가 있다.(영어)
Moving Airbnb Search to React : Airbnb가 React를 사용하고 있지만, 검색 페이지는 기존의 Flight로 작성된 채 남아있다가 이번에 React로 갈아타면서 그 과정을 설명한 글이다. 내부에서 ERF라는 실험 보고서 프레임워크를 쓰고 있어서 각 페이지의 통계테이터를 볼 수 있는데 React로 새로 작성한 페이지를 ERF로 A/B 테스트처럼 도입해서 새로 작성한 검색 페이지에 문제가 없는지 검사하고 이 과정에서 고객 반응이 떨어지는 거로 오류를 찾아내면서 변경했다고 한다. 고객 유입을 이끄는 페이지이므로 기술을 바꾸면서도 사용자에게 영향을 주지 않기에 좋은 접근이라고 생각한다.(영어)
EV SSL 인증서 발급 과정에서 알게 된 것들 : 리디북스에서 도메인에 회사명이 표시되는 EV SSL 인증서를 발급받는 과정을 설명한 글이다. SSH 인증서를 사는 경우가 아주 많지는 않아서 처음 구매하려면 업체나 종류 등이 많아서 고생하는데 그 절차가 설명되어 있다.(한국어)
그 밖의 프로그래밍 관련
Dodging S3 Downtime With Nginx and HAProxy : Sentry의 서버는 댈러스에 있고 버지니아 S3를 파일 스토리지로 사용 중이었는데 성능 향상과 네트워크 비용을 줄이려고 nginx를 S3 객체의 캐시로 사용하고 HAProxy로 nginx를 먼저 보고 실패하면 S3에서 직접 가져오도록 설정해서 사용하고 있었다. 이번에 AWS S3가 장애가 나면서 새 파일을 업로드할 수는 없었지만, 장애로 인한 영향은 최소화했다고 한다. 이 설정은 nginx와 HAProxy만 이용했으므로 애플리케이션 코드는 하나도 필요 없었고 설정하는데 하루 정도가 걸렸다고 한다. Nginx 캐시는 750GB 정도의 디스크를 사용하고 있다.(영어)
ANNOUNCING DOCKER ENTERPRISE EDITION : Docker가 기업용 솔루션인 Docker EE(Enterprise Edition)을 발표했다. 기존의 오픈소스 Docker는 Docker CE(Community Edition)으로 이름이 바뀌었고 버전 방식은 기존 1.13 같은 방식에서 출시 시기를 나타내는 YY.MM로 바뀌어 이번 Docker CE 버전은 17.03이다. Docker EE는 Basic, Standard, Advanced로 이용할 수 있고 Docker CE는 매달 릴리스 되는 최신 기능을 가진 Edge와 분기별로 릴리스 되는 Stable 버전으로 나뉜다.(영어)
Securing container borders with cloud functions : Meetup.com에서 Docker 레지스트리의 보안을 강화하려고 Docker Auth 프로젝트를 이용해서 인증을 추가하고 사용 중인 클러스터의 IP에서만 다운로드 받게 하려고 Docker Auth와 Google Cloud Functions를 연결한 과정을 설명한 글이다.(영어)
AWS Lambda 사용에 관련된 Tip : AWS Lambda를 사용할 때의 팁을 정리한 글인데 메모리와 CPU 사용의 기준이나 warm start의 최적화 방법 등 실제 다양하게 테스트해보고 정리한 유용한 팁이 나와 있다.(한국어)
Docker 활용법 - 개발 환경 구성하기 : Docker Compose를 이용해서 개발환경 구성을 쉽게 하는 방법을 설명하는 글이다. Docker만 사용하는 방법을 먼저 설명하고 프로덕션과 달리 개발환경에서 Docker만 사용해서 전체 개발환경을 구성하는 방법의 불편함을 보여주고 이를 Docker Compose가 어떻게 쉽게 해결할 수 있는지 보여주고 있다. Docker Compose를 이 용도만 사용하지 않더라도 개념을 이해하기 좋다.(한국어)
Introducing Create React Native App : Facebook이 Expo와 협력해서 React Native 프로젝트를 시작하는 뼈대를 만들 수 있는 Create React Native App을 공개했다. 이는 기본적으로 reate-react-app의 아이디어를 차용한 것으로 Expo 앱 기반으로 Xcode나 Android Studio가 없더라고 React Native 앱 개발을 할 수 있고 윈도우나 리눅스에서도 가능하다. 다만 각 플롯폼별 네이티브 코드가 필요하다면 Create React Native App를 분리한 후 Xcode와 Android Studio를 이용해서 네이티브 코드를 제어할 수 있다.(영어)
React Native 안드로이드 성능 최적화 : React Native에서 성능이 안 나오는 경우 왜 성능이 안 나오는지 어떻게 해결하는지를 설명한 글이다. 간단한 카드형 사진앱을 예시로 만들어서 안드로이드에서 왜 속도가 안 나오는지를 설명하고 이를 어떻게 해결하는지 찾아가는 과정까지 설명하고 있다.(한국어)
볼만한 링크
AWS 정전 원인, 알고보니 ‘오타’ : 2월 28일 AWS 버지니아 리전에서 발생한 장애가 개발자의 오타 때문에 서버가 내려가면서 발생한 것으로 공개되었다.(한국어)
LINE이 이 세계에서 계속 지고 있는 진짜 이유 : 일본 오구라 님이 작성한 글의 번역 글이다. 글쓴이는 라인 서비스의 팬이지만 현재 라인이 잘못하고 있는 부분을 조목조목 지적하고 잇다. 잘못된 콘텐츠의 추가와 탭 구성의 문제 등을 신랄하게 지적하고 있는데 꽤 많은 부분에 수긍한다.(한국어)
As a Designer I want better Release Notes : 앱 스토어에서 좋은 릴리스 노트를 어떻게 작성하는 게 좋은지 정리한 글이다. 여러 앱을 비교하면 요약 등을 위에 올리고 어떤 내용이 먼저 오고 어떤 내용을 표시하는 게 좋은지 설명하고 있다. 릴리스 노트를 쓰는 방식을 고민하고 있다면 참고할만하다.(영어)
A formal spec for GitHub Flavored Markdown : 사실상 표준이나 다름없는 GitHub의 GFM이 표준을 만들어서 공개했다. 다른 마크다운 표준 추진 프로젝트인 CommonMark에 GFM이 제공하는 기능을 추가해서 표준으로 만들고 이를 GitHub 사이트에 적용했다. CommonMark의 C 구현체인 cmark를 기반으로 기존의 마크다운 파서인 Sundown을 대체하고 1%의 사용자가 다른 결과를 가지게 되어 데이터베이스 차원에서 정규화를 진행해서 새로 적용한 마크다운 파서에서도 결과가 달라지지 않게 했다.(영어)
IT 업계 뉴스
스냅 상장 대박… 20대 공동창업자 6조 IT부호 반열에 : 3월 2일 상장한 스냅챗의 회사 Snap Inc가 공모가보다 44% 오른 24.48로 첫 거래를 마쳤다. 이 기준으로 Snap은 340억 달러의 기업가치가 되었다.(한국어)
프로젝트
Gutenberg : 프린트용 CSS 프레임워크로 웹페이지에서 프린트를 잘할 수 있도록 한다.
python-fire : 구글이 공개한 오픈소스로 Python으로 CLI를 만드는 라이브러리.
Comments