웹개발 관련
- 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 애플리케이션에 적용한 과정이다. 스프링의
@Cacheable과 sync 옵션과 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 업계 뉴스
프로젝트
버전 업데이트
- Turborepo v2.0.0 : JavaScript/TypeScript 빌드 시스템, 릴리스 공지
- 새로운 인터렉티브 터미널 UI
- 의존성을 고려한 태스크 워처 모드 지원
- Serverless Framework v4.0.0 : AWS Lambda에서 앱을 만드는 프레임워크, 릴리스 공지
- Grafana Tempo v2.5.0 : 분산 트레이싱 백엔드, 릴리스 공지
- Gradle v8.8 : Java 빌드 도구, 릴리스 공지
- Argo CD Image Updater v0.13 : Argo CD 컨테이너 이미지 자동 업데이터, 릴리스 공지
- Falco 0.38.0 : 클라우드 네이티브 런타임 보안, 릴리스 공지
- Spring Shell 3.3.0 : Spring 기반 인터렉티브 쉘, 릴리스 공지
- Rust 1.79.0 : 프로그래밍 언어, 릴리스 공지
- Zed v0.139.3 : 코드 에디터, 릴리스 공지
- Vite v5.3.0 : 프론트엔드 빌드 도구, 릴리스 공지
- Deno v1.44.0 : TypeScript 런타임, 릴리스 공지
- Armeria v1.29.0 : Java용 비동기 RPC/REST 라이브러리, 릴리스 공지
- ESLint v9.5.0 : JavaScript 코드 분석 도구, 릴리스 공지
- Relay v17.0.0 : 데이터주도 Recat 애플리케이션용 프레임워크, 릴리스 공지
- Micronaut 4.5.0 : JVM 기반 풀스택 모듈러 프레임워크, 릴리스 공지
- Zig v0.13.0 : 프로그래밍 언어, 릴리스 공지
- astro v4.10 : JavaScript 웹 프레임워크, 릴리스 공지
- Cue v0.9.0 : 구성 언어, 릴리스 공지
- Docker Desktop v4.31 : 데스크톱용 Docker 애플리케이션, 릴리스 공지
- Spring Tools v4.23.0 : Spring 코딩 환경을 위한 도구, 릴리스 공지
- Consul 1.19 : 서비스 디스커버리/설정 도구, 릴리스 공지
- Elixir v1.17 : 프로그래밍 언어, 릴리스 공지
- Node.js v22.3.0 (Current) : 자바스크립트 런타임, 릴리스 공지
- Kargo v0.7.0 : Kubernetes용 배포 도구, 릴리스 공지
Comments