2023 Web Framework Performance Report : 모던 프레임워크가 현실에서의 성능과 Core Web Vitals에 미치는 영향을 파악하기 위해 CrUX, HTTP 아카이브, Core Web Vitals 기술 보고서를 통해 공개된 데이터를 바탕으로 각 프레임워크를 비교한 보고서로 Astro, Gatsby, Next.js, Nuxt, Remix, SveltKit를 선정했고 비교를 위해 WordPress의 데이터도 같이 보았다. 각 웹 프레임워크의 Core Web Vitals의 각 항목과 Lighthouse로 비교한 결과를 보여주고 있다. Astro에서 공개한 보고서이지만 공개 데이터를 사용했고 직접 테스트한 것은 없다고 강조하고 있다.(영어)
Chrome’s Headless mode gets an upgrade: introducing --headless=new : 2017년에 도입된 크롬의 헤드리스 모드는 --headless 플래그를 사용해서 크롬의 모드 중 하나인 것처럼 보이지만 실제로는 완전히 별도의 구현체가 사용되는 것이었다. 그래서 크롬과 헤드리스 크롬은 다른 버그를 가지고 있었고 유지보수하기도 쉽지 않은 문제가 있었다. Chrome 112부터 --headless=new로 사용할 수 있는 새로운 헤드리스 크롬은 크롬과 같은 구현체를 사용한다. 기존 헤드리스 모드는 --headless=old로 여전히 사용할 수 있다. Puppeteer/WebDriver로 새로운 헤드리스 크롬을 사용하는 방법과 관련 옵션이 정리되어 있다.(영어)
Framework-defined infrastructure : Vercel에서 Infrastructure as Code의 발전된 형태로 Framework-defined infrastructure(FdI)를 설명하는 글이다. 기존 IaC의 필요성은 충분했지만, 인프라를 따로 관리했어야 했는데 FdI에서는 클라우드의 리소스를 추상화해서 애플리케이션 배포할 때에 인프라에 자동으로 매핑될 수 있게 한다. Next.js를 예로 들면 배포할 때 빌드된 정적 파일은 CDN 등에 올리고 컴퓨팅 파워가 필요한 서버 코드는 서버리스를 이용하게 된다. 클라우드의 서버리스 인프라는 매번 새로 만들 수 있으므로 이러한 구현이 가능해졌으며 불변 배포를 통해 배포와 인프라를 매핑할 수 있다.(영어)
Yarn 대신 pnpm으로 넘어간 3가지 이유 : Airbridge에서 pnpm으로 갈아타고 1년이 지난 후 경험을 공유한 글이다. 기존에 Yarn Berry를 사용했는데 PnP 모드로 패키지를 압축해서 저장하기에 오히려 Git에 부하를 준다고 생각했고 pnpm은 node_modules에 직접 설치하지 않고 전역 저장소에 설치한 패키지를 심볼릭 링크로 관리했기 때문에 효율적이었고 모노레포 관리도 pnpm이 더 편했다고 한다. Yarn 대비 패키지 설치 속도도 줄어들었고 만족하고 있다고 한다.(한국어)
Why Turborepo is migrating from Go to Rust : 빌드시스템인 Turborepo는 esbuild를 따라 Go로 작성되었지만 1.7 버전부터는 Rust로 점진적인 마이그레이션을 하기로 했다. 단순성을 선호하고 네트워크 컴퓨팅에 강점이 있는 Go가 Turborepo에에서는 어울리지 않았고 Rust의 타입 시스템과 세이프티 기능으로 충분한 가드레일을 배치할 수 있었기 때문에 유리한 점이 많았다. 또한 C/C++ 라이브러리를 사용할 때도 Rust가 유리했고 팀도 Rust를 더욱 쓰고 싶어 했다고 한다. Rust-Go-Rust 샌드위치 방식으로 점진적인 마이그레이션을 진행 중이다.(영어)
그 밖의 개발 관련
You Don't Need a Build Step : Deno에서 쓴 글이라 결국 Deno와 Fresh를 강조하는 글이긴 한데 생각해 볼 지점은 있다고 생각한다. Node.js와 브라우저 자바스크립트는 호환되지 않는데 Node.js는 파일 시스템 기반이고 브라우저 자바스크립트는 비동기적으로 스크립트와 리소스를 가져오기 위해 만들어졌다. 개발 환경을 개선하기 위해서 빌드 도구가 발명되었지만, 개발자 경험이 증가하는 만큼 빌드 복잡도는 증가하기 시작했고 요즘 도구는 빌드 도구는 컴파일, 압축, 번들링, 코드 분할로 나뉘어져 진행되고 있다. 결론에 동의하진 않지만 Deno와 Fresh는 이러한 과정이 필요 없다고 얘기하고 있다.(영어)
파이썬과 러스트 : 카카오 추천팀에서 사용자 지표를 처리하는 플랫폼을 개발하면서 Python으로 프로토타이핑 후 Rust로 다시 개발해서 둘을 비교한 과정을 정리했다. Rust가 빠르면서 메모리와 CPU도 훨씬 적게 사용했지만, Rust의 학습 난이도는 꽤 있었으며 Python이 쉬운 언어이지만 타입 어노테이션도 쓰고 하다 보니 둘의 생산성 차이는 크게 느끼지 못했고 오히려 Rust의 컴파일 시간이 긴 것은 단점이었다고 한다.(한국어)
Announcing OpenChatKit : AI용 분산 클라우드를 제공하는 Together에서 소스 코드, 모델 가중치, 트레이닝 데이터 세트를 포함한 OpenChatKit을 오픈소스로 공개했다. OpenChatKit은 GPT를 이용하는 챗봇을 만들 수 있게 개발되었으며 목적에 맞게 파인 튜닝도 지원하고 있다.(영어)
Feature Toggle 150% 활용하기 : 배포할 때 코드는 포함하더라고 기능의 공개 여부는 동적으로 관리하는 Martin Fowler의 Feature Toggles 글을 공부하고 이를 실제 업무에 적용해 가면서 개선한 내용이다. 피처 토글의 설계 원칙에 따라 토글 포인트, 토글 라우터, 토글 설정을 구현하는 Java 코드를 보여주고 이를 권한 토글과 카나리 토글에 활용하는 방법을 설명한다.(한국어)
Introducing Rust-Based Ztunnel for Istio Ambient Service Mesh : Istio의 ambient mesh를 위한 ztunnel(zero trust tunnel) 컴포넌트는 HTTP 트래픽을 종료하거나 헤더를 파싱하지 않고 mTLS, 인증, L4 인가, 텔레메트리를 위한 기능을 가지고 있으며 Kubernetes 워커 노드에서 실행되어 최소한의 리소스 풋 프린트를 남기는 것이 중요하다. 작년 처음 공개했을 때 ztunnel은 Envoy 프락시로 구현했지만 ztunnel에는 Envoy가 적합하지 않다고 판단했다고 합니다. ztunnel이 Istiod와 통신할 수 있는 최소한의 구현만 할 수 있게 구성 프로토콜을 만들고 Rust로 빠르고 가볍게 구현했다고 한다. Istio에서 Go를 쓰고 있어서 Go로 목적을 달성하길 원했으나 Rust와 Go로 모두 구현해 본 결과 Rust가 더 적합하다고 판단했다고 한다.(영어)
Reducing Costs and Improving Observability With Loki : ActiveCampaign이라는 회사에서 ELK(Elasticsearch, Logstash, Kibana)로 로그 시스템을 운영하다가 비용이 너무 커져서 Loki로 갈아타기로 했다고 한다. 프로덕션에 적용할 때는 최적화가 쉽지는 않았지만, 완전히 이전하고 난 뒤에는 이전보다 로그 관련 호스팅 비용을 73% 줄일 수 있었다고 한다.(영어)
SRE vs. Platform Engineering vs. DevOps : SRE, 플랫폼 엔지니어링, DevOps를 비교해서 설명하는 글로 간단한 글이지만 핵심을 잘 짚었다고 생각한다. SRE는 운영에 소프트웨어 엔지니어링 접근을 도입한 것인데 이를 리브랜딩이라고 생각할 수 있지만 프로덕션 프로세스의 사전 예방과 자동화에 중점을 두고 있다. 플랫폼 엔지니어링은 개발자 셀프서비스를 지원하는 플랫폼을 구축한다. SRE는 위기관리를 즐기고 장애 문제 해결을 좋아하는 경향이 있지만 플랫폼 엔지니어는 전형적인 소프트웨어 엔지니어로 중단없이 작업하는 것을 선호한다.(영어)
Business 관점에서 바라본 AI : 많은 스타트업 창업과 투자를 했던 노정석 대표가 비즈니스 관점으로 AI를 어떻게 봐야 하는지 AI 시장의 상황과 예측을 정리한 66장짜리 PDF 문서이다. LLM은 기본적으로 Computation Infra 싸움이고 이전엔 트레이닝만 얘기했지만 이젠 서비스 제공으로 넘어오면서 완전히 다른 게임이 되었기에 AI 회사에서 PM은 AI 논문도 이해하고 테스트하고 비즈니즈도 알아야 하는 상황이 되어 버렸다. AI 산업에서 value capture가 일어나는 곳을 Tesla처럼 풀스택 서비스를 구축해서 버티컬 영역을 독점하거나 LLM을 API로 제공하는 서비스만 남을 것이라고 얘기한다. 인사이트가 많이 담긴 좋은 문서다.(한국어)
Utterances 에서 Giscus 로 마이그레이션하기 : GitHub의 이슈를 댓글 시스템으로 쓰는 Utterances가 있는데 최근에는 GitHub의 디스커션으로 댓글 시스템도 나왔다. Utterances도 좋긴 하지만 제약이 좀 있어서 Giscus를 설정하고 수동으로 마이그레이션하는 방법을 정리한 글이다.(영어)
Introducing ChatGPT and Whisper APIs : OpenAI에서 ChatGPT와 Whisper를 이용할 수 있는 API를 공개했다. Whisper는 음성을 텍스트로 변환하는 모델이다. 그동안 시스템 개선을 통해 ChatGPT의 비용을 90% 절감해서 1천 토큰당 $0.002의 가격을 책정할 수 있었고 ChatGTP와 같은 gpt-3.5-turbo 모델을 사용한다. Whisper는 $0.006로 책정되었다.(영어)
The next generation of AI for developers and Google Workspace : Google에서 제너레이티브 AI를 사용할 수 있는 PaLM API와 프로토타이핑을 할 수 있는 도구인 MakerSuite를 발표하고 Gmail과 Google Docs 등 Google Workspace에서도 제너레이티브 AI를 사용할 수 있게 될 것이라고 발표했다. 아직은 클로즈 베타로 Google 내부에서 허락된 파트너는 몇 주내에 사용해 볼 수 있을 것이라고 한다.(영어)
‘276조’ 실리콘밸리은행은 왜 48시간 만에 붕괴했나 : 지난 40년간 실리콘밸리 스타트업을 지원해 온 실래콘밸리은행(SVB)이 뱅크런 이후 2일 만에 파산했다. SVB는 언제든 상황은 요청할 수 있는 예금자들에게 저금리로 단기 자금을 모아서 급속도로 성장했지만, 미국 금리가 오르면서 그동안 사두었던 장기채권의 가치가 하락했고 IPO 시장도 둔화하여 자금 도달도 둔화하면서 손실을 발표하다 뱅크런이 발생했다.(한국어)
Update on Meta’s Year of Efficiency : Meta의 마크 주커버그가 4월에는 기술 그룹에서 5월에는 비즈니스 그룹에서 구조 조정을 할 것이라고 발표하며 10,000명을 해고하고 5,000개의 채용을 닫을 것이라고 했다. 힘들 결정이었음을 강조하며 수평 조직, 린 조직, 기술의 중요성, 효율성을 위한 도구 개발, 동료들과 대면이 중요한 문화임을 강조했다.(영어)
Comments