Outsider's Dev Story

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

기술 뉴스 #144 : 20-02-15

웹개발 관련

  • Understanding the ECMAScript spec, part 1 : ECMAScript 명세를 이해하는 방법을 설명하는 글이다. 명세를 읽을 때 나오는 [[]], ? 같은 기호의 의미와 abstract operation 같은 용어가 무슨 의미인지를 hasOwnProperty의 명세를 보면서 설명하고 있다. ECMAScript를 읽어볼 일이 있다면 참고하기 좋은 내용이다.(영어)
  • SameSite Cookie Changes in February 2020: What You Need to Know : Chrome 80부터 SameSite를 설정하지 않은 쿠키는 모두 SameSite=Lax가 기본값이 된다. Lax로 설정하면 쿠키를 처음 설정된 도메인과 안전한 요청에서만 쿠키를 사용할 수 있게 된다.(영어)

그 밖의 개발 관련

  • Why Discord is switching from Go to Rust : Discord에서 사용자가 읽은 메시지 상태를 관리하는 Read States 서비스에서 2분마다 스파이크가 생기는 문제를 추적해서 Go의 가비지 컬렉션 때문임을 알게 되고 이 부분을 해결하려는 도중 사내에서 Rust를 많이 도입하기 시작했고 가비지 컬렉션이 없는 Rust로 Read States 서비스를 재작성했다. 그 결과 스파이크는 줄어들고 자원은 더 적게 사용할 수 있게 되었다.(영어)
  • 안심번호 마이크로서비스 개발하기 : 당근마켓에서 광고주의 실제 전화번호를 숨겨주는 안심번호를 구현한 이야기다. 안심번호 자체가 중요한 것은 아니고 TypeScript로 작성한 Node.js 서버로 gRPC와 HTTP를 모두 지원하는 서버를 만들면서 오류 핸들링이나 통신사와 통신 포맷을 맞추면서 고민했던 부분이 나와 있다.(한국어)
  • Supercharge your command line experience: GitHub CLI is now in beta : 터미널에서 GitHub의 이슈를 보거나 풀 리퀘스트를 여는 등 GitHub의 기능을 이용할 수 있는 CLI를 공개했고 현재 베타 상태이다. 이전에는 hub라는 CLI 도구가 있었지만 이제 새 gh CLI로 대체될 것으로 보인다.(영어)
  • Semantic Segmentation을 활용한 차량 파손 탐지 딥러닝 모델 개발기 : 쏘카에서 사용자들이 차량을 이용하기 전에 현재 차량의 상태를 사진으로 올리는데 이러한 사진을 사람이 직접 검수하는 과정을 자동화하기 위해 딥러닝을 도입한 과정이다. 딥러닝을 도입하면서 데이터 구조와 모델 구조, 학습 과정 등이 잘 나와 있고 실제로 도입을 하기 위해서 정확도를 올리기 위한 개선은 어떻게 진행했는지 설명한다.(한국어)
  • Google API Improvement Proposals : Google의 API 설계에 대한 결정 사항을 정리해 놓은 문서다. 문서가 스펙 문서처럼 작성되어 읽기 편한 형식은 아니지만, API의 개선 제안이 진행되는 과정이나 구글이 리소스명, 메서드 등에 어떤 규칙을 사용하는지 알 수 있다.(영어)
  • AutoFlip: An Open Source Framework for Intelligent Video Reframing : Google이 비디오에서 사람 등 중요 장면을 중심으로 지능형 리프레이밍이 가능한 프레임워크 AutoFlip을 오픈소스로 공개했다.(영어)

인프라 관련

  • 네이버 검색의 SRE 시스템 : 대용량 분석 시스템인 네이버 검색이 더 안정적으로 동작하도록 SRE의 관점으로 개선을 진행한 내용이다. 실제 시스템 개편 자체에 참여한 것은 아니고 비상 대응 체계와 장애 탐지를 할 수 있도록 지원하고 포스트모텀 보고서를 만들어서 사내에 포스트모텀 문화를 만들고 경보 시스템을 고도화했다고 한다. 이를 통해 지난 2년간 네이버 검색은 더 많은 개선을 하면서도 장애를 크게 줄이는 효과를 보았다.(한국어)
  • GitOps와 ArgoCD : Intuit 사에서 만든 GitOps 구현체 ArgoCD를 소개하고 ArgoCD를 설정해서 Kubernetes에 배포하는 방법을 설명한다.(한국어)
  • Pro Tip: Instantly Turn Slack Messages into Grafana Annotations with the Memo Tool : Grafana의 어노테이션 API를 이용해서 슬랙에 메시지를 남기면 해당 시점에 어노테이션을 Grafana 대시보드 상에 표시할 수 있는 슬랙봇 memo를 만들어서 공개했다.(영어)

볼만한 링크

  • 기술 블로그를 다시 디자인하며 : 마켓컬리가 기술 블로그를 개편한 과정을 정리한 글이다. 기술 관련 글을 쓸 수 있도록 회사의 문화로 만들기 위해 튜토리얼을 작성하고 커밋 히스토리를 관리하고 리뷰를 하면서 팀 간 교류를 늘리고 오랫동안 멈춰있던 블로그를 다시 살려서 활발해졌다.(한국어)
  • 혹독한 조언이 나를 살릴까? : 조언을 혹독하게 할 경우 실제로 효과가 있는지에 대한 김창준 님의 글이다. 이와 관련된 다큐멘터리와 그 뒷이야기를 예시로 들면서 심리상담학에선 "내담자를 존중하지 않는 방식은 장기적으로 효과가 없거나 부정적이었다는 것"이라는 결론을 내렸다고 한다. 마지막에는 조언할 때 도움이 될만한 접근 방법을 알려준다.(한국어)
  • FE News : 네이버 프론트엔드 엔지니어들이 주요 기술 소식을 큐레이션하는 뉴스레터를 공개했다. 월 1회 발행 예정이라고 한다.(한국어)

