Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

기술 뉴스 #248 : 24-06-16

웹개발 관련

  • shadcn ui 자세히 알아보기 : 작년 가장 많은 GitHub Star를 받은 shadcn/ui을 설명하는 글이다. shadcn/ui는 Tailwind CSS를 기반으로 한 컴포넌트 컬렉션인데 라이브러리와 달리 설치해서 쓰는 게 아니라 컴포넌트 코드를 복사해서 붙여 넣고 사용하는 방식을 취하고 있기 때문에 필요한 부분을 수정해서 사용할 수 있고 이 관리를 쉽게 할 수 있도록 CLI를 제공하고 있다.(한국어)

그 밖의 개발 관련

  • Simple Design : 박영록 님이 코드 품질에 대한 생각을 정리한 좋은 글이다. 코드 품질을 정할 때 전문가의 생산성을 해치지 않으면서도 초보자에게는 생산성을 높일 수 있도록 기준이 필요했는데 보통 말하는 코드 품질이 느낌적인 부분이 많은데 Kent Beck의 Simple Design이 가장 명확했고 이를 정리해서 중복이 없으면서 최소한의 문법 요소로 구성된 코드라고 정의한 부분이 꽤 명확하게 느껴졌다. 코드 품질을 개선할 때 고민해야 할 부분과 기준이 될 레퍼런스를 제공한 부분도 좋고 코드를 본질적인 복잡성과 우발적인 복잡성을 나누어서 설명한 부분도 명쾌하게 느껴졌다. 코드 품질 개선은 더 빨리 개발하기 위해서라는 부분도 좋은 기준이라고 생각한다.(한국어)
  • Req-Saver로 캐시의 골칫거리 'Thundering Herd 문제' 쉽게 풀기! : 애플리케이션에서 캐시를 쓰는 경우 캐시에 데이터가 없을 때 데이터베이스 같은 백엔드 데이터 스토어로 모든 요청이 몰려가고 또 이 데이터를 캐시에 저장도 여러 번 이뤄지게 되는 Thundering Herd 문제를 해결하기 위해 Req-Saver라는 라이브러리를 만들어서 Spring 애플리케이션에 적용한 과정이다. 스프링의 @Cacheablesync 옵션과 Req-Saver를 사용한 경우를 비교했을 때 평균 51% 정도의 성능이 향상되었다.(한국어)
  • Make your GitHub projects more accessible with accessibility-alt-text-bot : GitHub에서 이슈나 PR로 협업할 때 동료중에 이미지의 대체 텍스트가 필요한 동료가 있는 경우 매번 이미지 설명을 요청하는 불편함이 있다는 것을 깨닫고 Accessibility alt text bot 워크플로우를 공개했다. 이는 이미지가 있는데 대체 텍스트가 없는 경우 댓글로 알려주는 역할을 한다.(영어)

인프라 관련

  • Load balancing and scaling long-lived connections in Kubernetes : Kubernetes에서 HTTP keepalive처럼 TCP 연결을 열어두고 계속 사용하는 경우 로드밸런싱이 제대로 되지 않는 동작을 설명한다. Kubernetes에서 서비스의 IP는 자리 표시자로만 사용되고 실제로는 연결된 Pod의 IP로 대체되어 사용되는데 이때 iptables는 무작위 알고리즘으로 선택하기 때문에 특정 Pod으로 오랜 기간 유지되는 연결이 열린다면 특정 Pod에만 연결이 몰릴 수 있어서 확장할 수 있지 않다. 이 문제를 해결하려면 클라이언트에서 로드 밸런싱 로직을 가지고나 로드 밸런싱 서비스를 도입해서 사용해야 하는데 인프라에서 해결하려면 Istio나 Linkerd 같은 서비스 메시를 사용할 수 있다.(영어)
  • Arm64 on GitHub Actions: Powering faster, more efficient build systems : GitHub Actions에 Arm 기반 Linux, Windows 러너가 공개되었다. Arm 러너는 x86보다 37% 저렴한 가격으로 제공되고 현재는 GitHub Team과 Enterprise 플랜에서 제공되는데 연말에는 오픈소스 프로젝트에도 제공할 예정이라고 한다.(영어)
  • DNS가 TCP를 사용하는 경우 : DNS는 기본적으로 UDP를 사용하는데 메시지가 큰 경우 등 특정 상황에서는 TCP를 사용하게 된다. DNS 패킷 헤더를 사용해서 메시지가 커서 Truncated 되었는지를 표시하고 이런 경우 TCP를 사용한다.(한국어)

IT 업계 뉴스

프로젝트

  • sleepcycles : 원하는 주기에 따라 Kubernetes 리소스를 내렸다가 올릴 수 있는 컨트롤러.
  • UIX : Deno 기반으로 리액티브 웹앱을 만들 수 있는 오픈소스 풀스택 프레임워크.
  • ASCII Silhouettify : 이미지를 ASCII 실루엣으로 만들어주는 프로그램.
  • Frameshot : 오픈소스 스크린샷 프로그램.

버전 업데이트

2024/06/16 20:41 2024/06/16 20:41