Outsider's Dev Story

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

기술 뉴스 #261 : 25-01-01

웹개발 관련

  • The State of JS 2024 : 매년 발표되는 JavaScript 생태계의 설문조사로 올해는 1만 4천여 명이 응답자로 참여했다. JavaScript 언어의 새 기능이나 브라우저 API의 인지도 등을 볼 수 있다. 다양한 분류로 시각화해 두어서 주류인 기술과 새롭게 관심받는 기술을 알 수 있다.(영어)
  • 5 tips to effectively optimize INP in React : React에서 INP(Interaction to Next Paint)를 개선하기 위해 DOM 개수를 줄이는 게 중요한데 Google에서는 1,400개를 권장하지만 보통 2,500개까지는 잘 처리하고 이후부터는 성능이 저하될 수 있다. DOM을 줄이기 위해 컴포넌트 구조를 단순화하고 SSR을 쓰는 것도 도움이 되고 컴포넌트를 단순 버전과 풍부한 버전으로 나누어서 처음에는 단순 버전으로 로드하고 Inersection Observer를 이용해서 화면에 보여질 때 풍부한 버전을 로드하도록 만들 수 있고 <Suspense>를 사용해서 중요 컴포넌트와 아닌 것은 구분해서 렌더링하는 것도 도움이 된다.(영어)
  • Data-Driven SEO and Web Performance : 웹사이트의 성능이 SEO에 영향을 미친다고 보통 얘기하지만, 어느 정도인지는 명확지 않고 실제로는 검색 키워드에 따라 성능이 결과에 반영되는 정도가 다르다. 웹사이트의 성능이 SEO 순위에 얼마나 영향을 미치는지 확인할 수 있도록 Keyword Vitals이란 크롬 익스텐션을 만들어서 키워드별로 얼마나 영향을 미치는지 보여주기 때문에 목표로 하는 검색 키워드에 따라 웹사이트 성능에 얼마나 노력을 들일지를 판단할 수 있다.(영어)

그 밖의 개발 관련

  • How bloom filters made SQLite 10x faster : SQLite v3.38.0에 포함된 Bloom filter 연구 내용을 정리한 글이다. B-tree 행 기반 스토리지를 사용하는 SQLite를 OLAB 벤치마크 도구인 Star Schema Benchmark를 사용해서 비교하면 DuckDB가 30~50배 빠른 것으로 나타난다. 느린 이유를 파악하기 위해 프로파일링을 해보면 조인으로 인해서 SeekRowID가 많은 CPU 사이클을 사용하는 것을 알 수 있어서 Bloom Filter를 추가해서 행의 존재 여부를 미리 파악하도록 하니 7~10배가 빨라졌다.(영어)
  • 언제까지 블룸 필터만 쓸 것인가: Ribbon Filter : 블룸 필터를 사용하면 모든 테이블을 조회하지 않고 일부만 조회할 수 있기 때문에 많이 사용되는데 블룸 필터의 대안으로 등장한 리본 필터에 관해 설명하는 글이다. RocksDB도 LSM 트리를 사용하면서 성능을 위해 블룸 필터를 사용하고 있었으나 리본 필터를 사용하면서 약간의 CPU만 더 사용하면서 1억 개 키에서는 27%, 10만 개 키에서는 30%의 메모리를 아낄 수 있었다고 한다. 이 리본 필터의 원리를 설명한다.(한국어)
  • Node.js Now Supports TypeScript By Default : 현재 Current 버전으로 개발되고 있는 Node 23에 --experimental-strip-types 플래그를 제거하는 PR이 머지되었다. 이는 실제로 타입을 검사하는 것이 아니라 타입을 제거 후 실행하는 것이지만 이를 통해 23에서는 ts 파일을 직접 실행할 수 있게 될 예정이다.(영어)
  • Announcing Hotwire Spark: live reloading for Rails applications : Rails 애플리케이션에서 라이브 리로딩을 할 수 있는 Hotwire Spark를 공개했다.(영어)
  • Using GitHub Copilot in your IDE: Tips, tricks, and best practices : VS Code에서 GitHub Copilot을 잘 사용하기 위한 팁을 정리한 글이다. #editor로 현재 열어놓은 파일을 참고하거나 @workspace로 전체 워크스페이스에 대해 대화를 나누는 방법 같은 유용한 기능과 Copilot을 잘 쓰기 위해 파일 상단에 파일에 대한 설명을 적어두거나 함수나 변수명을 의미 있게 지어서 Copilot이 답변을 더 잘할 수 있게 하는 방법이 정리되어 있다.(영어)
  • 나의 GitHub Copilot 활용법 & Tip (for IntelliJ) : IntelliJ에서 GitHub Copilot의 사용법과 그동안의 경험을 통해 언제 GitHub Copoilot을 사용하면 유용한지를 정리해 두었다.(한국어)

