Outsider's Dev Story

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

기술 뉴스 #176 : 21-06-15

웹개발 관련

  • The Plan for React 18 : React에서 다음 메이저 버전인 React 18 작업을 시작했고 워킹 그룹을 만들어서 18에 대해 논의하기 시작했다. React 18에는 더 적은 렌더러를 위한 자동 배치와 Suspense의 SSR 지원 등의 개선이 추가되고 Concurrent 기능의 옵트인을 지원하는 첫 릴리스가 될 것이라고 한다. React 18 Alpha 버전을 릴리스해서 테스트해볼 수 있다.(영어)
  • React 18: 렌더링 최적화를 위한 자동 배칭 : Dan Abramov가 React 워킹그룹에 작성한 Automatic batching for fewer renders in React 18을 번역한 글이다. Batchin은 여러 state 업데이트를 하나의 리렌더링으로 묶어주는 것을 의미하고 이를 통해 성능을 바로 개선할 수 있다고 한다. React 18dptjsms createRoot로 자동 배칭을 할 수 있게 되었고 자동 배칭을 원하지 않는 경우와 Hook, Class와 사용할 때의 영향에 대한 설명도 잘 나와 있다.(한국어)
  • CSS for Web Vitals : Web Vitals를 최적화 할 수 있는 CSS 기법을 간단한 페이지를 최적화하면서 설명한다. sticky로 상단에 붙어 있던 쿠키 배너를 하단에 fixed로 고정해서 CLS를 개선하고 이미지로 된 배경 이미지를 CSS 그라디언트로 변경해서 LCP를 개선하고 폰트 로딩으로 인한 레이아웃 변경을 줄이기 위해 @import 대신 <link> 태그를 사용한다. 상황별 문제를 찾아서 개선하는 과정을 보여주어서 Web Vitals를 개선하는 접근을 전체적으로 보여주고 있다.(영어)
  • Yarn Berry 플러그인과 “since” : Yarn Berry에 추가된 플러그인 기능의 사용법을 설명하고 토스 프론트엔드에서 "since"라는 플러그인을 만드는 과정을 설명하고 있다. 이전에 yarn 1과 Lerna를 사용해서 모노 레포에서 변경사항이 있는 서비스만 찾아낼 수 있게 Lerna의 --since 옵션을 사용하고 있었지만, Yarn Berry는 Lerna와 같이 쓸 수 없었고 Lerna가 이제 유지보수가 잘 되지 않으므로 모노 레포에서 특정 커밋 이후에 변경사항이 있는 워크스페이스만 찾아내고 명령어를 실행하는 since라는 플러그인을 만들었다고 한다.(한국어)

그 밖의 개발 관련

  • ArchUnit - UnitTest로 아키텍처 검사를 : 아키텍처 구조와 규칙을 쉽게 정의하고 검사해주는 ArchUnit의 사용법을 설명한다. ArchUnit의 테스트를 작성해서 의존관계와 상속 관계 등을 검사하고 레이어 아키텍처 등을 검사할 수 있는데 선언형/명령형으로 검사할 수 있으면 AssertJ와 연동할 수도 있다. 실제 네이버에서 Support 패키지는 다른 패키지를 의존하면 안 된다는 규칙이나 API 문서화를 위한 속성을 통일시키는 등의 규칙을 만들어서 프로젝트를 검사하게 했다고 한다.(한국어)
  • Microsoft has built an AI-powered autocomplete for code using GPT-3 : GPT-3 관련 기술의 라이센스를 가지고 있는 Microsoft에서 엑셀에서 수식을 만들어주는 Power Fx를 오픈소스로 공개했다. Power Fx를 통해서 자연어를 입력하면 GPT-3를 이용해서 쿼리문을 만들어준다고 한다.(영어)
  • 폭발적인 사용자 증가로 마주한 성능 저하 2종 해결하기 : 유니크굿컴퍼니라는 회사에서 운영 중인 리얼월드 플랫폼의 한 게임이 트위터를 타고 갑자기 많은 사용자가 방문하면서 겪은 성능 문제를 해결한 과정을 적은 글이다. 처음은 큐의 메시지의 양을 제대로 소비하지 못하면서 지연되는 문제였고 두 번째는 데이터베이스 커넥션 풀을 충분히 설정하지 못해서 타임아웃이 발생한 문제였다. 알고 나면 해결책이 간단하지만, 갑자기 트래픽이 증가하면 없던 문제도 생기게 마련이라 갑자기 대응한 이야기가 재미있다.(한국어)

