Introducing Hooks : React v16.7.0-alpha에 아직 제안 상태인 Hooks라는 기능이 들어갔다. 상태를 가진 로직을 컴포넌트에서 재사용할 수 없고 컴포넌트가 과도하게 복잡해지는 문제를 해결하기 위한 기능으로 어떻게 사용하는지는 velopert님이 리액트의 새로운 기능, Hooks 알아보기에서 잘 정리해 주셨고 매일 React Hook을 올리겠다는 useHooks 사이트도 생겼다.(영어)
Making Sense of React Hooks : Redux를 만든 Dan Abramov가 쓴 React Hooks를 지지하는 글이다. 현재 React 컴포넌트가 커지고 로직이 반복되고 복잡한 패턴을 사용하게 된 문제를 해결하기 위해서 제안된 Hooks는 로직을 컴포넌트 간에 재사용할 수 있어서 컴포넌트 코드가 훨씬 간단해지고 Hooks를 활성화하는데 필요한 코드는 1.5kB 정도뿐이라고 한다.(영어)
3 JavaScript Performance Mistakes You Should Stop Doing : ECMAScript가 계속 발전하고 있지만, 루프, 배열 복사, 객체 순회 등 자주 쓰는 기능 위주로 구현 가능한 여러 함수의 성능을 비교해 준 글이다. 새로운 기능들을 많이 추천하고 있지만, 성능도 같이 좋은 것은 아니고 성능도 엔진의 발전에 따라 달라지므로 이런 글은 종종 확인해 보는 것이 좋다.(영어)
How Facebook 3D Photos Work : 페이스북이 최근에 추가한 3D 사진 기능을 어떻게 구현했는지 분석한 글이다. 개발자 도구로 내용을 분석하고 Three.js의 와이어 프레임 기능을 켜서 다른 우회 방법이 아니라 Three.js로 실제 3D를 구현한 것을 보여주고 있다.(영어)
그 밖의 프로그래밍 관련
Microservice Architecture at Medium : Medium에서 수년간 Node.js로 만든 모노리틱 서버를 운영하다가 마이크로서비스 아키텍처로 변경한 과정을 설명한 글이다. 먼저 Medium이 생각하는 마이크로서비스의 특징을 "단일 목적", "낮은 의존성", "높은 응집성"으로 정의하고 이 설계원칙에만 집중했다. 항상 무언가 바꿀 때 "왜 지금이어야 하는가?"를 물어보는데 현재 Node.js 서버가 성능 병목 지점이 되었고 개발 속도가 느려졌으므로 마이크로서비스로 바꾸기로 했다. 진행 과정은 "명확한 가치를 가지고 새로운 서비스를 만든다", "모노리틱 스토리지는 피한다", "서비스 개발과 서비스 운영은 분리한다", "일관되고 철저한 가시성", "모든 서비스를 처음부터 만들 필요는 없다", "장애는 항상 생기므로 중요하게 생각한다", "마이크로서비스 신드롬은 피한다"의 전략을 세우고 각 단계가 어떤 의미가 있고 어떻게 진행했는지 설명하고 있다.(영어)
October 21 post-incident analysis : 10월 21일 GitHub에서 24시간 11분 동안 발생한 장애에 대해서 사후 분석을 통해 원인과 진행 과정을 정리한 글이다. US East와 US West 데이터 센터 사이에 정기작업을 하던 중 43초간 네트워크 단절이 발생했는데 이때 각 데이터센터가 RAFT 알고리즘으로 Primary 서버를 새로 뽑으면서 두 데이터센터 간 데이터가 달라지면서 네트워크 복구가 이뤄진 이후에도 장애로 이어졌다. 시간이 지나면서 두 데이터베이스 간에 데이터 격차가 벌어졌고 백업에서 전체 복구를 한 뒤에 백로그로 데이터를 맞추기로 했지만 실제로 전체 클러스터를 백업에서 다시 올리는 작업을 해본 적은 없고, 작업하면서 미국/유럽의 근무시간이 시작되면서 작업 시간은 더 늦어졌다. GitHub이 이렇게 긴 장애를 일으킨 건 처음이라서 궁금했는데 원인과 시간별 분석 내용 및 진행상태가 자세히 적혀있어서 흥미롭다.(영어)
자바의 새로운 도약: OpenJDK(Feat. 자바 라이센스) : 오라클에서 발표한 Java의 새 라이센스 정책으로 얘기가 많은데 최근 OpenJDK를 중심으로 달라지고 있는 상황과 OracleJDK의 라이센스관련 내용을 정리한 글인데 여러 문서를 참고해서 자세히 정리되어 있다.(한국어)
신규 포인트 시스템 전환기 #1 - 개발 단계, #2 - 오픈 준비 단계 : 우아한 형제들에서 레거시 포인트 시스템을 새로 개선하면서 진행한 과정을 정리한 글이다. 포인트 시스템의 구조 개선뿐 아니라 배포에 관한 기술 선택, 디비와 큐의 선택, 테스트 및 개발환경, 문서화, 성능 테스트 및 오픈 준비 등 시스템 하나를 오픈하는 전체 과정이 다 나와 있다.(한국어)
깃을 위한 flight rules : Git을 사용하다가 문제가 발생했을 때 해결 방법을 정리해 놓은 문서다. 커밋메시지를 잘못 쓰거나 리베이스를 잘못했을 경우 등 문제 상황에 대한 해결책이 나와 있다.(한국어)
HashiCorp Learn : HashiCorp에서 자사의 제품을 따라 해 보면서 배울 수 있는 교육사이트를 공개했다. 현재는 Vault만 제공되고 Terraform, Consul, Nomad도 곧 제공할 예정이라고 한다.(영어)
블록체인 관련
이더리움 콘스탄티노플, 테스트 실패로 출시 차질 예상 : 이더리움의 차기 하드 포크 콘스탄티노플이 롭스텐 테스트 네트워크에서 테스트 중 오류를 발견했다고 한다. 오류는 이미 수정되었지만, 안정적인 진행을 위해 출시 일정을 미룰 예정이라고 한다.(한국어)
école 42 탐방기 : 코드스쿼드에서 SW 혁신학교인 에콜42 프랑스와 샌프란시스코를 모두 방문하고 에콜 42가 어떤 시설을 가지고 있고 어떻게 가르치고 있는지를 정리한 글이다. 나도 최근에 에콜 42에 대해 알게 되었고 같이 일하는 동료가 EPITECH 출신이라서 궁금한 게 많았는데 사진과 함께 자세히 나와 있어서 재미있게 읽었다.(한국어)
The State of the Octoverse : GitHub에서 사용자들의 활동을 분석한 자료를 웹사이트로 만들어서 보고했다. Octoverse를 보면 GitHub 사용자들의 국가 추이, 언어별 인기도, 주요 프로젝트 등 다양한 내용이 나와 있다.(영어)
"3 JavaScript Performance Mistakes You Should Stop Doing" 포스팅을 보니 작성자가 댓글로 엄청 두들겨 맞고 있네요; 퍼포먼스 vs 가독성 및 확장성 이야 케이스 바이 케이스라고 생각하는데.. 제목에 mistake 라고 떡하니 써둔게 마음에 들지 않는 사람들이 생각보다 많은 것 같아요.
아 댓글까지는 제가 보진 않고 있었네요. 맘에 안드는 정도까진 아닌데 mistake라고 할정도는 저도 아닌것 같긴 합니다. 항상 그냥 for문을 써야한다기 보다는 속도차이가 있다는 것을 인지하고 있다면 필요한 경우에 튜닝할 수 있는 정도로 받아들이면 되지 않을까 싶습니다.
"3 JavaScript Performance Mistakes You Should Stop Doing" 포스팅을 보니 작성자가 댓글로 엄청 두들겨 맞고 있네요; 퍼포먼스 vs 가독성 및 확장성 이야 케이스 바이 케이스라고 생각하는데.. 제목에 mistake 라고 떡하니 써둔게 마음에 들지 않는 사람들이 생각보다 많은 것 같아요.
아 댓글까지는 제가 보진 않고 있었네요. 맘에 안드는 정도까진 아닌데 mistake라고 할정도는 저도 아닌것 같긴 합니다. 항상 그냥 for문을 써야한다기 보다는 속도차이가 있다는 것을 인지하고 있다면 필요한 경우에 튜닝할 수 있는 정도로 받아들이면 되지 않을까 싶습니다.