Outsider's Dev Story

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

기술 뉴스 #254 : 24-09-16

웹개발 관련

  • An SSR Performance Showdown : Fastify쪽에서 SSR 성능 비교를 진행했다. DIV를 나선형으로 그리는 화면을 기준으로 테스트했고 Fastify에서 테스트를 진행하기 위해 Ract, Vue, Solid, Svelte, Preact, fastify-html를 비교했고 별도로 렌더링 방법을 따로 제공하지 않는 Next.js, Astro, Qwik는 벤치마크에서 제외되었다. 이 벤치마크의 결과에 따르면 Fastify-html, Vue, Svelte, Solid, Preact, React 순으로 성능이 나타났다.(영어)
  • CSS @property and the New Style : 브라우저 렌더링 엔진을 후킹해서 CSS를 확장할 수 있게 하는 저수준 Houdini API에 속해있는 At-rule은 CSS의 동작을 지시하는 CSS 스테이트먼트인데 여기 새로 추가된 @property를 설명하는 글이다. 콜투액션 버튼을 예시로 @property를 사용해서 사용자 프로퍼티를 만들고 이를 이용해서 버튼 주위로 그라디언트가 회전하는 애니메이션을 구현하는 방법을 보여준다.(영어)
  • The Undeniable Utility Of CSS :has : Josh Comeau가 그동안 :has CSS 수도 클래스가 얼마나 유용한지 모르고 있다가 최근에 사용해 보면서 :has가 CSS-in-JS에서도 너무 편리하다면 자신이 발견한 사용 사례를 정리한 글이다. :has로 쓰는 기능이 대부분 있으면 좋은 기능이 많아서 지원 안 되는 일부 구형 브라우저에서도 큰 문제가 없고 @supports를 이용해서 지원 여부를 확인하는 것도 가능하다. 하위 요소의 상태에 기반에서 편하게 스타일을 지정할 수 있고 모달을 띄웠을 때 전체 페이지에 스크롤을 막는 등의 스타일에도 쉽게 사용할 수 있다.(영어)
  • Chrome ends support for First Input Delay : 이미 공지된 대로 Core Web Vitals에서 First Input Delay(FID)가 Interaction to Next Paint(INP)로 대체되었고 FID 지원 중단을 예고한 대로 이제 Chrome 도구에서 더는 FID를 지원하지 않게 되어 PageSpped나 CrUX에서 FID를 보고하지 않게 되었다.(영어)

그 밖의 개발 관련

  • OAuth from First Principles : Auth0의 오픈소스 대체제인 Stack Auth를 만드는 팀에서 클라우드 드라이브에 접근 권한을 서드파티에 주는 예시를 통해서 비밀번호를 넘겨주는 방식부터 안전하게 접근 권한을 서드파티에 허용하기 위한 흐름으로 개선하면서 OAuth에 초기 흐름을 보여준다. 이 흐름에서 리다이렉션 URI 조작이나, CSRF, 엑세스 토큰 도청 등 다양한 공격사례를 보여주면서 이를 막기 위해 지금 PKCE를 이용한 OAuth 2.0 인증 흐름을 보여준다.(영어)
  • FIDO2 클라이언트 SDK 오픈소스 소개 : Line에서 FIDO2 인증을 받은 서버와 호환되도록 WebAuthn Level 2 스펙을 따른 클라이언트 SDK를 아파치 라이선스로 공개했다.(webauthn-kotlin webauthn-swift) FIDO2 SDK의 동작 방식도 자세히 나와 있다.(한국어)
  • Creating a Git commit: The Hard Way : git addgit commit같은 Porcelain 명령어 대신 하위 수준을 처리하는 Plumbing 명령어로 커밋 과정을 살펴보는 글이다. 기본적으로 커밋을 구성하는 blob, tree의 구조를 설명하고 git hash-object, git update-index, git commit-tree 등 Plumbing 명령어를 사용해서 커밋이 어떻게 구성되는지 설명한다.(영어)
  • It’s time to stop using Python 3.8 : 2019년 10월에 릴리스 된 Python 3.8이 올해 10월부터는 생명주기가 끝나서 더는 보안패치를 포함해서 업데이트되지 않는다. 이를 빨리 업그레이드하라고 권하는 글로 5년 지난 3.8을 아직도 쓰고 있다면 조직 내에서 정기적인 업데이트 프로세스를 고려해야 한다고 하고 있다.(영어)

