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% 정도의 성능이 향상되었다.(한국어)
Load balancing and scaling long-lived connections in Kubernetes : Kubernetes에서 HTTP keepalive처럼 TCP 연결을 열어두고 계속 사용하는 경우 로드밸런싱이 제대로 되지 않는 동작을 설명한다. Kubernetes에서 서비스의 IP는 자리 표시자로만 사용되고 실제로는 연결된 Pod의 IP로 대체되어 사용되는데 이때 iptables는 무작위 알고리즘으로 선택하기 때문에 특정 Pod으로 오랜 기간 유지되는 연결이 열린다면 특정 Pod에만 연결이 몰릴 수 있어서 확장할 수 있지 않다. 이 문제를 해결하려면 클라이언트에서 로드 밸런싱 로직을 가지고나 로드 밸런싱 서비스를 도입해서 사용해야 하는데 인프라에서 해결하려면 Istio나 Linkerd 같은 서비스 메시를 사용할 수 있다.(영어)
Comments