웹 개발자라면 알고 있어야 할 HTTP의 진화 과정 : HTTP 표준이 달라진 과정을 정리한 글이다. 처음에는 아주 간단한 HTTP/0.9 명세가 있었지만, 요구사항이 늘어나면서 HTTP 워킹그룹이 생겨서 1996년 HTTP/1.0을 만들고 연결 재사용, 파이프라이닝, 청크 전송, 캐시 제어 등을 추가해서 1997년에 HTTP/1.1을 발표하게 된다. HTTP/1.1의 헤더 중복 문제와 HOLB(Head-of-Line Blocking) 문제 등을 해결하기 위해 2015년 SPDY 기반으로 HTTP/2가 만들어진다. 기존의 HTTP는 모두 TCP 기반이라 TCP의 문제는 해결하기 위해 UDP 기반의 QUIC 프로토콜에서 동작하는 HTTP/3가 등장하게 된다.(한국어)
그 밖의 개발 관련
Introducing LiteFS : fly.io에서 Litestream의 아이디어를 확장한 LiteFS를 공개했다. Litestream이 SQLite WAL 파일을 복사한다면 LiteFS는 각 트랜잭션을 검사하고 전달하는 역할을 한다. 이를 위해서 FUSE를 선택해서 앱과 데이터베이스 파일 사이에 파일 시스템 프락시 같은 걸 넣어서 트랜잭션을 리플리카에 복사할 수 있게 된다.(영어)
How we built Pingora, the proxy that connects Cloudflare to the Internet : Cloudflare에서 Nginx를 수년 동안 잘 사용했지만 Cloudflare가 커짐에 따라 한계를 느껴 Rust로 만든 HTTP 프락시 Pingora를 만들어서 하루에 1조 요청을 처리하게 되었고 Nginx 때보다 CPU와 메모리는 이전보다 1/3로 줄었다고 한다. Nginx의 워커 구조에서 각 요청은 하나의 워커로만 처리되므로 CPU 불균형이 발생했고 커넥션 풀이 작업자마다 할당되므로 연결 재사용이 좋지 않았다. 이를 해결하기 위해 Nginx를 포크할지, 다른 프락시로 바꿀지, 프락시를 새로 만들지를 고민하다가 새로 만들기를 결정했다. Rust를 선택하고 HTTP 라이브러리는 직접 구축하기로 하고 커넥션 풀을 공유하기 위해 멀티 스레딩을 선택했다. Pingora는 TTFB(time-to-first-byte)가 중윗값에서 5ms 줄었고 95 퍼센타일에서 80ms 감소시켰고 새로운 연결도 1/3로 줄었다.(영어)
Introducing workerd: the Open Source Workers runtime :
Cloudflare에서 JavaScript/Wasm 런타임인 workerd의 첫 베타를 오픈소스로 공개했다. workerd는 Cloudflare Workers와 대부분의 코드를 같이 사용하지만 다른 환경에서도 동작할 수 있도록 설계되었다. workerd는 셀프 호스트 애플리케이션에 사용될 것이고 주로 웹서버가 될 것이며 워커의 로컬 테스트에도 사용할 수 있다.(영어)
How Is Platform Engineering Different from DevOps and SRE? : Platform Engineering이 DevOps와 SRE의 다음 단계라고 설명하는 글이다. DevOps가 주목받고 많은 성공 사례가 있었지만 잘못된 도입으로 개발자에게 과한 책임을 요구하면서 인지 부하를 높이게 되었고 구글이 만든 SRE도 이론상은 괜찮지만, 인력이 부족해서 가짜 SRE가 생기게 되었다고 한다. 플랫폼 엔지니어링은 셀프서비스를 가능하게 하는 도구와 워크플로를 만드는 분야라고 하면서 이 플랫폼이 DevOps와 SRE의 문제를 완화할 수 있다고 합니다. 약간 홍보 글 같은 느낌이 있기도 하지만 셀프서비스를 할 수 있는 플랫폼을 만드는 가치에 대해서는 동의한다.(영어)
AWS vs GCP reliability is wildly different : AWS와 GCP에서 3,000 T4 GPU를 2주간 띄워 보면서 비교해 보았다. AWS는 일관적으로 15초 이내에(평균 11.4초) 실행되었지만, GCP는 45초 가까이(평균 42.6초) 걸렸고 AWS는 1번의 실패가 있었지만, GCP는 84번의 실패가 있었다. 둘의 준비 상태가 다른가 의심해 봤지만, SSH 접속이 되는 걸 봤을 때 그런지는 않아보인다고 한다.(영어)
How DoorDash Ensures Velocity and Reliability through Policy Automation : DoorDash가 OPA(Open Policy Agent)를 도입하는 과정이다. Terraform과 Atlantis를 이용해서 인프라스트럭처 프로비저닝에 GitOps 워크플로를 사용하고 있었는데 조직과 인프라가 커지면서 인프라팀 엔지니어는 온종일 인프라 변경에 대한 PR을 리뷰하는데 보내게 되었고 문제가 생겼을 때 인프라의 영향도 너무 커졌다고 한다. 인프라 자동화로 신뢰성과 가속도를 높이기 위해 OPA(Open Policy Agent)를 사용하기로 결정하고 Atlantis에 Conftest를 사용해서 PR 리뷰 과정 중에 자동으로 OPA 규칙을 검사하도록 했다.(영어)
거꾸로 입력하는 가입 화면, 처음에 어떻게 떠올렸을까? : Toss에서 입력 필드가 많은 본인 인증 화면을 설계하는 과정이다. 본인 인증은 입력 필드가 많아서 스크롤 아래 가려진 필드와 액션을 알기가 어려워서 반대로 한 필드씩 입력하면 위에 새로운 필드가 나오게 구현했는데 사용성 테스트에서는 심지어 역순으로 쌓이고 있다는 것을 사용자들이 눈치채지도 못했다고 한다.(한국어)
Introducing Whisper : OpenAI에서 음성인식 데이터를 680,000 시간 학습시킨 음성 인식 모델을 오픈소스로 공개했다.(영어)
Make-A-Video : Meta에서 영어로 문장을 입력하면 비디오로 만들어주는 논문을 발표했다.(영어)
IT 업계 뉴스
GitHub for Startups : GitHub이 스타트업 지원 프로그램을 발표했다. 펀딩을 받은(최대 시리즈 A까지) 초기 스타트업이고 GitHub Enterprise를 사용하지 않은 회사여야 한다. 신청 후 선정되면 1년간 GitHub Enterprise 20시트를 지원받는다.(영어)
Comments