Outsider's Dev Story

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

기술 뉴스 #266 : 25-03-16

웹개발 관련

  • A 10x Faster TypeScript : TypeScript 컴파일러를 Go로 포팅하고 있다고 밝히고 기존보다 속도가 10배 빨라졌다고 한다. 새로운 코드 베이스는 2025년 중반 정도에 tsc의 기본 구현을 볼 수 있을 것이고 연말에 작업을 완료할 수 있기를 기대하며 TypeScript 6.x부터 새로운 코드 베이스에 맞추기 위한 변경이 도입될 예정이며 충분히 교체할 정도로 완성이 되면 7.0으로 출시될 예정이다. 토론을 보면 Go가 코딩 패턴이 유사하여 포팅이 쉽고 복잡성을 줄이기 좋아서 Go를 선택했다고 한다.(영어)
  • Lynx: Unlock Native for More : ByteDance에서 Lynx라는 웹 기술 기반을 웹뿐만 아니라 모바일 앱도 만들 수 있는 기술을 오픈소스로 공개했다. 비슷한 기술로 PhoneGat부터 React Native와 Flutter가 있지만 비슷한 접근으로 TicToc에서 네이티브 경험을 제공하기 위해 Lynx를 만들었다. Lynx는 메인 스레드 런타임과 자바스크립트 엔진인 PrimJS를 만들어서 초기 실행 및 우선순위가 높은 작업을 처리하여 성능을 높여서 웹에서 기존보다 2~3배의 런타임을 개선했고 자체 벤치마크에서 Android에서 다른 기술보다 더 빠르고 iOS에서도 경쟁력 있는 성능을 보여준다. 특정 프레임워크에 종속적이지 않지만, Lynx에서 React를 사용할 수 있는 ReactLynx를 공개하고 빌드 도구인 Rspeedy도 함께 제공하고 있다.(영어)
  • Accelerating Large-Scale Test Migration with LLMs : Airbnb에서 Enzyme으로 작성한 테스트를 React Testing Library로 변경하는 작업을 1.5년 정도 걸릴 것으로 예상하다가 자동화를 통해 6주 만에 마무리했다. 이 과정에서 LLM으로, 성공적으로 변환할 수 있음을 알게 되고 이를 확대하여 단계별로 나누어서 LLM이 문제를 수정하도록 하면서 무차별 대입으로 반복하는 것과 컨텍스트는 최대한 많이 제공하는 것이 가장 결과가 좋다는 것을 깨닫고 4시간 만에 75%를 마이그레이션 한다. 실패한 사례를 모아서 문제를 파악하고 다시 시도하도록 만들어서 94%까지 올리고 남은 100개 정도의 파일은 수동으로 처리했다.(영어)
  • LCP image subparts and RTT now available in CrUX : Google Chrome의 사용자 경험 보고서인 CrUX에 LCP(Largest Contentful Paint)를 분석할 수 있는 새로운 지표가 추가되었다. 2022년의 LCP 시간의 원인을 파악할 수 있도록 세분된 LCP 서브 파트를 소개했는데 이번에 이미지에서 서브 파트 지표가 추가되었다. 이를 통해 첫 바이트를 받는데 걸리는 시간(TTFB), 리소스를 로드하는데 걸리는 지연시간, 리소스를 로드하는 시간, 엘리먼트를 렌더링할 때 걸리는 지연시간을 나누어서 볼 수 있어서 LCP를 더 쉽게 최적화할 수 있게 되었다.(영어)
  • Double-keyed Caching: How Browser Cache Partitioning Changed the Web : 웹 브라우저에서 캐싱은 20년 이상 잘 동작했지만, 최근 개인 정보 보호를 위해 이중 키 캐싱 혹은 캐시 파티셔닝이 도입되고 있다. 기존에는 퍼블릭 CDN의 리소스를 캐싱해서 모든 곳에서 같이 사용했지만, 브라우저 히스토리가 노출될 수 있고 타이밍 공격 등이 발생할 수 있어서 이제 이중 키 캐싱을 도입하고 있어서 같은 리소스도 도메인별로 따로 관리하게 된다. Chrome의 데이터에 따르면 이에 따라서 캐시 누락률과 전송 바이트가 증가하게 되어서 이제 퍼블릭 CDN의 사용 권장은 재검토할 필요가 있고 CDN 비용도 증가할 수 있으며 도메인 통합이 성능상 이점이 생길 수 있게 되었다. (영어)

그 밖의 개발 관련

  • Here’s how I use LLMs to help me write code : Simon Willison이 지난 2년간 LLM으로 좋은 코딩 결과를 얻기 위해 깨달은 방법 등을 정리한 글로 기대치 설정하기, 사용하는 모델의 학습 완료일 고려하기, 컨텍스트 충분히 제공하기, 테스트는 직접 작성하기, 시그니처 등을 사용해서 구체적으로 요청하기 등 다양한 팁과 왜 그렇게 사용하는지를 설명한다.(영어)
  • 한국 서비스를 기반으로 시스템 디자인 공부하기 – 인터파크 티켓 (상), (하) : 국내 서비스인 인터파크 티켓을 예시로 시스템 디자인 인터뷰를 진행할 수 있도록 정리한 글이다. 인터파크 티켓의 공연 티켓을 예매하는 흐름을 예시로 적절한 요구사항을 정의하고 기능적 요구사항과 비기능적 요구사항을 분리한 뒤에 티켓 예매하는 기능을 설계하고 비기능적 요구사항인 동시 구매 방지와 고가용성을 유지하면서 대규모 트래픽을 감당할 수 있는 시스템을 설계하는 접근을 설명한다.(한국어)
  • Go에서 string ⇄ []byte 7배 빠르게 변환하기 : Go 언어에서 string[]byte간 변환을 할 때 성능에 영향이 있다면 unsafe 패키지를 통해 메모리 할당을 하지 않고 변환하는 방법을 통해 7배 정도 속도를 개선할 수 있다.(한국어)
  • Sign in as anyone: Bypassing SAML SSO authentication with parser differentials : Ruby에서 SSO를 위한 SAML 구현에 사용하는 ruby-saml에서 인증을 우회할 수 있는 취약점이 발견되었다. 이는 어셜션 유효성 검사에 단일 서명을 가지고 있다면 모든 사용자로 로그인할 수 있는 취약점으로 ruby-saml을 사용하고 있다면 1.18.0로 업그레이드하기를 권고한다.

