Cloudflare Fonts: enhancing website font privacy and speed : Cloudflare에서 Google Fonts를 직접 캐싱해 주는 기능이 추가되었다. Google Fonts는 편리하지만, CSS 파일을 가져오는 API 주소와 폰트를 가져오는 주소로 나뉘어져 있어서 모두 가져오려면 8번의 왕복이 필요해진다. Cloudflare를 거치는 순간 HTML을 조작해서 응답 HTML에 바로 CSS 응답을 포함해서 한 번의 요청으로 바로 폰트를 로드할 수 있게 하고 이 폰트는 Cloudflare CDN에 캐싱 되어 서비스 자체 도메인에서 바로 폰트를 다운로드 받을 수 있게 지원해서 성능도 훨씬 빨라진다.(영어)
Encrypted Client Hello - the last puzzle piece to privacy : Encrypted Client Hello(ECH)는 TLS 핸드쉐이크 협상에 사용되는 Server Name Indication(SNI)를 마스킹하는 ESNI의 후속 기능이다. SNI는 중개자가 웹사이트 방문을 확인할 수 있는 암호화되지 않은 마지막 비트인데 이 ECH를 이제 Cloudflare의 모든 요금제에서 사용되어 사용자, Cloudflare, 웹사이트 소유자 외에는 누가 어떤 사이트를 방문했는지 알 수 없게 된다. TLS 핸드쉐이크할 때 SNI를 알려주는 ClientHello 부분에서 내부 SNI는 Cloudflare의 공개키로 암호화하고 외부 SNI는 cloudflare-ech.com로 설정하므로 중개자는 모든 웹사이트가 cloudflare-ech.com으로 접속하는 것으로 나타나게 된다.(영어)
React Internals Deep Dive : React의 소스 코드를 보면서 React의 내부 동작을 자세히 살펴보는 시리즈 글이다. 마운트라 렌더링, 훅 등을 차례로 살펴보는 30여편의 시리즈 글인데 하나씩 자세히 살펴보면서 공부하면 도움이 될 귀한 자료이다.(영어)
You can now use WebGPU in Cloudflare Workers : Cloudflare Workers에 WebGPU가 추가되었고 Workers의 오픈소스 런타임인 workerd가 WebGPU를 지원해서 로컬에서도 사용해 볼 수 있게 되었다. 이 구현은 Chrome 브라우저처럼 Dawn을 사용해서 Linux, macOS, Windows에서 사용할 수 있다.(영어)
Re-introducing the Cloudflare Workers Playground : Cloudflare Workers를 공개할 때 같이 공개했던 Playground가 오랫동안 방치되어 있었는데 그동안 Workers의 발전에 맞추어 Playground를 새로 만들어서 새로운 편집기 환경에서 Workers를 바로 테스트해 볼 수 있고 공유하거나 배포를 할 수 있게 되었다.(영어)
Cloudflare is free of CAPTCHAs; Turnstile is free for everyone : 봇을 차단하기 위해 사용하는 CAPTCHA의 대안으로 작년에 Cloudflare가 공개한 Turnstile이 누구나 이용할 수 있도록 완전히 무료로 공개되었다. 시각적 퍼즐이 사람에게도 어렵기 때문에 Turnstile은 퍼즐을 전혀 보여주지 않고 봇을 잡아내고 지난 1년 동안 모니터링한 결과 프로덕션에 사용할 준비가 완료되었다고 판단하고 정식 버전으로 공개되었다.(영어)
Introducing runes : Svelte에서는 버전 3에서 JavaScript를 리액티브 언어로 바꾸어서 선언적 컴포넌트 코드를 최적화된 자바스크립트로 변환했다. 그동안 다른 JavaScript 코드도 비슷하게 사용하고 싶다는 피드백이 있었고 이에 따라 Sevelte 컴파일러에 영향을 주는 심볼인 Rune을 사용하면 선언형으로 리액티브하게 최적화해 준다. 이는 Svelte 5에 추가될 기능이고 아직 개발 중이라 추후 달라질 수도 있다.(영어)
CSS Subgrid : CSS 그리드에서 그리드 컨테이너의 직접 자식에만 영향을 주는데 grid-template-columns를 subgrid로 지정해서 사용하는 서브그리드를 사용하면 부모 그리드의 값을 서브그리드에서 사용할 수 있어서 레이아웃 내에서 콘텐츠를 정렬할 수 있다.(영어)
그 밖의 개발 관련
Unlocking SwiftUI at Airbnb : Airbnb에서 선언적 UI 프레임워크로 2016년에 만든 Epoxy를 사용하고 있었고 Epoxy는 UIKit을 사용했다. 2019년 퍼스트 파티 선언적 UI 프레임워크인 SwiftUI가 나왔지만, Airbnb의 요구사항에 맞지 않아서 사용하지 않았지만 2022년에는 안정성과 API 가용성이 확보되어 SwiftUI 도입을 고려하기 시작했다. SwiftUI를 도입하면 더 좋아질 것이라는 기대 아래 디자인 시스템에서 재사용할 수 있는 컴포넌트를 구축하는 1단계와 예약 페이지, 프로필 페이지 등 전체 화면 구축의 2단계, 여러 화면으로 구성된 화면의 완전한 기능 구축 3단계로 계획했고 현재 2단계까지는 완료가 되었다. 이를 위해 디자인 시스템은 SwiftUI로 다시 구축하고 Epoxy와 SwiftUI가 서로 연결되도록 인프라를 구성하고 단방향 데이터 흐름으로 비즈니스 로직과 프리젠테이션 로직을 분리해서 쉽게 Epoxy를 SwiftUI로 변환할 수 있게 되었다. 그리고 SwiftUI 도입에 가장 어려운 점이 전문성을 갖추는 것이라는 것을 알고 있었기에 사내에서 워크숍을 개최해서 전문성을 높였다. SwiftUI 도입의 결과는 현재까지 긍정적이지만 SwiftUI가 오픈소스는 아니므로 디버깅에 어려움이 있었고 앞으로의 계획도 연간 발표라서 방향성에 대한 고민 등 남아있다.(영어)
Announcing Strada : HTML을 사용해서 JavaScript를 많이 사용하지 않고 웹 애플리케이션을 만드는 Hotwire의 기술로 하이브리드 모바일 애플리케이션을 만들 수 있게 하는 Strada가 발표되었다. Hotwire가 발표될 때 Strada도 스택에 포함되어 있었지만 이제 공개된 것이고 37signals에서는 HEY의 iOS/Android 앱을 만드는데 지난 3년 동안 사용했다고 한다.(영어)
인프라 관련
Making Sense Out of Native Sidecar Containers in Kubernetes : Kubernetes 1.28에 추가된 네이티브 사이드카 컨테이너를 자세히 설명하는 글이다. Pod의 일반 컨테이너보다 먼저 실행되어야 하는 작업을 위해 initContainers가 도입되었고 이는 항상 일반 컨테이너보다 먼저 실행되고 정의한 순서대로 실행되면서 앞의 컨테이너가 완료되어야 다음 컨테이너로 넘어가게 된다. 사이드카 패턴은 일반 컨테이너로 사용하지만 실제로는 일반 컨테이너보다 먼저 시작되고 나중에 끝나야 하고 Pod의 생명주기와 다르게 움직일 수도 있었기 때문에 이를 해결하기 위해 1.28에는 사이드카 컨테이너가 추가되었다. 하지만 sidecarContainers같은 게 추가된 게 아니라 initContainers에 restartPolicy: Always가 추가되어 다음 컨테이너의 시작을 막지 않고 종료 시 재시작되며 startup/readiness/liveness 프로브도 지원하며 일반 컨테이너가 모두 종료되면 종료되는 특징을 가진다. 이 동작을 이해할 수 있는 그림과 함께 예제도 제공해서 이해하기 좋다.(영어)
The Plan for InfluxDB 3.0 Open Source : 분산형 시계열 데이터베이스인 InfluxDB 3.0의 오픈소스 버전은 앞으로 InfluxDB Edge라고 부를 것이며 InfluxDB Edge를 릴리스하고 추가기능이 포함된 무료 커뮤니티 에디션인 InfluxDB Community를 릴리스할 것이라고 한다. InfluxDB Edge는 기존 레퍼지토리에서 개발하지만, 커뮤니티 에디션은 개발 과정이 이 레퍼지토리에 포함되지 않을 것이라고 한다. InfluxDB 3.0 아키텍처에는 1.x와 2.x의 역 인덱스(TSI), 시계열 병합 트리(TSM) 저장소 엔진이 포함되어 있지 않아서 InfluxDB Edge는 최근 데이터를 수집하고 쿼리하는데 최적이고 1.x와 2.x의 사용 사례를 모두 대체하지 않는다. 대신 더 오랜 기간의 데이터에 유용하도록 InfluxDB Community를 별도로 릴리스할 계획이다.(영어)
Introducing Kargo : Argo 프로젝트를 만드는 Akuity에서 GitOps에 맞게 CD 파이프라인을 재구성해서 각 스테이지를 연결해서 배포 조건, 생명 주기, 테스트를 설정할 수 있다.(영어)
npm provenance general availability : npm에서 GitHub Actios와 GitLab CI/CD에서 발생하였을 때 출처를 표기하는 기능이 추가되었다. 이 기능은 퍼플릭 패키지와 퍼블릭 저장소에서만 사용할 수 있으면 어떤 커밋에서 어떤 빌드 파일로 발생하였는지를 쉽게 확인할 수 있게 연결해 준다.(영어)
Announcing the GitHub Innovation Graph : 각 연구자가 GitHub의 데이터에 관심 있지만 데이터를 얻는 데 많은 장벽이 있다는 것을 깨닫고 이를 쉽게 확인하고 사용할 수 있도록 Innovation Graph를 공개했다. Innovation Graph에서 GitHub 내의 커밋, 저장소, 개발자, 프로그래밍 언어의 횟수를 국가별로 확인할 수 있고 이 데이터를 저작권이 없는 CC0-1.0 라이센스로 다운로드 받을 수 있다.(영어)
ChatGPT can now see, hear, and speak : ChatGPT가 음성과 이미지를 지원하게 되어 음성으로 ChatGPT와 대화를 나누거나 이미지를 올려서 결과를 얻을 수 있게 되었다. 이 기능은 순차적으로 사용자에게 적용될 예정이다.(영어)
An open letter to our community : Unity가 최근 설치마다 과금하는 런타임 요금제를 발표한 뒤 커뮤니티에 거센 저항을 받고 사과문을 올렸다. Unity 퍼스널 요금제는 계속 무료로 유지되고 런타임 요금을 과금하지 않는다고 한다. 또한 한도도 10만 달러에서 20만 달러로 높이고 Made with Unity 스플래시 화면에 대한 요구사항도 제거하고 12개월 후 수익이 100만 달러 미만인 게임에는 수수료가 적용되지 않는다고 한다. Unity Pro와 Unity Enterprise 요금제에 대해서도 런타임 요금제는 2024년 이후 다음 Unity LTS 버전부터 적용되며 이미 출시된 게임의 업그레이드에는 적용되지 않는다.(영어)
Comments