인프라 관련

  • Toward Vagrant 3.0 : Ruby로 작성된 Vagrant의 기능을 유지하면서 3.0을 준비하면서 Go로 포팅 중이라고 한다. 앞으로 2.3과 2.4에서는 호환성을 깨뜨리지 않을 것이지만 3.0에서는 호환성을 유지하면서도 새로운 설정 방법을 도입할 것이라고 한다. Go로 포팅된 3.0에서는 서버-클라이언트 모델이 도입되고 새로운 플러그인 API도 추가될 것이라고 한다. Vagrant의 유용함이 이제는 많이 줄었다고 생각하는 데 적극적으로 Go로 포팅하면서 개선될 Vagrant가 기대된다.(영어)
  • New from the CNCF Sandbox : kubelist 뉴스레터에서 최근 CNCF의 TOC에서 Sandbox 프로젝트로 승인한 프로젝트를 정리했다.

    • Antrea: CNI(Container Network Interface)와 Kubernetes NetworkPolicy를 pod 수준에서 구현한 VMWare의 프로젝트
    • ChaosBlade: 카오스 엔지니어링 시나리오를 생성하고 쉽게 사용할 수 있게 하는 알리바바의 프로젝트
    • WasmEdge Runtime: 엣지 컴퓨팅을 위한 WebAssembly 런타임
    • Vineyard: 인메모리 불변 데이터 매니저
    • Fluid: 분산 데이터 세트 오케스트레이터/엑셀러레이터
    • Submariner: 다중 Kubernetes 클러스터를 연결하고 서비스 디스커버리도 제공하는 프로젝트
  • GKE CNI Performance benchmark : Kubernetes에서 사용할 수 있는 CNI 중 Kubenet, Calico, Cilium을 Idle 상태, 트래픽을 줄 때의 상황 등에서 네트워크 성능, CPU/램의 사용량 등을 비교한 글이다. 각 CNI의 특징에 따라 성능을 비교해서 볼 수 있다.(한국어)
  • Amazon ECS Anywhere 시작하기 – 정식 출시 : Amazon의 컨테이너 서비스 ECS를 온프레미스에서 사용할 수 있는 Amazon ECS Anywhere가 정식 출시되었다.(한국어)

볼만한 링크

  • 데이터 로그 설계, 데이터 로깅, 이벤트 로그 설계, 데이터 QA의 모든 것 : 서비스에서 데이터 추적을 위해 많은 로그를 쌓게 되는데 이 데이터 로그의 설계부터 QA까지 기획자, PM, 마케터들이 이해할 수 있게 정리한 글이다. 데이터 로깅을 하기 위해 필요한 상식과 사용할 수 있는 플랫폼들도 정리되어 있고 서버 로그와 클라이언트 로그의 차이, 웹이나 앱의 로깅 특성도 잘 정리되어 있다. 이벤트 로그를 어떻게 설계하는 방법과 예시도 잘 나와 있어서 데이터 추적에 대한 이해도를 높이거나 서비스에 로깅 설계를 할 때 참고해서 정리하기 좋은 글이다. (한국어)
  • Summary of June 8 outage : 지난 6월 8일 CDN인 fastly가 장애 나면서 수많은 서비스에 영향을 주었다. 사용자의 유효한 설정이 숨겨져 있던 버그를 실행하면서 발생했고 1분 이내에 이 문제를 발견해서 해당 문제를 격리 한 뒤에 49분 후에 95%의 네트워크를 복구했다고 한다.(영어)
  • F8 Refresh: 개발자가 주인공인 이벤트 : 페이스북이 자사의 콘퍼런스 F8에서 새로운 API 및 기능을 공개했다.(한국어)

    • Instagram 용 Messenger API 공개
    • WhatsApp Business API 공개
    • Messenger를 이용한 로그인 커넥트로 로그인 흐름에서 메시지를 주고받을 수 있게 됨
    • 모바일 AR 플랫폼인 Spark AR에 Multipeer API 추가
  • AWS 대회에서 1등 했습니다! : AWS에서 고객사와 진행하는 게임데이에 참여해서 1등을 차지한 후기를 적은 글이다. AWS에서 설정한 어떤 환경 아래에서 AWS 인프라를 이용해서 서비스를 제공하면서 계속 주어지는 문제를 해결하는 식으로 진행되는데 다음 대회를 위해서 자세한 문제까지는 공유하지 못했지만, 진행 방식과 적용한 내용이 나와 있어서 대회 방식을 이해할 수 있다. 나도 이 대회에 참가했는데 어떤 대회인지 사전에는 몰랐지만, 무척 재밌고 잘 구성되어 있었다.(한국어)

IT 업계 뉴스

프로젝트

  • SF Symbols 3 : Apple에서 San Francisco 폰트와 어울리는 아이콘 라이브러리를 공개했다. 3 버전에서 600개의 새 아이콘이 추가되었다.
  • Elevator Saga : 엘리베이터를 프로그래밍해서 도전 과제를 푸는 게임이다. 예를 들어 일정 시간 내의 몇 명의 사람을 이동시켜라 같은 미션을 엘리베이터 프로그램을 작성해서 푸는 게임이다.

버전 업데이트

2021/06/15 23:23 2021/06/15 23:23