How we built JSR : Deno에서 최근에 공개한 자바스크립트 레지스트리인 JSR를 어떻게 만들었는지를 설명하는 글이다. Postgres에 데이터를 저장하고 Rust의 Hyper HTTP 서버로 API 서버를 구축했다. 웹사이트는 웹 프레임워크인 Fresh를 사용해서 아일랜드 렌더링으로 웹사이트 속도를 개선했고 TTFB를 줄이기 위해 네트워크 왕복은 최대한 줄였으며 가능한 한 <form>을 사용해서 성능과 접근성을 확보했다. 모듈을 해석할 때 ts, js, tsx 등 다양한 파일 확장자를 검사해야 하는데 이러한 프로빙은 네트워크에서는 너무 느리기 때문에 프로빙이 필요 없도록 만들었다.(영어)
디자인 시스템, 코드를 넘어서 : 디자인 시스템을 세 번째 만들어 보면서 배운 내용을 정리한 글이다. 만들기 전에는 디자인 시스템의 목표를 잡고 달성할 것과 달성하지 않을 것을 명확히 해야 하고 만드는 중에는 앞에서 세운 대원칙을 계속해서 의식하며 지키려고 노력해야 하고 의사결정이 계속 필요하기 때문에 너무 좋은 코드에 집착하기보다는 지속 가능성을 추구하고 컴포넌트의 목표를 정의해야 하며 최소한의 안전장치로 테스트 코드는 꼭 필요하다. 다 만들고 나서는 아직 완전하지 않은 시스템을 사용할 초기 지원자를 찾아서 피드백을 받아야 하고 이 얼리어답터를 팬으로 만들어야 한다.(한국어)
그 밖의 개발 관련
Netflix의 Java 사용 변천사 (번역) : Evolution of Java Usage at Netflix의 번역 글이다. Netflix 첫 화면의 여러 데이터를 가져올 때 성능 문제를 해결하기 위해 Groovy로 만든 BFF(Backend for Frontend)를 사용해서 여러 마이크로 서비스에서 데이터를 가져와서 프론트엔드에 내려주는 역할을 했다. 이후 스레드 관리의 복잡성을 해결하려고 RxJava 기반의 Hystrix를 만들고 이후에는 GraphQL Federation로 개선했다. 또한 Java 버전도 8에서 17로 마이그레이션 되었고 오픈소스 Spring Boot도 그대로 사용하고 있다.(한국어)
A Tale of Two Frameworks: The Domain Graph Service Framework Meets Spring GraphQL : Netflix는 Spring Boot 기반 GraphQL 서비스를 만들 수 있는 DGS 프레임워크를 2021년 오픈소스로 공개했는데 이후 Spring 팀의 Spring GraphQL이 성숙해 지면서 최근에는 비슷한 수준까지 올라와서 같은 문제를 해결하는 2개의 프레임워크가 존재하게 되었다. 이 둘을 따로 관리하는 것보다 협업하는 게 효과적일 거로 생각해서 DGS를 Spring GraphQL과 통합하고 성능 문제도 해결해서 DGS에서도 Spring GraphQL과 동등한 성능을 가지게 되었다. 옵트인 방식을 지원해서 Spring GraphQL 스타터를 적용한 뒤 레거시 DGS 코드를 제거할 계획이 있다.(영어)
Introducing Trio Part I, Part II, Part III : Airbnb에서 Jetpack Compose 화면 아키텍처를 위한 안드로이드 프레임워크인 Trio를 Maverikcs 기반으로 개발해서 1년 반 동안 프로덕션에서 사용했다. 2018년 오픈소스로 공개한 Maverikcs는 UI와 분리한 상태관리 라이브러리인데 상태관리를 잘 동작했지만, Mavericks와 통합된 Fragment 기반 아키텍처에서 어려움이 있었기에 Jetpack Compose를 도입해서 Trio를 구축하기 시작했다. Trio를 통해 모듈 경계를 넘어 통신할 때 type safety를 보장하고 스크린샷과 UI 테스트가 가능한 장점이 있다.(영어)
Prodverbs : Google SRE에서 SRE가 가져야 하는 일반적인 신념을 모은 속담 페이지를 공개했다.
두 시스템이 동작하기 위해 서로 동의해야 한다면 언젠가는 필연적으로 의견이 맞지 않을 것이다.
차이는 줄이고 평균값은 높인다.
백업은 마지막 복원에만 유효하다.
SLO가 없다면 노가다 운영 작업이 업무다.
희망은 전략이 아니다.
서비스 성장에 따라 유지보수를 비선형적으로 확장해라.
모든 인시던트가 새롭기를 바란다.
HTTP/2 CONTINUATION Flood : HTTP/2의 CONTINUATION 프레임의 구현 버그를 이용한 서비스 거부 공격을 할 수 있을 취약점이 발견되었다. 취약점이 있는 서버의 버전 확인이 필요하다.(영어)
볼만한 링크
sora와 gemini 1.5사태가 시사하는 보통 기업들의 AI전략 : 하용호 님이 AI 비즈니스에서 경쟁력의 핵심이 무엇인지에 대해 정리한 글이다. 알고리즘 경쟁이 치열하지만 결국 수렴할 것이고 하드웨어 경쟁이 커지고 있지만 추론 전용 하드웨어들이 나오면서 하드웨어의 장벽도 없어질 것이다. private 데이터를 반영하기 위해 파인튜과 RAG를 사용하지만, RAG는 부족한 컨텍스트 윈도우를 활용하는 기법이었는데 얼마 전 공개된 Gemini 1.5sms 100만 개의 컨텍스트를 제공하면서 결국 RAG의 중요성도 줄어들 것이다. 그러면 남는 것은 독보적인 private 데이터를 가진 회사가 경쟁력을 가질 것이고 이러한 private 데이터를 많이 가진 Google과 Apple이 장기적으로 유리한 위치를 차지할 것으로 내다보고 있다.(한국어)
박수칠 때 떠나는 VC: Benchmark : 유명한 VC인 Benchmark Capital의 운영 철학을 살펴본 글이다. Benchmark Capital은 One team으로 운영되며 모두가 똑같은 파트너 자격으로 동등하게 분배하고 있으며 스스로 성과를 못낸다고 생각하면 떠나는 자발적 해고 시스템을 가지고 있으면서 스타트업의 단순 서포터가 아니라 감시자 역할을 하는 특이한 철학을 가지고 운영하고 있다.(한국어)
IT 업계 뉴스
Our Response to Hashicorp's Cease and Desist Letter : Terraform의 라이센스 변경으로 리눅스 재단하에 Terraform의 오픈소스 포크인 OpenTofu가 삭제 블록 구현과 관련해서 최근 HashiCorp에게서 BSL 코드를 도용했다는 서한을 받았다. OpenTofu는 코드 비교한 내용을 공개하면서 이러한 주장이 근거가 없다고 반박했다.(영어)
Comments