인프라 관련

  • Burn rate is a better error rate : Datadog에서 error rate와 burn rate에 관해서 설명하면서 실제로는 burn rate가 더 중요하다고 설명한다. error rate는 서비스의 SLO에서 1을 뺀 값으로 요청 수나 시간을 기준으로 할 수 있는데 백분율이나 수치로 오류 예산을 잡을 수 있다. burn rate는 SLO에서 오류 예산이 얼마나 빨리 소진되는지를 나타내는데 burn rate와 error rate는 거의 동일하지만 burn rate는 오류 예산을 고려하여 오류가 높은지 아닌지를 보여주기 때문에 더 정확하게 보여줄 수 있고 표준화된 알림을 보낼 수 있고 다중 창을 사용하면 알림 노이즈도 줄일 수 있다.(영어)
  • How Container Networking Works: a Docker Bridge Network From Scratch : Docker 브릿지 네트워크를 처음부터 만들어 보면서 컨테이너의 네트워크가 어떻게 동작하는지 설명하는 글이다. 웹에서 플레이그라운드를 제공해서 실제로 글을 보면서 실습을 따라 해보면서 netns, veth, bridge, NAT을 구성해 볼 수 있다.(영어)
  • Noisy Neighbor Detection with eBPF : Netflix에서 멀티 테넌트 환경에서 성능 문제를 해결하기 위해 어려운 문제 중 하나인 노이지 네이버 문제를 찾으려고 eBPF를 사용한 사례이다. CPU의 run queue의 지연시간을 측정하기 위해 스케줄링 관련 메트릭을 수집해서 노이지 네이버 문제를 빠르게 찾아낼 수 있게 했다. 구현을 완료 후 성능을 개선하기 위해 bpftop을 이용해서 eBPF 프로그램을 최적화했다.(영어)
  • Introducing Falco Talon v0.1.0 : eBPF 기반 보안 위협 탐지 도구인 Falco가 서드파티와의 통합이 부족해서 7년 전 Falcosidekick을 만들었다. Falco가 의심스러운 이벤트를 감지하고 Falcosidekick은 DevSecOps를 쉽게 알리고 알림 작업 등을 할 수 있는데 여전히 이벤트에 대응은 누락되어 있었다. 그래서 Kubernetes 클러스터에서 위협을 관리하기 위한 응답 엔진인 Falco Talon의 첫 버전을 공개했다. Falco Talon를 사용하면 Falco 이벤트에 대응해서 쉽게 규칙을 만들어서 실시간으로 대응할 수 있다.(영어)
  • First ClickHouse research paper: How do you make a modern data analytics database lightning-fast? : ClickHouse의 첫 연구 논문인 ClickHouse - Lightning Fast Analytics for Everyone이 초대형 데이터베이스 국제 콘퍼런스인 VLDB에서 채택되어 출판되었다.(영어)

