Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

기술 뉴스 #211 : 22-12-01

웹개발 관련

  • Forking Chrome to turn HTML into SVG : Chromium을 포크해서 HTML 페이지를 SVG로 변환하는 프로젝트인 html2svg를 만드는 과정을 설명한 글이다. Blink와 Skia 코드를 수정해서 페이지를 SVG로 변환하는 함수를 만들고 폰트나 그림자 등의 문제를 해결하는 과정이 나와 있다.(영어)

그 밖의 개발 관련

  • Seeing through hardware counters: a journey to threefold performance increase : Neflix에서 Java 서비스 중 하나인 GS2를 m5.4xl(vCPU 16개)에서 m5.12xl(vCPU 48개)로 올려서 성능이 3배 증가할 것으로 기대했지만 처리량은 25%만 증가했고 지연시간을 오히려 증가하는 문제를 발견했다. 매트릭을 살펴보다가 CPU와 대기시간이 낮은 노드가 있다는 것을 발견했다. 더 낮은 수준을 보기 위해 PMC를 살펴보다가 2개의 코어가 동일한 L1 캐시 라인을 공유하면서 관련 없는 변수에서 읽고 쓸 때 발생하는 False Sharing의 일반적인 패턴을 볼 수 있었고 JDK의 동작을 수정하진 않고 데이터 레이아웃에서 _secondary_super_cache, _secondary_supers에 패딩을 추가해서 느린 노드가 사라지게 되었다. 하지만 여전히 목표인 250 RPS에 못 미치는 150 RPS만 처리할 수 있었고 이 문제는 동일한 변수를 여러 스레드/코어에서 읽고 쓰는 True Sharing임을 깨닫고 공유 변수에 모두 쓰지 않고 JVM의 보조 슈퍼클래스 캐시를 효과적으로 우회하도록 수정하고 3.5배의 성능 향상을 이루었다고 한다.(영어)
  • Werner Vogels – Amazon 분산 컴퓨팅 선언문 (1998) : Amazon의 CTO의 Werner Vogels가 1998년 아마존에서 작성되었던 분산 컴퓨팅 선언문을 공개했다. 25년이 지난 지금 놀라운 얘기는 아니지만, 당시에 저렇게 생각했다는 게 놀랍기도 하고 Amazon의 주문량을 10배 지원하려면 어떻게 해야 하는지로 시작하는 게 귀엽기도 하다.(지금은 10배 수준이 아닐 테니..) 이를 위해 서비스 기반 아키텍처(SOA)로 바꾸고 아마존은 메시지 기반 워크플로 모델이 적합하며 이 워크플로 진행 중 상태 변경을 위해 Pub/Sub 모델을 사용해야 한다고 하고 있다.(한국어)
  • It’s time to leave the leap second in the past : Meta에서 쓴 글로 UT1과 UTC를 보정하는 윤초(Leap Second)가 지금까지는 괜찮았지만 윤초의 문제가 많이 발생하고 있고 앞으로는 음의 윤초가 생길 가능성이 있기 때문에 페이스북에서는 현재의 윤초를 그대로 유지하려고 노력하고 있다고 한다. GeekNews의 한국어 요약을 봐도 좋다.(영어)
  • Sapling: Source control that’s user-friendly and scalable : Meta에서 10년 동안 내부에서 개발해서 사용 중이던 Git 호환 클라이언트를 오픈소스로 공개했다. Git 호환 클라이언트라 Git과 함께 쓸 수 있고 ReviewStack을 같이 쓰면 GitHub에서 stacked changes도 쉽게 볼 수 있다.(영어)
  • **Node.js 18.x runtime now available in AWS Lambda : AWS Lambda에서 Node.js의 새 LTS 버전인 18.x를 사용할 수 있게 되었다.(영어)

인프라 관련

  • AWS re:Invent 2022 : 11월 28일부터 12월 2일까지 미국 라스베가스에서 AWS의 re:invent가 열리고 있다. 아직 re:Invent가 진행 중이라 계속 새로운 제품과 기능이 발표되고 있다. 하위 목록은 그중 흥미로운 것들만 모을 생각이었지만 아직 글을 못 찾은 내용도 있다.(한국어)

  • NRISE를 지탱하는 기술 — 인프라 : 위피와 콰트를 운영하는 엔라이즈에서 지난 1년간 인프라를 개선 시킨 과정과 도입한 도구를 정리한 글이다. 기존 인프라를 EKS와 풀 매니지드 서비스로 전환하는 것을 목표로 하고 Terraform, Helm, Helmfile을 도입하고 Kubernetes는 Karpenter와 KEDA로 스케일링하고 있으며 Argo CD와 GitHub Actions 등을 쓰고 있다고 한다.(한국어)
  • Introducing the Dagger Node.js SDK : CI/CD 엔진인 Dagger의 Node.js SDK가 공개되었다. Go, Python SDK에 이어 세 번째 SDK다.(영어)
  • Finch – 오픈 소스 기반 컨테이너 빌드 클라이언트 프로젝트 출시 : OCI 컨테이너 이미지를 빌드 및 실행할 수 있는 AWS의 오픈소스 프로젝트. 현재는 초기라 macOS만 지원한다.(한국어)

IT 업계 뉴스

프로젝트

  • Circuit : Slack에서 오픈소스로 공개한 Kotlin 애플리케이션 프레임워크.
  • tfautomv : Terraform 코드를 리팩토링할 때 상태와 코드를 비교해서 move 블록을 만들어주는 프로젝트
  • tea : Homebrew를 만든 사람이 새로운 패키지 매니저 인프라스트럭처를 공개했고 Homebrew를 대체할 목적은 아니라고 한다.

버전 업데이트

2022/12/01 09:45 2022/12/01 09:45