Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

기술 뉴스 #243 : 24-04-01

웹개발 관련

  • [번역] 리액트가 컴파일될 예정입니다 : React Will Be Compiled의 번역 글로 React Compiler가 나올 것이라는 건 알려진 사실인데 이게 무엇을 의미하는지 설명하는 글이다. React를 클래스 컴포넌트, 훅, 컴파일 이렇게 세 가지 시대로 나눌 수 있었는데 클래스 컴포넌트에서는 추상화를 위한 원시성이 없었기 때문에 이를 해결하기 위해 Hooks가 등장하게 된다. 하지만 Hooks에서는 메모이제이션이 필요해졌는데 왜 메모이제이션이 필요한지를 보여주고 컴파일을 통해서 자동 메모이제이션이 가능하게 만들 예정이다.(한국어)
  • 토스가 꿈꾸는 React Native 기술의 미래 : Toss에서 실험을 통해서 제품을 개선하는 곳에서는 React Native와 WebView를 사용하고 있는데 WebView에 기술적 한계에 비해서 React Native는 로딩속도가 빠르고 배포도 빠르기 때문에 이점이 많아서 점점 많이 사용하고 있다고 한다. 마이크로 프론트엔드 아키텍처로 서비스마다 뷰를 나누었고 ESBuild를 통해 빠른 배포와 로딩을 사용하고 있다.(한국어)

그 밖의 개발 관련

  • GitHub Copilot General Availability in the CLI : GitHub의 Copilot CLI가 GA가 되어 기존 Copilot을 사용 중인 사용자라면 CLI도 사용할 수 있게 되었다.(영어)
  • Stacked Diffs(Stacked PR) : Pull Request로 협업할 때 협업을 잘 하기 위해 여러 방법이 있는데 그중에서 Stacked PR을 설명하는 방법이다. 코드 리뷰를 하는 동안 다음 작업을 하기 위해서 PR이 서로 이어지기 때문에 Stacked라는 표현을 쓰는 것인데 Stacked PR이 필요한 이유와 함께 GitHub에서 실제로 Stacked PR을 만들려면 어떻게 하는지까지 보여주어서 이해하기가 좋다. 이러한 과정을 쉽게 도와주는 도구와 문제점도 같이 설명해 주고 있다.(한국어)
  • Enhancing Node.js Core: Introducing Support for Synchronous ESM Graphs : ESModules가 표준이 되었지만, CommonJS 기반이었던 Node.js에서는 여전히 ESM을 적용하는 데 어려움이 있었기 때문에 --experimental-require-module 플래그를 적용하면 ESM 모듈을 require()로 동기식으로 불러올 수 있는 기능이 추가되었다.(영어)
  • Introducing Project IDX: An AI-assisted, Full-Stack App Development Environment: Google에서 AI 지원이 내장된 풀스택 앱 개발 환경인 IDX를 공개했다. 이는 VS Code 기반이면서 온라인에서 바로 사용할 수 있는데 현재는 대기리스트에 등록해야 사용해 볼 수 있다.(영어)
  • On Tech Debt: My Rust Library is now a CDO : 글을 쓴 Armin Ronacher의 의도를 다 알 수는 없지만 오픈소스 생태계의 문제를 지적한 글로 읽었다. Rust 생태계에서 어떤 의존성 라이브러리를 사용하고 있을 때 해당 라이브러리가 더 이상 관리되지 않아서 RUSTSEC 데이터베이스에서 해당 라이브러리가 문제 있다고 알리는 경우 이 기술 부채를 해결해야 하지만 현실에서는 해당 라이브러리 코드를 자신의 프로젝트에 합치면 기술 부채가 사라진다고 얘기하고 있다.(영어)

