Move on to ESM-only : Vue의 코어팀 멤버이고 Vitest를 만든 사람이기도 한 Anthony Fu가 이제 패키지가 ESM 전용으로만 지원해야 한다고 주장하는 글이다. CJS에서 ESM으로 바뀌면서 둘을 모두 지원하면서 과도기를 잘 지원했지만 이제 ESM을 쓰기 충분한 도구가 갖춰졌고 ESM에서 CJS를 참조하기는 쉽지만 반대는 그렇지 않기 때문에 패키지들부터 ESM으로 옮겨가는 하향식 움직임이 필요하고 Node.js에서도 require로 ESM을 불러올 수 있게 되어 쉽게 넘어갈 수 있게 되었다. 듀얼로 지원하는 경우 관리도 어렵고 패키지도 커지기 때문에 앞으로는 ESM 전용으로만 만들어져야 하며 패키지 작성자가 종속성의 상황을 확인할 수 있는 Node Modules Inspector도 만들어서 공개했다.(영어)
(번역) 자바스크립트 프레임워크 - 2025년을 향해 : Solid.js를 만든 Ryan Carniato가 작성한 JavaScript Frameworks - Heading into 2025의 번역 글이다. 이 글은 자바스크립트 프레임워크의 전망을 정리한 글로 최근 몇 년간 서버 우선 접근이 화두였고 단순함을 추가했지만, 앱까지 단순하게 만들지는 못했고 React Compiler나 Svelte 5 Rune 등 컴파일러를 사용하는 접근이 주목받고 있지만 복잡도는 더욱 커지게 되었다. 앞으로 서버 우선보다는 서버를 차선책으로 사용하는 접근이 이어질 것이고 대단한 혁신이 있지 않더라고 꾸준하게 개선하는 프레임워크가 생태계에서 인기를 끌고 있고 React를 제외한 모든 프레임워크가 Signal을 쓰고 있지만 아직 성장통을 겪고 있다고 한다.(영어)
Sunsetting Create React App : 2016년 React 앱을 구성하는 방법으로 등장한 Create React App에 더 이상 메인테이너가 없고 고성능 프로덕션 앱을 만들기는 어렵기 때문에 이제 CRA를 사용하면 사용 중단 공지가 나오게 된다. 기존 CRA 사용자는 각 프레임워크의 마이그레이션 가이드에 따르거나 Vite나 Parcel로 설정하기를 권고하고 있다. CRA에는 라우팅이나 데이터 패칭, 코드 분할 솔루션이 포함되어 있지 않다.(영어)
Launching Interop 2025 : 브라우저 벤더와 플랫폼 업체가 협력해서 웹 표준의 상호운용성을 개선하는 Interop 2025가 시작되었다. 2024에서는 크롬, 엣지, 파이어폭스, 사파리 등 주요 브라우저에서 테스트에 통과하는 비율이 46%에서 95%로 증가했고 2025년에도 Anchor Positioning, View Transitions, Storage Access, Web Compat, WebRTC 등 포커스 영역을 선정하고 작업할 예정이다.(영어)
We Replaced Our React Frontend with Go and WebAssembly : 배포 파이프라인 Dagger에서 Dagger Cloud v3를 공개하면서 웹 UI를 React에서 Go와 WASM으로 교체했다. Dagger는 CLI에서 사용하는 TUI와 Cloud에서 사용하는 웹 UI가 있었는데 스택이 Go와 React로 달랐기에 로직을 공유하기도 어렵고 작업의 부담이 되는 상황이었다. 둘을 하나의 코드 베이스로 재사용하기 위해 Go를 공통으로 사용하기로 하고 Go-App 프레임워크로 WebAssembly를 사용하기로 했지만, 확신은 없어서 한 달 정도 프로토타이핑을 시도한 결과 만족도와 자신감이 상당히 높아졌다.(영어)
SolidJS : The Road to 2.0 : SolidJS에서 2.0을 위한 개발을 시작한다고 발표했다. 2.0에는 세분된 null이 없는 async, 플러시 경계, mutable derivation, dervied signal, 지연 메모, 자동 배칭 등이 포함된다.(영어)
Why TanStack Start is Ditching Adapters : TanStack Router를 기반으로 한 풀스택 React 프레임워크인 TanStack Start를 만들면서 각 클라우드 환경에 맞추기 위한 어댑터를 생각했지만, 이 작업량이 너무 많은 것을 깨달았고 Solid Start를 참고해서 Vite와 Nitro를 사용하자 어댑터 없이 간단하게 배포할 수 있게 되었다.(영어)
CSS text-box-trim : Chrome 133부터는 text-box가 도입되어 그동안은 제어할 수 없었던 폰트 위아래의 여백 공간인 half-leading 영역을 제어할 수 있게 되었다.(영어)
그 밖의 개발 관련
GitHub Copilot: The agent awakens : VS Code에서 GitHub Copilot에 새로운 agent 모드가 추가되었다. 작년에 공개된 여러 파일을 선택한 뒤 수정 요청을 할 수 있는 Copilot Edits 기능도 누구나 사용할 수 있도록 열렸는데 요청과 처리를 반복하는 Copilot Edits 모드에서 더 나아가 agent 모드는 요청한 작업이 완료될 때까지 계속 반복해서 수행하며 터미널 실행까지도 제안하고 실행 결과를 가지고 다시 제안을 반복한다.
Extensible Wasm Applications with Go : Go 1.24에서 go:wasmexport 지시어를 추가하고 WASI용 리액터를 빌드할 수 있는 기능이 추가되면서 WebAssembly 기능을 강화했다. 이 기능을 사용하면 Go 함수를 Wasm로 내보낼 수 있다.(영어)
Ruby on Rails on WebAssembly, the full-stack in-browser journey : Ruby on Rails를 WebAssembly로 브라우저에서 실행하는 프로젝트를 만드는 Vladimir Dementyev가 진행 상황을 설명하는 글이다. Ruby on Rails의 유명한 예시인 15분 만에 블로그 만들기로 블로그를 만든 뒤 wasimify-rails를 사용해서 이 애플리케이션을 WebAssembly으로 만드는 방법을 설명한다. wasimify-rails가 PWA로 만들어주면 15분 만에 만든 블로그 예제를 WebAssembly를 사용해서 브라우저 내에서만 띄울 수 있다.(영어)
Cloudflare incident on February 6, 2025 : 지난 2월 6일 Cloudflare의 오브젝트 스토리지인 R2에 장애가 발생하여 1시간 정도 R2를 전혀 사용할 수 없는 장애가 발생했다. 이번 장애는 R2에서 호스팅되는 피싱 사이트를 차단하는 과정에서 특정 엔드포인트를 비활성화하는 대신 R2 Gateway 서비스를 비활성화하면서 발생했다. 운영팀에서 R2 Gateway를 잘못 비활성화할 수 있게 구성되어 있었고 이를 되돌릴 수 있는 제어는 부족했기에 다시 배포하느라고 복구하는 데 시간이 걸렸다. 장애 이후 이를 막기 위한 시스템의 가드레일과 제어 기능을 개선하고 있다.(영어)
Gemini 2.0 is now available to everyone : Google에서 Gemini 2.0 Flash를 Google AI Studio와 Vertex AI에서 누구나 사용할 수 있도록 공개하고 Genimi 2.0 Pro의 실험 버전도 출시하고 가장 비용 효율적인 모델인 2.0 Flash-Lite도 공개했다.(영어)
Introducing deep research : OpenAI에서 수백개의 온라인 소스를 찾아서 분석한 뒤 분석가처럼 종합 보고서를 작성할 수 있는 새로운 ChatGPT의 에이전트인 deep research를 출시했다.(영어)
데이팅 앱 내부에서는 실제로 무슨 일이 일어나는가 : What really happens inside a dating app의 번역 글로 데이팅 앱의 데이터를 살펴보면서 데이팅 앱의 사용자인 남자와 여자가 어떻게 행동하고 데이팅 앱은 여기에 어떻게 반응해서 서비스를 제공하는지를 자세히 살펴본 글이다. 좋아요에 대한 데이터, 피드 알고리즘의 중요도, 리텐션의 의미, 가짜 계정 등 다양하게 정리되어 있다. 글이 엄청 긴데도 불구하고 꽤 재미있는 정보를 알려주는 글이다.(한국어)
Meta’s Hyperscale Infrastructure: Overview and Insights : Meta의 하이퍼스케일 인프라에 어떻게 접근하는지 설명한 글이다. 빠른 움직임을 강조하는 Meta는 상태가 없는 서버리스 함수로 코드를 주로 작성하며 단일 리포지터리를 사용하면서 팀 간의 개방성을 강조하며 각 프로덕션 서비스를 만드는 팀에서 논문도 작성해서 솔루션까지 도출하고 인프라를 표준화하고 재사용할 수 있는 구성 요소를 선호하는 형태로 인프라를 구성했다. 인프라는 CDN을 적극적으로 사용하며 데이터센터 간 최적의 경로를 사용할 수 있도록 구축했으며 온라인 처리와 오프라인 처리를 분리해서 아키텍처를 간소화했다. 생산성을 위해 지속적 배포를 하고 있어서 97%의 서비스가 완전히 자동화된 배포를 사용하고 있다. 또한 전 세계의 모든 데이터센터를 하나의 컴퓨터로 사용한다는 비전을 가지고 구축되어 있다. 꽤 긴 글이지만 Meta 정도의 하이퍼스케일이 궁금하다면 꽤 재미있게 볼 수 있다.(영어)
IT 업계 뉴스
Resigning as Asahi Linux project lead : Apple Silicon에서 Linux를 실행하기 위해 시작된 Asahi Linux의 프로젝트 리드인 Hector Martin이 사임했다. Hector Martin는 처음 시작했을 때 엄청난 응원과 후원을 받아서 많은 성공을 거두었지만, 여전히 계속된 요구사항이 몰려오는 상황이었다. 2024년부터는 Rust를 Linux에 통합하는 작업이 Asahi Linux 입장에서도 아주 중요했기에 이 작업을 많이 지지했지만, Hector Martin를 비난하는 사람들이 나타나고 Linux 프로젝트의 고위직을 맡은 사람들도 이러한 학대와 비난을 지지하는 경우도 있었다고 한다. 재밌게 시작한 프로젝트였지만 더 이상 노력할 가치가 없다고 느껴서 프로젝트 리더에서 물러난다고 한다.(영어)
Oracle justified its JavaScript trademark with Node.js—now it wants that ignored : 작년 말 Ryan Dahl이 Oracle이 가진 JavaScript 상표권에 대한 권리를 취소해 달라는 청원서를 미국 특허청에 제출했는데 이에 대한 Oracle의 답변이 제출되었다. 2019년 Oracle은 JET 홈페이지와 Node.js의 홈페이지의 스크린숏을 제출하며 상표권을 계속 사용 중이라고 주장한 부분이 사기라며 취소 청원서를 제출한 것이다. Oracle의 상표권은 소프트웨어 제품(Class 9), 기술 서비스(Class 42) 모두를 포함하는데 Node.js 스크린숏은 Class 42만을 위한 거였고 JET는 둘 다 커버하므로 상관없다며 제대로 된 답변은 하지 않고 지연시키는 전략을 사용하고 있다.(영어)
프로젝트
Github Gitmos : GitHub 본사에 GitHub 사용자의 활동을 보여주는 대시보드 프로젝트의 작업 설명 페이지
Comments