분류 전체보기 718

NestJS HttpHealthIndicator를 사용하다가 만난 오류

1.  상황Nestjs에서 readiness를 구현하기 위해 HttpHealthIndicator를 사용했습니다. HttpHealthIndicator를 사용해서 HTTP 통신이 가능한지 확인합니다.@Controller('health')export class HealthController { constructor( private httpHealthIndicator: HttpHealthIndicator ) {} @Get('/readiness') @HealthCheck() async checkReadiness() { return this.healthCheckService.check([ async () => this.httpHealthIndicator.pingCheck('self', ..

Nestjs Liveness, Readiness 설정 전략

1.  개요안녕하세요. 이 글은 쿠버네티스에서 Nestjs 헬스체크를 하기 위한 LivenessProbe, ReadinessProbe 설정 전략에 대해 이야기 합니다. 설정 방법이 아니라 설정 전략입니다. 2.  설정 방법LivenessProbe, ReadinessProbe 설정 방법은 Nestjs Healthchecks 공식문서에 너무 자세히 설명되어 있습니다. Terminus패키지를 사용합니다.Nestjs Healthchecks 공식문서: https://docs.nestjs.com/recipes/terminus LivenessProbe ReadinessProbe API를 생성하고, 어떤 목록을 검사할지 구현하면 끝입니다. 구현 시 Terminus패키지에서 제공하는 Health Indicator를 사용..

ReactJS와 Kubernetes Controller의 원리는 비슷

2025년 설날에 ReactJS를 공부를 하고 있었는데, ReactJS 동작원리가 쿠버네티스 controller manager와 매우 비슷하다는 것을 느꼈습니다. ReactJS는 가상 DOM을 사용하여 HTML을 수정합니다. 사용자가 작성한 JSX파일은 가상 DOM으로 렌더링되는데, 새로 생성된 가상 DOM이 최종 HTML에 적용되는 것을 기대합니다. 마치 쿠버네티스 controller manager가 의도된 상태를 적용하는 원리와 매우 비슷합니다. 결국, 사용자가 작성한 개 발코드는 쿠버네티스에 비유하면 desired state가 됩니다. 제가 생각한 이론이 맞는지 ChatGPT를 활용했습니다. 아래 그림은 ChatGPT에게 여러 질문들을 해보고 비교한 결과입니다.

ReactJS에 Tailwind CSS v4.0 적용하는 방법

안녕하세요. 이 글은 ReactJS에 Tailwind v4.0을 적용하는 방법을 설명합니다. 2025.1.22에 Tailwind CSS v4.0가 공개되어 ReactJS에 Tailwind v4.0이 잘 적용되는지 확인해봤습니다. Tailwind는 CSS프레임워크로써 HTML 요소에 tailwind 클래스를 활용하여 스타일을 적용합니다. 1.  ReactJS 프로젝트 생성vite를 사용하여 ReactJS 프로젝트를 생성합니다. 저는 프로젝트 이름을 test-project로 설정했고 언어는 typescript를 사용합니다.npm create vite@latest ReactJS 프로젝트 경로로 들어가서 패키지를 설치합니다.cd test-projectnpm install 2.  Tailwind CSS 설치1) ..

컨테이너 이미지가 immutable 하지 않아서 겪은 이슈

사용하고 있는 SaaS 컨테이너 이미지가 immutable하지 않아 겪었던 이슈를 이야기해보려고 합니다. 컨테이너 이미지가 immutable이라는 의미는 컨테이너 이미지 내용이 변하지 않는 것을 보장합니다. 항상 같은 컨테이너 이미지 태그를 사용하면 어디서 실행하던지 내용은 같다는 뜻입니다. 하지만 최근 immutable하지 않은 이미지로 개발환경에서 이슈를 겪었고 동일 증상이 운영환경에서도 일어날 수 있는 것을 확인했습니다.  이슈의 시작은 개발환경에서 crashloopbackoff에서 시작합니다. 해당 pod는 init container와 애플리케이션 컨테이너가 있었고, init container오류로 pod가 crashloopbackoff였습니다. init container는 약 한달동안 이슈가 없..

회고모음 2025.01.14

EKS Pod 운영비용: 비용 절약과 안정성 사이의 현실적인 선택

AWS EKS 환경에서 운영 비용을 줄이려면 다양한 방법을 고려해야 합니다. 그중 하나는 모든 pod를 하나의 AZ(Availability Zone)에서 실행하는 것입니다. 동일한 AZ 내의 네트워크 트래픽은 추가 비용이 발생하지 않으므로, 이를 통해 비용을 절감할 수 있습니다. 비용 절약의 이점동일 AZ에서만 pod를 운영하면 네트워크 전송비용이 발생하지 않아 한 달 운영비용의 15%를 절약할 수 있습니다. 예를 들어, 한 달 운영비용이 1억 원이라면 1,500만 원을 아낄 수 있는 셈입니다. 안정성의 문제하지만 AZ를 하나만 사용하면 단일 장애점(Single Point of Failure)이 발생할 위험이 있습니다. AZ 장애가 발생하면 모든 서비스가 중단되어 서비스 안정성이 심각하게 저하될 수 있습..