인프라 관련

  • Everything I Know About the Xz Backdoor : 무손실 압축 라이브러리인 xz-utils에 메인테이너에 의해 의도적으로 백도어가 포함된 것이 발견되었다. 서버의 SSH 접속이 느린 것을 추적하다가 백도어를 발견하고 리포팅한 Andres Freund가 추적한 내용을 보면 정황상 추측이 포함되어 있지만 2021년부터 Jia Tan이라는 계정이 xz 저장소에 Pull Request를 올리면서 등장해서 다른 가짜 계정을 통해서 메인테이터로 추가할 것을 압박하며 결국 메인테이너가 되어 라이브러리 호스팅하는 곳을 변경하는 등의 작업을 하면서 테스트 파일처럼 추가해 놓은 파일을 빌드 시에 마지막에 살짝 넣어서 배포된 라이브러리에 백도어가 포함되도록 했다. 발견되기 어렵게 하기 위한 많은 시도가 눈에 보이고 백도어로 인해 생긴 버그를 해결하는 과정에서도 이를 숨기려고 했던 노력이 눈에 보인다. 이 문제는 기존의 공급자 공격과는 다른 형태로 이뤄졌다는 면에서 오픈소스 생태계에 큰 충격을 주고 있다. 이번엔 운좋게 많은 시스템에 심어지기 전에 발견되어 영향은 크지 않은 것으로 보이지만 서버가 해당 백도어가 실행될 조건에 있지 않은지 확인해 볼 필요는 있다. GitHub은 이 저장소와 사용자를 정지시켰다.(영어)
  • Actions Usage Metrics public beta : GitHub Actions는 비용 리포트 외에는 별도의 통계 데이터를 제공하지 않아서 개인은 몰라도 회사에서는 어려움이 있었는데 이번에 Beta로 어떤 워크플로우가 얼마나 실행되고 어디서 실행되는지 파악할 수 있는 통계 페이지가 추가되었다. 이는 GitHub Enterprise Cloud 플랜에서만 현재 사용할 수 있고 Org에 어드민 권한이 있어야 볼 수 있다.(영어)
  • Linux Foundation Launches Open Source Valkey Community : Redis의 라이센스 변경으로 오픈소스가 아니게 되자 오픈소스 커뮤니티가 이에 대응하기 위해 빠르게 움직이고 있다. Linux 재단은 기존 Redis 기여자를 중심으로 Redis 7.2.4를 포크해서 Valkey로 이름 짓고 BSD 라이센스로 배포할 예정이라고 발표했다.(영어)
  • Introducing Garnet – an open-source, next-generation, faster cache-store for accelerating applications and services : Microsoft에서 내부의 연구와 경험을 통해 만든 새로운 캐시 저장소인 Garnet을 공개했다. Garnet은 RESP 와이어 프로토콜을 사용하여 Redis 클라이언트가 바로 사용할 수 있고 높은 성능으로 기존보다 비용이 절감할 수 있다. 타이밍은 절묘하지만 Redis의 라이센스 변경 때문에 공개한 것은 아니다.(영어)

볼만한 링크

  • 네이버 Yorkie TF 인턴 생존기 : Yorkie는 CRDT 기반으로 실시간 동시 편집을 지원하는 오픈소스 데이터스토어인데 인턴으로 Yorkie 팀에 가서 2달 동안 일한 과정입니다. 제목은 인턴기이지만 Yorkie의 데이터 구조와 동작 방식에 대해 알 수 있는 글이다.(한국어)
  • The Curse of the Senior Software Engineer : 시니어 개발자로서 오래 일하면서 승진에 전혀 관심 없었지만, 시간이 지나 창업하려다가 다시 취업을 시도하다 보니 시니어로 채용하기엔 너무 높은 직급이거나 리더쉽으로 채용하기에는 경험이 부족한 상황에 빠졌다고 설명하는 글이다. 본인의 가설이긴 하지만 맞다면 다른 사람들은 조심했으면 좋겠다고 얘기하며 승진 주기에 맞춰서 커리어를 관리하거나 빅테크식의 관리 방법을 쓰지 않는 회사를 찾는 해결책이 있다고 얘기한다.(영어)
  • 20 years of Gmail : 20년 전 당시 이메일 서비스가 15메가바이트일 때 1기가 바이트의 용량을 약속하며 등장한 Gmail을 큰 인기를 끌면서 필수 서비스가 되었다. 이 글은 지난 20년을 돌아보며 Gmail의 대용량과 검색으로 수많은 메시지가 휘발성으로 사라졌지만, 여전히 Gmail의 메시지는 검색이 가능하다고 얘기하고 있다.(영어)
  • 폴 그레이엄 에세이 리스트 : 좋을 글을 많이 쓰는 Paul Graham의 에세이디캠프 직원분들이 번역해서 올려주셨다.(한국어)
  • LangChain 한국어 튜토리얼 : 테디노트님이 작성한 LangChain 튜토리얼을 전자책으로 만들어서 공개했다.(한국어)

IT 업계 뉴스

프로젝트

  • Internal Developer Platform : 내부 개발자 플랫폼에 대한 콘텐츠를 모으는 사이트
  • Rerun : 멀티모달 데이터의 시각화를 위한 SDK
  • jnv : jq를 사용한 인터랙티브 JSON 필터
  • monolith : 웹페이지를 하나의 HTML 파일로 만들어주는 CLI 도구

버전 업데이트

2024/04/01 09:14 2024/04/01 09:14