웹개발 관련
- JavaScript Start-up Performance : 크롬 쪽 관점에서 쓴 글이긴 하지만 JavaScript의 초기 구동에 드는 시간을 분석하는 방법과 V8에서 어떻게 개선하고 있고 현재 개선하려고 가능한 방법을 설명한 글이다. JavaScript 파일의 로딩 시간 뿐 아니라 파싱과 컴파일 시간이 중요해진 점을 강조하고 이 시간을 정확히 측정하는 방법과 그동안 V8에서 이 시간을 줄이기 위해서 도입한 기술 등을 설명해서 Code caching, Script Streaming, 사전 컴파일된 JS 코드 등의 방법을 설명하고 있다.(영어)
- What’s in an AMP URL? : Google에서 AMP 페이지를 볼 때 Original URL, AMP Cache URL, Google AMP Viewer URL 세 가지가 있는데 각 URL이 어떤 의미가 있고 왜 여러 가지 URL을 만들게 되었는지 기술적인 배경을 설명하고 있다. 구현하거나 사용할 때 꼭 인지하고 있어야 하는 부분은 아니지만, 배경지식으로 알고 있으면 좋을 것 같다.(영어)
- "구글, 'https' 채택 안한 누리집에 안전하지 않은 곳 '낙인'" 기사에 대한 의견 : 크롬 최신 버전에서 HTTPS를 지원하지 않는다고 "안전하지 않음"이라고 표시되는 게 마치 부당하다는 듯 나온 기사에 강성훈 님이 기자한테 해당 기사에 대한 반박내용을 적은 글이다. 해당 글에 왜 HTTPS로 가는 게 중요한지가 배경부터 해서 아주 잘 나와 있고 나도 여기에 아주 공감하고 있다. 이후 네이버나 다음이 HTTPS로 가지 않은 이유가 충분히 있었지만 크롬 때문에 어쩔 수 없이 갔다는 기사도 보았는데 헛소리라고 밖에 보이지 않는다.(한국어)
그 밖의 프로그래밍 관련
- 리액티브 프로그래밍 대 리액티브 시스템 : Lightbend(구 TypeSafe)의 CTO인 Jonas Bonér와 Viktor Klang가 작성한 Reactive Programming versus Reactive Systems의 번역 글이다. 길지만 읽고 싶었는데 번역해 주신 분이 있어서 쉽게 읽었다. 요즘 화두인 리액티브에서 리액티브 프로그래밍과 리액티브 시스템이 어떻게 다른지 개념을 설명하고 제대로 된 시스템을 만들기 위해서는 둘 다 필요한데 리엑티브 프로그래밍과 리액티브 시스템이 어떻게 상호 보완적인 역할을 하고 있는지 설명하고 있다. 리액티브 프로그래밍은 수명이 짧은 데이터 흐름 체인을 통해 연산하는 데 중점을 둔다. 이것은 주로 이벤트 기반이다. 반면 리액티브 시스템은 (메시징이라고도 하는) 메시지 기반으로 분산 시스템에서 통신과 조정을 통한 복원성과 탄력성에 중점을 둔다.(한국어)
- Adventures with NPM or: How I Learned to Stop Shrinkwrapping and Love Yarn : npm에서 하위 의존성을 모두 고정하는 shrinkwrap의 문제점을 설명하고 yarn이 제공하는
yarn.lock
파일이 이 문제를 다 해결하고 속도도 좋다고 설명하고 있다. 아직 yarn으로 갈아타지 않았는데 이 글을 보니까 yarn으로 갈아타고 싶다.(영어) - Introducing Cloud Spanner: a global database service for mission-critical applications : 구글 클라우드 플랫폼에서 새로 공개한 새로운 데이터베이스로 ACID 트랜잭션을 지원하면서 NoSQL처럼 고가용성과 확장을 지원한다고 한다. 이렇게 보면 부족한 부분이 없어 보일 정도로 CAP 이론이 깨진 건가 싶지만 CAP 이론이 깨진 것은 아니라고 한다.(영어)
- EVOLVING DISTRIBUTED TRACING AT UBER ENGINEERING : Uber의 아키텍처가 모노리스에서 마이크로서비스 아키텍처로 넘어가면서 기존에 모노리스용으로 만들었던 Merckx를 더는 사용할 수 없게 되고 RPC를 이용한 TChannel을 개발해서 분산추적을 위한 기반을 만든 후 현재의 Jaeger라는 프로젝트를 완성하기까지의 과정을 설명한 글이다.(영어)
- 이벤트 소싱(Event Sourcing) 소개 : CQRS와 함께 최근에 많이 듣게 되는 이벤트 소싱을 이해하기 위해 이벤트 소싱이 전통적인 방식과 달리 데이터의 상태를 어떻게 관리하는지를 설명한 글이다. 흥미로우면서도 다 이해되진 않지만 이렇게 보다 보면 언젠가 더 이해가 될 때가 올 거라고 생각한다.(한국어)
- 2/1/17 GitLab.com Database Incident(한글번역) : GitLab.com에서 데이터베이스 장애가 발생하면서 그 복구 과정을 실시간으로 리포팅을 했다. 심지어 YouTube로 복구하는 과정을 라이브로 스트리밍했다.(이는 실수로 알려졌지만, 그 이후에도 계속 방송을 했다) 꽤 심각한 장애 처리 과정을 실시간으로 공유하는 게 꽤 재미있다. 결국 데이터베이스 복구는 실패한 거로 알고 있다. 지금은 GitLab에서 올린 공식 포스트모템도 올라와 있다.(한국어)
- 중급 파이썬: 파이썬 팁들 : Intermediate Python라는 책을 전체 번역한 온라인 문서다.(한국어)
- flake8-import-order-spoqa : 스포카에서 Python의 코드 스타일 표준인 PEP8을 맞추는 flake8을 사용하면서 import의 관례를 맞추려고 import-order를 만들어서 사용하다가 최근에 표준도구인 flake8-import-order에서 스포카용 커스텀 import 규칙을 적용할 수 있는 flake8-import-order를 만든 과정을 설명한 글이다.(한국어)
- AWS KMS를 이용한 암호화 API 구축하기 : AWS가 제공하는 KMS를 이용해서 데이터 암호화를 구현하는 방법을 설명하는 글이다. 여기서는 Lambda와 API Gateway로 API로 만들어서 암복호화를 사용할 수 있도록 구현했다.(한국어)
- Open Source Guides : GitHub에서 오픈소스 프로젝트에 기여하는 방법과 오픈소스 프로젝트를 운영하는 방법 등에 대한 가이드를 별도의 웹사이트로 제공하기 시작했다.(영어)
볼만한 링크
- 스포카 한 산스2.0에 관한 몇 가지 단편적 사실들 : 스포카에서 공개한 스포카 한 산스 폰트의 2.0 버전을 공개하면서 변경한 작업 내용과 스포카 한 산스 폰트 관련 내용을 정리한 글이다. 폰트에 관해서 예민한 눈을 가지고 있진 못하지만 이런 폰트작업이 신기하게 느껴지고 재미있다. 추가로 스포카 한 산스 웹폰트로 사용하기도 올라왔다.(한국어)
- Is Multifactor Authentication The Best Way To Secure Your Accounts? Myths And Reality : 멀티팩터 인증(MFA)을 구현할 때 사람들이 혼동하는 부분을 정리한 글이다. MFA에 대한 글을 많이 못 보기도 했지만, MFA의 원리와 접근 가능한 방법에 대해서 잘 나와 있다. 마지막에는 자사의 서비스 홍보이긴 하지만 읽어볼 만 하다.(영어)
IT 업계 뉴스
- The liberation of RethinkDB : 얼마 전에 종료한 RethinkDB의 모든 권리를 CNCF가 사고 Apache Public License 2.0으로 오픈하기로 했다.(영어)
프로젝트
- Lottie : Airbnb에서 공개한 오픈소스 프로젝트로 After Effect의 애니메이션을 iOS, Android, React Native에서 사용할 수 있게 해주는 라이브러리. 소개 글은 여기서 볼 수 있다.
- GVFS : Microsoft에서 270GB에 350만개의 파일이 있는 윈도우의 코드 베이스를 git으로 관리하기 위해 일부 파일만 다운로드 받고 파일을 사용할 때 동적으로 파일을 다운받은 GVFS를 오픈소스로 공개했다. IDE 등에서 다른 변경은 필요 없지만 GVFS를 쓰기 위해서 MS에서 커스터마이징한 git을 써야 하는 것으로 보인다. 자세한 내용은 공지에 나와 있고 윈도우 프로젝트를 clone할 때 12시간 이상 걸리고 checkout에만 3시간 걸렸지만 GVFS로 수분/수십 분 정도 내에 할 수 있게 되었다고 한다.
- Captain : 메뉴바에서 Docker 컨테이너를 관리할 수 있는 macOS 애플리케이션.
- Traefik : 마이크로서비스 배포를 쉽게 하는 리버스 프락시 서버 및 로드밸런서로 Docker, Swarm, Kubernetes, Marathon, Mesos, Consul 등을 지원한다.
- Portainer : Docker 호스트와 Swarm 클러스터의 관리 UI 프로젝트.
Comments