Outsider's Dev Story

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

기술 뉴스 #152 : 20-06-15

웹개발 관련

  • useSWR — My New Favorite React Library : Vercel이 만든 원격 데이터 패칭용 React 훅인 useSWR의 사용법을 설명한다. useSWR을 쓰면 많은 코드를 지울 수 있고 API 호출 부분을 간단하게 할 수 있고 성능도 좋다고 강조하고 있다.(영어)
  • Case study: Analyzing Notion app performance : React로 구성된 Notion의 성능을 분석해서 사용하지 않는 서드파티와 폴리필을 제거하고 API 데이터를 프리로딩하고 그 외 서드파티 로딩을 지연시켜서 성능을 개선하는 과정을 정리한 글이다.(영어)
  • Google resumes its senseless attack on the URL bar, hides full addresses on Chrome 85 : Google이 Chrome 85에서 주소창에 전체 URL을 표시하지 않고 도메인만 표시하는 기능을 옴니박스라는 이름으로 도입했다. 구글을 여러 차례 비슷한 시도를 하다가 반응이 좋지 않았는데 의미도 없는 이 접근을 왜 하는지 잘 모르겠다.(영어)
  • Flutter vs Native vs React 성능 : Flutter vs Native vs React-Native: Examining performance의 번역 글로 개발 생산성 같은 부분이 아니라 Pi 수를 계산하는 Gauss-Legendre 알고리즘과 Borwein 알고리즘으로 CPU 집약적인 테스트를 수행한 결과이다. 이 결과에만 따르면 React-native는 네이티브에서 상당히 느린 속도를 보여주고 Flutter는 네이티브와 거의 비슷한 성능을 보여주고 있다.(영어)

그 밖의 개발 관련

  • Containerize Your Go Developer Environment – Part 1 : 보통 새로운 멤버가 팀에 합류했을 때 개발환경을 구축하는데 고생하는 점을 지적하면서 Go의 개발 환경은 Docker를 이용하는 방법을 설명하고 있다. 간단한 Go 예시 프로그램을 Docker에서 빌드하는 걸 보여준 뒤 BuildKit을 활성화하고 Linux뿐 아니라 Windows, macOS 플랫폼별로 컴파일한 바이너리를 다시 호스트 파일 시스템에 내려주는 과정을 보여주고 있다.(영어)
  • AdoptOpenJDK 11 Is the New Default : AdoptOpenJDK에서 다운로드할 수 있는 기본 버전을 8에서 11로 변경했다. AdoptOpenJDK 11은 2018년 9월에 나왔고 생태계가 충분히 11로 옮겨갔다고 판단해서 이뤄진 변경이다.(영어)
  • Golang 패키지 이름(Package Names) : Go 언어 블로그의 Package names를 번역할 글로 Go에서 패키지 이름을 어떻게 지어야 하는지 정리되어 있다. 이름에서 반복을 피하고 단순화하는 것이 좋고 정보를 제공하지 않는 무의미한 이름은 피하라고 하고 있다.(한국어)
  • The State of Developer Ecosystem 2020 : JetBrains에서 만든 개발자 생태계 보고서다. 이 보고서에 따르면 Java가 가장 인기있는 주 언어이고 JavaScript가 제일 많이 쓰이고 대부분의 개발자는 웹사이트를 개발하고 Go, Kotlin, Python이 가장 도입하고 싶어하는 언어라고 한다.(영어)
  • New Resources Available for Password Manager Apps : Apple이 비밀번호 관리자를 만드는 개발자들이 iCloud 키 체인의 강력한 비밀번호를 활용할 수 있도록 password-manager-resources를 GitHub에 오픈소스로 공개했다.(영어)
  • 25 Years of PHP History : JetBrains에서 PHP의 25년 역사를 한눈에 볼 수 있게 정리했다. PHP 버전 릴리스와 워드프레스나 프레임워크 등 생태계에서 주요 사건을 언제 발생했는지 알 수 있다.(영어)