인프라 관련

  • Incident Report for OpenAI : 지난 12월 11일 OpenAI가 4시간 동안이나 사용할 수 없었던 장애에 대한 보고서이다. 이 문제는 Kubernetes 클러스터의 가시성을 강화하기 위해 컨트롤 플레인 메트릭을 수집하기 시작했는데 이 수집으로 인해서 Kubernetes API 서버에 과부하가 걸렸고 결국 컨트롤 플레인이 다운되었다. 데이터 플레인에서도 DNS는 컨트롤 플레인에 의존하기 때문에 DNS가 업데이트되지 않으면서 문제가 장애가 발생했다.(영어)
  • The evolving role of SREs: Balancing reliability, cost, and innovation : 설문조사에 따르면 SRE의 94%가 SRE 직종을 동료에게 추천하겠다고 한 것으로 나타났다. SRE는 인프라 기반부터 비즈니스 목표까지 포괄적인 관점을 가질 수 있으며 비즈니스와 기술만의 상호작용이 업무 만족도의 주요 원인이었고 다양한 기술을 요구하고 있다. SRE의 스킬은 통합가시성, 자동화, 성능 최적화, 장애 대응, 분산 시스템 설계 등으로 나타났고 비용 최적화가 새롭게 SRE의 공식 업무로 자리 잡기 시작했으며 이미 통합 가시성에서 AI/ML을 사용하고 있는 것으로 나타났다.(영어)
  • How Pinterest Leverages Honeycomb to Enhance CI Observability and
    Improve CI Build Stability
    : Pinterest에서 Honeycomb를 사용해서 CI의 가시성을 높인 과정이다. 빌드할 때 Buildkite를 사용하는데 Buildkite를 Honeycomb와 통합해서 세부 단계의 트레이스를 보면서 빌드 시간이 증가하거나 실패했을 때 쉽게 파악할 수 있도록 했다.(영어)
  • Open sourcing h3i: a command line tool and library for low-level HTTP/3 testing and debugging : Cloudflare에서 QUIC으로 실행되는 HTTP/3의 저수준 테스트와 디버깅에 사용할 수 있는 Rust 라이브러리이면서 CLI인 h3i를 오픈소스로 공개했다. Cloudflare에서 HTTP/3를 지원하면서 공격 등 다양한 조건으로 테스트를 할 수 있도록 만들었다.(영어)
  • 2024 benchmarks for the DX Core 4 : DX에서 개발자 생산성을 측정하는 프레임워크를 DORA, SPACE, DevEx를 통합한 DX Core 4를 발표하고 500여 개 회사로 벤치마크한 데이터도 공개했다.(영어)

AI 관련

볼만한 링크

  • Ghostty: Reflecting on Reaching 1.0 : HashiCorp의 공동 창업자였던 Mitchell Hashimoto가 2년 전부터 만들고 비공개 베타로 테스트하던 터미널 에뮬레이터 Ghostty의 1.0을 공개했다.(영어)
  • Ghostty Is Native—So What? : Mitchell Hashimoto가 만들어서 공개한 터미널 에뮬레이터인 Ghostty에 대해 사람들이 성능에 대해 가장 많이 얘기하지만, 자신은 Ghostty가 네이티브 플랫폼이란 점이 과소평가 되었다고 설명하는 글이다. Ghostty는 macOS와 잘 통합되어 있기 때문에 OS에서 제공하는 기능을 Ghostty에서도 그대로 사용할 수 있다.(영어)

IT 업계 뉴스

프로젝트

  • Annotated Logger : 메서드나 클래스에 로거 객체를 주입할 수 있는 Python 패키지로 GitHub에서 공개했다.
  • Gitingest : GitHub 저장소를 입력하면 코드 베이스를 텍스트 설명으로 변환해서 LLM에 제공하기 좋은 형태로 만들어 준다.
  • curl-impersonate : curl로 요청 보낼 때 Chrome, Edge, Safari, Firefox 처럼 보이도록 하는 curl의 변형 빌드.

버전 업데이트

2025/01/01 21:40 2025/01/01 21:40