IT 업계 뉴스

프로젝트

  • Playwright : Google의 Puppeteer 팀이 Microsoft로 옮겨가서 Puppeteer와 비슷하지만 웹킷와 파이어폭스까지 제어할 수 있도록 새로 만든 프로젝트.

버전 업데이트

2020/02/15 19:03 2020/02/15 19:03

기술 뉴스 #143 : 20-02-03

웹개발 관련

  • React Native is the Future of Mobile at Shopify : Shopify에서 자사의 모바일 앱 개발에 React Native를 주로 쓰기로 결정했다. 3개의 앱으로 2019년에 실험을 했는데 iOS 버전만 있던 Arrive 앱에서 2배 이상의 생산성 향상이 있었고 React Native로 재작성한 덕분에 Android도 지원할 수 있게 되었다. Point of Sale 앱에서는 iOS는 네이티브로 만들고 Android는 React Native로 만들면서 두 기술의 개발 속도를 비교해 볼 수 있었고 Compass 앱에서는 99%의 코드를 두 플랫폼 간 공유할 수 있었다고 한다.(영어)
  • Advice from a GraphQL Expert : NodeSF 밋업에서 GraphQL 발표를 정리한 글로 GraphQL을 도입할 때 모델 설계에 다 같이 참여하는 게 중요하다고 한다. 스키마를 변경하기 좋은 구조로 설계하고 @deprecated 디렉티브를 활용하고 nullable 설정을 잘 활용하면 편하고 페이징 지원은 GraphQL에 없지만 오프셋 등을 이용해서 구현할 수 있다고 설명하고 있다.(영어)
  • New year, new browser – The new Microsoft Edge is out of preview and now available for download : 크로니움 기반의 Microsoft Edge 브라우저가 공식으로 공개되었다. Windows, macOS 뿐 아니라 iOS, Android에서도 사용할 수 있다.(영어)
  • What's new in ECMAScript 2020 (ES11) : ECMAScript 2020에 추가되는 옵셔널 체이닝, Nullish coalescing Operator, globalThis, 다이내믹 임포트 등의 새 기능을 정리한 글이다.(한국어)
  • clean-code-javascript : 자바스크립트 클린 코드의 한국어 번역본으로 변수, 함수, 예외 처리, 테스트에서 좋은 접근과 안 좋은 접근을 비교해서 설명한다.(한국어)

그 밖의 개발 관련

  • 알아두면 도움되는 iTerm2 고급기능 : macOS 용 터미널 앱인 iTerm2의 편리한 기능을 정리한 글이다. 정규식으로 특정 패턴을 찾아서 액션을 실행할 수 있는 Smart Selection, 마우스 클릭에서 사용할 수 있는 Pointer Actions, 프로필 변경 방법 등이 나와 있다. iTerm2를 사용하면 생산성을 높일 수 있는 팁이 잘 정리되어 있다.(한국어)
  • 잘가, 클린 코드 : Redux를 만든 Dan Abramov가 협업 과정 중 동료의 코드를 더 깔끔하게 추상화했던 경험을 적은 글이다. 클린 코드에 집착해서 코드를 변경하고 이를 롤백하게 되었지만, 이 과정을 통해 동료와 상의하지 않고 진행한 실수를 저질렀고 클린코드는 목표가 아니라 코드를 발전시켜 나가는 하나의 과정일 뿐임을 배웠다고 하고 있다.(한국어)
  • Browse good first issues to start contributing to open source : GitHub에서 초심자가 기여할 이슈를 주제별로 찾을 수 있는 github.com/topics/<topic>와 특정 프로젝트에서 찾을 수 있는 github.com/<owner>/<repository>/contribute를 공개했다. 이는 라벨과 머신러닝 기반으로 구현되어 있다.(영어)
  • 기술 부채도 자산인 이유 : 자산이라는 건 부채 + 자본이기 때문에 기술 부채도 꼭 나쁜 것만은 아니고 다른 성과를 낼 수 있도록 하고 기술 부채를 측정해서 적절한 시기에 부채를 줄이는 접근을 할 수 있다는 글이다.(한국어)

인프라 관련

  • Diving Deep Into Kubernetes Networking: Docker와 k8s 네트워크 분석 : Diving deep into Kubernetes networking과 Udemy의 강의를 보고 Docker와 Kubernetes의 네트워크가 어떻게 동작하는지 정리한 글이다. Docker에서 컨테이너간 통신이나 외부 인터넷에 대한 통신이 어떻게 이뤄지는지를 설명하고 Kubernetes에서는 Pod 간의 통신을 위해 CNI, Overlay Network, CoreDNS 등이 왜 필요한지 어떻게 동작하는지를 설명한다.(한국어)
  • TOC Votes to Move Falco into CNCF Incubator : 클라우드 네이티브 보안 프로젝트인 Falco가 CNCF의 인큐베이터 프로젝트가 되었다.(영어)

볼만한 링크

IT 업계 뉴스

프로젝트

  • Yorkie : 동시 편집 가능한 협업 애플리케이션을 위한 프레임워크
  • AutoGluon : Amazon에서 만든 딥러딩 자동화 도구.
  • report-toolkit : IBM에서 만든 Node.js 진단 리포트 툴킷.
  • web-servers : 로컬에서 정적 웹서버를 띄울 수 있는 커맨드라인 명령어를 정리한 페이지.

버전 업데이트

2020/02/03 22:24 2020/02/03 22:24