인프라 관련

  • How we use HashiCorp Nomad : Cloudflare에서 여러 데이터센터에 배포된 시스템을 관리하기 위해 Kubernetes 대신 HashiCorp의 Nomad를 선택했는데 각 데이터센터에서 독립적으로 인스턴스를 관리할 수 있는 요구사항을 만족시켰고 의존성이 적으면서 Consul과 쉽게 통합할 수 있으면서 단일 Go 바이너리로 가볍기 때문이라고 한다.(영어)
  • aws-vault로 AWS의 인증 정보 안전하게 사용하기 : AWS를 사용할 때 보통 환경변수를 이용해서 인증정보를 관리하는데 보통 플레인텍스트로 저장되어 있음으로 이를 더 안전하게 관리할 수 있는 aws-vault의 사용법을 정리한 글이다. aws-vault에 프로파일을 등록해 놓고 AWS CLI나 Terraform 등을 설명하는 방법이 잘 나와 있고 Alfred나 direnv와 연동해서 더 편하게 사용하는 팁까지 설명하고 있다.(한국어)

볼만한 링크

  • Spotify’s Failed #SquadGoals : Spotify에서 2012년 작성한 Scaling Agile 백서가 결국 실패했고 Spotify도 이 모델을 사용하고 있지 않음을 얘기하면서 어떤 부분이 잘못되었고 무엇을 배울 수 있는지를 정리한 글이다. 한국어로 작성된 자세한 요약은 GeekNews에서 볼 수 있다.(영어)
  • Elastic 라이센스, 그리고 오픈 소스 에반젤리스트의 딜레마 : Elastic에서 에반젤리스트로 일하면서 겪는 딜레마를 정리한 글이다. OSS, 베이직, 플레티넘 등의 가격 정책을 설명하고 오픈소스로 시작한 제품이기 때문에 상용 판매의 가장 큰 경쟁상대가 자사의 OSS 제품이라는 부분이 인상적이다. 오픈소스로 시작한 대부분의 회사가 비슷한 고민을 하고 있을 거라고 생각하고 관심 있는 부분이기도 하다.(한국어)
  • 개발자 이력서 작성하기 (feat. 이력서 공개) : 정원희 님이 최근 이직을 하면서 이력서를 정리한 과정이 나와 있다. 특이하게 노션으로 이력서를 작성하셨는데 이력서에 구성과 각 부분의 포함해야 하는 내용이 잘 나와 있고 이를 스스로 확인해 볼 수 있도록 체크리스트까지 만들어서 공유해 주셨다.(한국어)
  • 기술 콘텐츠는 대체로 헛소리다 : 인터넷에 있는 수많은 기술 관련 정보를 비판 없이 받아들이고 적용하는 것을 비판하는 글이다. 마지막 "소비하지 말고. 만들어라. 물어봐라. 호기심을 잃지 말아라." 부분이 중요하다고 생각한다.(한국어)

IT 업계 뉴스

프로젝트

  • IBM Plex : IBM Plex 한글 폰드가 무료로 공개되었다.
  • Excalidraw : 오픈소스 온라인 화이트보드.

버전 업데이트

2020/06/15 23:48 2020/06/15 23:48

기술 뉴스 #151 : 20-06-01