볼만한 링크

  • Why A.I. Isn’t Going to Make Art : SF 작가인 테드 창이 뉴요커에 기고한 글로 그동안 항상 얘기하듯이 AI는 예술을 할 수 없다고 하는 글이다. AI는 다른 작가의 선택 사항의 평균을 구해서 선택하는데 이 평균이 흥미롭지 않은 선택이기 때문에 AI가 생성한 텍스트는 종종 밋밋하고 특정 작가의 스타일을 모방해서 파생 스토리를 생성하므로 흥미로운 예술 작품이 나오지 않는다. OpenAI는 소설을 쓰는 것 같은 노력이 필요한 AI를 만들고 싶어 하지 않고 노력보다 더 많은 것을 생성하는 AI를 목표로 하므로 오히려 아티스트에게는 방해가 되는 것이다. 프로그래머 Simon Willison은 LLM 훈련을 "저작권 있는 데이터에 대한 자금 세탁"이라고 했는데 이는 맞는 말이고 표절과 비슷한 것을 하게 하지만 알 수 없게 만들어서 죄책감이 없게 만들고 있다.(영어)
  • I just crossed $1 million on GitHub Sponsors. : 5년 전 직장을 그만두고 LivewireAlpine.js 프로젝트를 시작하고 후원과 컨설팅 등을 통해서 100만 달러를 벌게 된 과정을 정리한 글이다. 사람들이 돈을 낼 수 있도록 스크린캐스트나 스피커 등 이유를 제공해야 하고 소프트웨어 개발에 대한 비디오를 만들어서 제공하고 이메일 목록을 모으는 것이 중요하다고 얘기한다. GitHub 스폰서는 좋지만, 한 플랫폼에 의존도가 높으면 위험할 수 있으니 다양한 결제를 준비하는 것이 좋다. 오픈소스 프로젝트 개발에 대해서도 GitHub 이슈 대신 토론을 사용하라는 등 배운 경험을 공유한다.(영어)
  • Passwords have problems, but passkeys have more : 37 Signals가 ONCE/Campfire의 인증을 Passkeys로만 구축하려고 준비했지만 사용자 경험이 좋지 않아서 결국 다시 거둬냈다. Passkeys는 사용자가 명확히 알지 못한 상태로 특정 플랫폼과 연결되어 계정에 접근할 수 없게 만든다는 것이 문제이며 Passkeys가 유망해 보였지만 좋은 해결책은 아니었다고 얘기한다.(영어)
  • Why GitHub Actually Won : GitHub의 공동 창업자 중 한 명인 Scott Chacon이 GitHub이 왜 승리했는지를 돌아보았다. 당시 분산 버전 제어 도구가 관심을 끌고 있었지만 진지하게 호스팅하는 곳은 없었기에 적절한 시기에 시작할 수 있었고 Sourceforge나 Google Code는 취향이 없었기에 오픈소스 소프트웨어 개발도구 회사와 경쟁하기가 어려웠기에 승리할 수 있었는데 그 과정과 기록들이 자세히 나와 있다.(영어)

IT 업계 뉴스

  • NGINX has moved to Github! : NGINX가 그동안 Mercurial을 사용하다가 GitHub으로 공식 이동했고 Pull Request로 기여를 받기로 발표했다.(영어)
  • Breaking News: JSConf is Back and Joining the OpenJS Foundation : 더이상 진행되지 않던 JSConf가 OpenJS 재단에 들어가면서 JSConf를 처음 만든 Chris Williams가 로고 등 트레이드마크를 OpenJS 재단에 기부했다. 내년부터는 재단에서 진행하던 OpenJS World 콘퍼런스가 JSConf로 리브랜딩 될 것으로 보인다.(영어)
  • Learning to Reason with LLMs : OpenAI에서 대규모 강화 학습을 통해 복잡한 추론을 수행하는 새로운 모델 o1을 공개했다. o1은 대답하기 전에 내부적으로 긴 사고 사슬을 생성할 수 있어서 까다로운 추론을 더 잘할 수 있다.(영어)

프로젝트

  • OpenTofu Registry : Terraform 오픈소스 대체제인 OpenTofu의 프로바이더, 모듈 레지스트리
  • Matchumbeop : macOS용 한글 맞춤법 검사기
  • Rockpack : Typescript, SSR, 번들링 등의 구성을 가진 React 앱을 생성하는 도구
  • Yaak : Postman 대체제로 REST, GraphQL, gRPC API를 지원하고 이번에 오픈소스로 공개되었다.

버전 업데이트

2024/09/16 11:53 2024/09/16 11:53