인프라 관련

  • Shopify’s Journey to Planet-Scale Observability : Shopify의 방식에 맞으면서 성능과 비용을 맞추는 상용 솔루션이 없어서 직접 만들기로 하고 StatsD, Prometheus, Loki, Tempo, Grafana, ClickHouse, Apache Parquet을 사용해서 만들었다. 코드명 Observe인 이 통합 가시성 플랫폼은 트레이스와 비즈니스 메트릭의 상관관계를 보여줄 수 있었으면 Shopify 엔지니어의 운영 방식에 맞춰서 동작하도록 만들었다고 한다.(영어)

AI 관련

  • DeepSeek Open Infra : DeepSeek에서 모델을 서빙하면서 적용한 5개 프로젝트를 오픈소스로 공개했다. 이번에 공개된 프로젝트에는 MLA 디코딩을 효율화한 FlashMLA, MoE를 위한 expert-parallel communication 라이브러리인 DeepEP, FP8 General Matrix Multiplications(GEMMs) 라이브러리인 DeepGEMM, 병렬처리 최적화를 위한 DualPipe와 DualPipe, 데이터 접근 최적화를 위한 3FS 파일시스템과 3FS에서 데이터를 처리하는 Smallpond가 포함되었고 모델을 서빙하면서 들어간 비용에 대한 통계를 공개했다.(영어)
  • New tools for building agents : OpenAI에서 에이전트 개발에 도움이 되는 Response API, Web search, File search, Computer use, Agents SDK를 공개했다.(영어)
  • Introducing Gemma 3: The most capable model you can run on a single GPU or TPU : Google이 Gemini 2.0 기반으로 제작된 경량 모델인 Gemma 3를 공개했다. Gemma 3는 1B, 4B, 12B, 27B 모델로 제공된다.(영어)
  • ChatGPT on macOS can now directly edit code : macOS용 ChatGPT 앱에서 VS Code, Xcode, JetBrains IDE 등에서 직접 코드를 수정할 수 있는 기능을 추가할 예정이라고 밝혔다.(영어)
  • Mistral OCR : Mistral에서 전 세계의 문서를 더 잘 활용하기 위해서 Mistral OCR를 공개했고 개발자 제품군인 la Plateforme에서 API를 사용할 수 있다. 이번에 공개된 Mistral OCR은 복잡한 문서도 이해하고 다국어와 멀티모달을 지원하면서도 가장 빠른 속도로 최고 수준의 벤치마크를 제공하고 있다.(영어)

볼만한 링크

  • The End of Programming as We Know It : AI의 등장으로 프로그래밍이 종말이 오는 게 아니라 우리가 알고 있는 프로그래밍의 종말이라고 얘기하는 Tim O'Reilly의 글이다. 그동안의 발전도 모두 추상화가 높아지면서 발전했고 프로그래머가 줄어들기보다는 더 많아진 상황에서 지금 프로그래머가 하는 일은 쓸모 없어질지도 모르지만, AI로 대체될 사람은 중급, 중견 프로그래머가 아니라 새로운 프로그래밍 도구와 패러다임을 수용하지 않고 과거에 집착한 사람들이라고 스티브 예거가 말했다고 한다. 과거 숙련공을 기계를 사용하는 저숙련자들이 대체할 때도 실제로는 다른 기술을 가진 숙련공으로 볼 수 있으므로 기업은 직원을 대체하는 게 아니라 AI로 직원의 역량을 강화해야 한다. 복잡한 프로그램의 마지막 30%는 AI가 아직 해결하지 못하는 70% 문제가 여전히 존재하기에 프로그래머는 필요하고 이 변화의 초기 단계에 있는 것이다.(영어)

IT 업계 뉴스

  • AI의 시대? 오히려 개발을 배워야죠 (번역) : AI가 발전할수록 AI를 수동적으로 사용하는 것에 그치지 않고 AI 코딩 보조 도구를 잘 사용할 수 있는 개발 지식을 갖춘 사람이 다른 사람보다 10배 더 큰 영향을 줄 수 있고 이런 사람이 더욱더 늘어날 것이라는 글이다.(한국어)

프로젝트

  • Firecrawl : 웹사이트를 크롤링해서 LLM에 제공할 수 있는 마크다운이나 구조화된 데이터로 만들어주는 도구.
  • Interview Coder : 코딩 인터뷰 문제를 AI로 푸는 프로그램으로 이를 이용해서 빅테크에 실제로 합격한 걸 영상으로 올려서 화제가 되었다.
  • PDF Slick : React, SolidJS, Svelte 등 자바스크립트 앱에서 PDF 문서를 보고 사용할 수 있는 라이브러리.
  • Beszel : 경량 서버 모니터링.
  • Google Gen AI SDK for TypeScript and JavaScript : Google Gemini를 위한 Gen AI JavaScript SDK.
  • Git Truck : Git 저장소의 시각화 도구.
  • EKS Node Viewer : Kubernetes 클러스터의 동적 노드를 시각화는 도구.

버전 업데이트

2025/03/16 07:06 2025/03/16 07:06