웹개발 관련

  • 개발자, 트렌드를 버리다 — 1년 후 소감 : 웹 기반의 웹 디자인 도구를 1년 동안 발전 시킨 과정을 설명한 글이다. React, Vue 등 새로운 기술로 프론트 기술이 많이 바뀌고 있지만, CSS와 SVG를 이용한 웹 디자인 도구를 웹에서 만들기 위해서 트렌드와는 달라도 계속 발전하면서 고민한 과정이 고스란히 담겨있다. 결과물을 보면 데스크톱 도구에 못지않고 프론트엔드 개발자로 일한다고 하더라도 쉽게 얻을 수 없는 경험이라서 더 대단하게 느껴진다.(한국어)
  • The process: Making Vue 3 : Vue를 만든 Evan You가 Vue 3을 만들게 된 배경을 설명한 글이다. 2020년 전반기에 릴리스 하는 것이 목표였지만 아직은 작업 중이다. Proxy 같은 ECMAScript의 새 기능을 쓰고 싶었고 템플릿 컴파일러가 소스맵을 지원하기 어려운 등 구조적 문제로 유지 보수가 어려웠기 때문에 새로 재작성하기로 했다고 한다. 2018년 후반 프로토타이핑을 시작하면서 TypeScript로 작성하기로 했고 새 기능 도입을 위한 RFC 과정을 도입했다. AST 변환 파이프라인을 만들어서 Virtual DOM 업데이트 성능이 개선되어 이전 보다 CPU 시간이 1/10로 줄어들었고 트리쉐이킹을 더 잘 지원하게 되어 번들러가 최적화하기 쉬워져서 최소 용량이 10KB(gzip 기준, 2는 23KB)이 되었다. 추가로 확장성을 위해 React Hook의 영감을 받아 Composition API를 추가했다.(영어)
  • RecoilJS is meant to rock your React world : Facebook에서 React의 상태 관리 라이브러리로 새로 발표한 Recoil이 React를 더 강력하게 만들 거라는 글이다. Recoil의 상태 유닛인 atom을 정의하고 selectoratom에서 다른 상태를 만드는 방법을 설명하고 이를 React 컴포넌트에서 어떻게 가져다 쓸 수 있는지를 보여주고 있다.(영어)
  • Types-First: A Scalable New Architecture for Flow : Flow의 classic 모드에서는 파일을 수정했을 때 의존성 파일을 모두 확인하면서 병렬로 검사할 수 없어서 성능 문제가 있었지만, types-first를 적용하면 병렬로 의존성을 검사할 수 있기 때문에 Facebook의 코드에 적용했을 때 90%의 경우 6배 이상의 속도 향상이 있다고 밝히고 있다. types-first를 적용하려면 .flowconfig 파일에 type_first=true를 설정해 주어야 한다.(영어)
  • Web Vitals : Google에서 만든 사용자 경험이 좋은 웹의 가이드라인을 제시하는 사이트이다. LGP(Largest Contentful Pain), FID(Fisrt Input Delay), CLA(Cumulative Layout Shift)를 기준으로 어느 정도 시간이어야 사용자 경험이 좋은지를 제시하고 있고 이는 PageSpeed Insights, 구글 서치 콘솔, Chrome 사용자경험 보고서에서 모두 지원하고 있다.(영어)
  • Mastering Async/Await : New Ebook: Mastering Async/Await 이북을 한국어로 번역한 페이지다.(한국어)
  • Test website security with Snyk’s newest WebPageTest integration : Snyk의 보안 검사가 WebPageTest에 추가되어 웹사이트의 보안 검사 결과를 함께 볼 수 있게 되었다.(영어)

그 밖의 개발 관련

  • Zero-day in Sign in with Apple : 애플 계정으로 다른 서비스에 로그인할 수 있는 Sign in with Apple에서 인증에 사용하는 JWT를 요청할 때 아무 이메일을 이용해서 Apple의 공개키로 서명만 하면 인증정보가 오는 취약점이 발견됐다. 즉 다른 사람의 이메일 주소만 알면 그 서비스에 로그인할 수 있는 취약점이다. 지금은 해결된 문제이고 이 취약점을 애플에 보고하고 바운티 프로그램에서 십만 달러를 상금으로 받았다고 한다.(영어)
  • 3분 모나드 : 함수형 프로그래밍에서 항상 나오는 모나드의 개념을 설명하는 글이다. 결국, 모나드는 합성할 수 있는 연산을 의미하는데 이를 모나드의 정의와 이 정의가 의미하는 것이 무엇인지를 나누어서 이해하기 쉽게 설명하고 있다. 이 글 하나로 모나드를 이해했다고 말하기는 어렵지만 개념적으로 모나드의 개념이 무언인지는 감을 잡기 쉽게 잘 설명되어 있다.(한국어)
  • TECHNOLOGY RADAR VOL.22 : ThoughtWorks에서 기술, 도구, 플랫폼, 언어/프레임워크 별로 분류해서 새로운 기술이 업계에 얼마나 도입 되었는지 Adopt(업계에 도입됨), Trial(어떤 기능이 있는지 이해할 필요가 있다), Assess(프로젝트의 목표를 이해할 필요가 있다), Hold(주의해서 사용해야 한다)로 나누어서 보여주고 있다. Adopt와 Trial에 있는 기술은 간단히라도 파악해 두면 트렌드를 이해하는데 도움일 될 것이다.(영어)
  • Deno 1.0 : Node.js를 만든 Ryan Dahl이 TypeScript 런타임으로 새로 만든 Deno의 1.0 릴리스 공지를 번역한 글이다.(한국어)
  • The Windows Subsystem for Linux BUILD 2020 Summary : WSL 2가 Windows 10의 2020년 5월 업데이트에 적용될 것이라고 한다.(영어)
  • Windows Terminal 1.0 : Microsoft의 Build 2020 컨퍼런스에서 Windows Terminal 1.0을 발표했다.(영어)
  • Golang News: Golang Korea 운영진에서 월 1회 Golang 관련 소식을 요약해서 공유하는 뉴스레터를 운영한다.(영어)
  • 슬랙으로 특정 조건의 이메일을 받아보자! : 회사에서 그룹메일로 오는 내용은 메일보다는 Slack에서 다같이 보는게 관리가 편한 경우가 많은데 이를 바로 슬랙에서 받을 수 있게 설정하는 방법이다. 슬랙에서 Email 앱을 설정하면 전용 메일이 추가되는데 이를 바로 수신 메일로 지정할 수도 있지만 Gmail 등에서 전송설정을 해서 Slack으로 받아보게 할 수 있다.(한국어)

