목록분류 전체보기 (53)
근묵자흑
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: # ...
"동적으로 변화하는 컨테이너 환경에서 서비스는 어떻게 서로를 찾을까?" 마이크로서비스 아키텍처에서 Pod들은 끊임없이 생성되고 삭제됩니다. IP 주소가 계속 바뀌는 이런 환경에서 안정적인 서비스 간 통신을 보장하는 것이 바로 Service Discovery 패턴입니다. 이 글에서는 Kubernetes의 4가지 Service Discovery 방식을 Minikube 로컬 환경에서 실습한 사항과 그에 따른 여러 컴포넌트를 확인해보겠습니다.1. Service Discovery가 필요한 이유문제 상황: 변하는 IP 주소# Pod가 재시작되면 IP가 바뀜Pod A (10.244.1.5) → 재시작 → Pod A' (10.244.2.7)# 스케일링하면 여러 개의 Pod가 생김Pod B (10.244.1.6) → 스..
들어가며Kubernetes는 서버가 갑자기 다운되었을 때, 자동으로 복구되고 사용자는 서비스 중단을 느끼지 못하도록 설계되었습니다.(Kubernetes는 self-healing과 high availability를 통해 서버 장애 시에도 사용자는 서비스 중단을 느끼지 못합니다.)이번장은 그것을 어떻게 가능하게 구현하는지 Stateless Service 패턴에 대해 얘기해보겠습니다.클라우드 네이티브 환경에서 애플리케이션은 언제든지 죽고, 다시 살아날 수 있어야 합니다.이것이 바로 Stateless Service 패턴의 핵심입니다.이 글에서는 Kubernetes Patterns 11장 Stateless Service를 실제 실습 및 테스트한 결과와 함께 어떻게 활용할 수 있는지 알아보겠습니다.Stateless..
쿠버네티스는 기본적으로 스테이트리스(Stateless) 애플리케이션을 위해 설계되었습니다. Deployment로 배포하면 Pod가 무작위 이름으로 생성되고, 언제든 교체 가능하며, 공유 스토리지를 사용하죠. 하지만 현실은 어떨까요?실무에서는 데이터베이스, 메시지 큐, 분산 캐시 등 상태를 유지해야 하는 애플리케이션이 필수적입니다. 이런 애플리케이션들은:각 인스턴스가 고유한 신원(identity)을 가져야 하고재시작 후에도 동일한 네트워크 주소를 유지해야 하며각자의 영구 스토리지를 가져야 하고시작과 종료 순서가 보장되어야 합니다바로 이런 요구사항을 해결하기 위해 쿠버네티스는 StatefulSet을 제공합니다.이 글에서는 StatefulSet을 테스트하면서 마주친 문제들과 해결 방법을 공유하겠습니다.왜 De..
왜 싱글톤 서비스가 필요한가?쿠버네티스는 본질적으로 수평적 확장과 고가용성을 위한 다중 레플리카를 권장합니다. 하지만 현실의 많은 애플리케이션은 정확히 하나의 활성 인스턴스만을 요구합니다. 데이터베이스 마이그레이션 작업, 스케줄링된 태스크, 메시지 큐 컨슈머, 동시성을 처리할 수 없는 레거시 시스템 등이 대표적인 예입니다. 이번 장에서는 쿠버네티스 환경에서 싱글톤 서비스를 구현하는 검증된 패턴들에 대해 알아보겠습니다.쿠버네티스에서 싱글톤 패턴의 도전 과제철학적 충돌: 고가용성 vs 일관성쿠버네티스의 설계 철학과 싱글톤 요구사항 사이의 근본적인 긴장이 독특한 도전과제를 만들어냅니다. 쿠버네티스는 애플리케이션이 수평적으로 확장 가능하고 중복성을 통해 인스턴스 장애를 견딜 수 있다고 가정합니다. 싱글톤 서비스..
쿠버네티스를 운영하다 보면 모든 노드에서 특정 작업을 수행해야 하는 경우가 있습니다. 로그 수집, 모니터링 에이전트, 네트워크 플러그인 등이 대표적인 예시입니다. 이런 요구사항을 해결하기 위해 쿠버네티스는 DaemonSet이라는 리소스를 제공합니다. 데몬서비스 패턴은 쿠버네티스 클러스터의 모든 노드 또는 특정 노드에서 단일 Pod를 실행하도록 보장하는 패턴입니다. 이는 운영체제의 데몬 프로세스와 유사한 개념으로, 인프라 관련 작업을 수행하는 Pod를 배치하고 관리하는 데 주로 사용됩니다.데몬(Daemon)의 개념운영체제 수준: httpd, named, sshd 등 백그라운드에서 장시간 실행되는 자가 복구 프로그램애플리케이션 수준: JVM의 데몬 스레드처럼 가비지 컬렉션, 파이널라이제이션 등의 작업 수행쿠..