목록2025/11 (5)
근묵자흑
현대의 분산 시스템 환경에서는 다양한 기술 스택이 공존합니다:Java 레거시 애플리케이션: JMX 프로토콜로 메트릭 노출Python 마이크로서비스: 커스텀 JSON 로그 파일 기록Go 서비스: StatsD 형식으로 UDP 전송Node.js 애플리케이션: 구조화된 JSON 로그이러한 이기종 시스템들을 Prometheus, ELK Stack 같은 통합 모니터링 플랫폼으로 연결해야 할 때, 각 애플리케이션을 수정하는 것은 비효율적입니다. Adapter Pattern은 이 문제에 대한 구조적 해결책을 제공합니다.GoF Adapter Pattern에서 Kubernetes로의 확장디자인 패턴의 진화Adapter Pattern은 GoF(Gang of Four) 디자인 패턴 중 하나로, 호환되지 않는 인터페이스를 가진..
왜 배치 Job이 완료되지 않을까?프로덕션 환경에서 다음과 같은 경험을 해보셨나요?apiVersion: batch/v1kind: Jobmetadata: name: data-processingspec: template: spec: containers: - name: processor image: data-processor:1.0 # 30분 후 데이터 처리 완료... - name: cloud-sql-proxy image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.8.0 # DB 프록시는 계속 실행 중...결과:$ kubectl get jobsNAME COMPL..
애플리케이션을 배포할 때 이런 고민을 해본 적 있으신가요?"데이터베이스가 준비되기 전에 애플리케이션이 시작되면 어떡하지?""Git 저장소에서 최신 설정을 가져온 후에 서버를 시작하고 싶은데...""로그 수집기를 사이드카로 붙이고 싶은데, 순서를 어떻게 보장하지?"이런 문제들을 우아하게 해결하는 것이 바로 Init Container 패턴입니다. 이 글에서는 Kubernetes v1.34.0 환경에서 테스트한 6가지 예제를 통해 Init Container의 모든 것을 알아보겠습니다. Init Container란 무엇인가?Init Container는 Pod의 메인 애플리케이션 컨테이너가 시작되기 전에 실행되는 특수한 컨테이너입니다. 일반 컨테이너와의 차이점:특성Init ContainerApplication C..
쿠버네티스 환경에서 애플리케이션을 실행하다 보면 이런 고민을 하게 됩니다:"내 Pod의 이름이 뭐지? 로그에 어떻게 남기지?""이 Pod에 할당된 메모리가 얼마야? JVM 힙을 얼마로 설정해야 하지?""같은 StatefulSet의 다른 Pod들을 어떻게 찾지?"이런 질문들의 답을 얻기 위해 많은 개발자들이 Kubernetes API 서버를 직접 호출하는 코드를 작성합니다. 하지만 더 간단한 방법이 있습니다. 바로 Self Awareness 패턴입니다.이 글에서는 실제 minikube 환경에서 테스트한 5가지 실습 예제를 통해 Self Awareness 패턴을 이해하고, 테스트를 통해 어떻게 적용한가에 대해 정리했습니다.Self Awareness 패턴이란?Self Awareness 패턴은 Kubernete..
1. 들어가며: Service Discovery의 진화1.1 전통적인 Service Discovery의 한계마이크로서비스 아키텍처에서 Service Discovery는 필수적입니다. 하지만 기존 방식들은 각각의 한계를 가지고 있었습니다:# 전통적인 Kubernetes ServiceapiVersion: v1kind: Servicemetadata: name: my-servicespec: selector: app: my-app ports: - port: 80 targetPort: 8080---# 별도의 Deployment 필요apiVersion: apps/v1kind: Deploymentmetadata: name: my-appspec: replicas: 3 template: # ...