인프라 관련

  • Sectigo AddTrust External CA Root Expiring May 30, 2020 : 2018년 Comodo CA의 새 브랜드명인 Sectigo의 AddTrust CA Root가 2020년 5월 30일에 만료가 되면서 해당 인증서를 쓰고 있는 많은 서비스와 프로그램에 장애가 발생했다.(영어)
  • How to enable IPv6 on Kubernetes (aka dual-stack cluster) : Kubernetes 클러스터내에서 Pod끼리 IPv6, iPv4로 통신하고 외부에 접속 할 수 있도록 설정하는 방법을 설명하는 글이다. 관련 도구들이 아직 IPv6 지원을 다 하지 않고 EKS, GKE같은 매니지드 Kubernetes도 IPv6를 지원하지 않으므로 여기서는 kubeadm을 이용해서 클러스터를 설정하고 Calico로 IPv6도 지원할 수 있도록 설정한다.(영어)

볼만한 링크

  • 과연 팀장 탓 일까? : 팀장을 맡고 나서 팀장은 어떤 역할을 해야하는지에 대한 고민을 담은 글이다. 팀장은 이런 일을 해야한다고 가이드를 제시하기 보다 짧은 기간이지만 팀장 역할을 하면서 어떤 고민을 하고 있고 팀원일 때랑 생각이 어떻게 달라졌는지에 대한 고민이 담겨있다. 비슷한 고민을 하고 있는 터라 공감이 간다.(한국어)
  • Stack Overflow Developer Survey Results 2020 : Stack Overflow가 매년 사용자를 대상으로 진행한 설문 결과를 공개했다. 이 결과를 통해 Stack Overflow의 사용자들이 지역이나 성별, 선호 기술, 연차 등 아주 자세한 설문 결과의 통계를 볼 수 있다.(영어)
  • 기획자는 필요없다. : 흔히 말하는 해외에는 기획자가 없다는 논조로 공유된 동영상(맞나?)으로 촉발될 글로 보이는데 조직의 규모 별로 기획자의 역할이 어떤지를 명확하게 설명하고 있다. 개인적으로는 기획자라는 실제 업무와 상관없이 혼란을 초래한다고 생각하고 있고 이 글에 나온대로 기획보다 다른 일을 훨씬 많이 하는데 기획자라는 말로만 규정하는게 문제라고 보아서 PM이나 PO(아직도 경계가 헷갈리지만...)등까지 세분화가 되어야 된다고 생각하는 편이다. 하지만 국내에서는 기획자라는 직군이 자리잡았기 때문에 이를 이해하기에 좋은 글이다.(한국어)

IT 업계 뉴스

  • Facebook to acquire Giphy for $400 million : Facebook이 GIF 이미지 플랫폼인 Giphy를 4억 달러에 인수하기로 했다고 한다.(영어)
  • Notion for everyone : Notion의 가격 정책이 달라지면서 무료 플랜과 퍼스널 플랜이 합쳐져서 무료로 1,000 블럭 제한 없이 맘껏 쓸 수 있게 되고 5명의 게스트와 공유할 수 있게 되었다.(영여)

프로젝트

  • Try Linux : Linux 배포판을 선택할 수 있게 정리해 놓은 사이트.
  • Hopin : 온라인 라이브 이벤트 플랫폼.

버전 업데이트

2020/06/01 05:03 2020/06/01 05:03