Back
ESSAY번역
DEC 15, 2025

EP178: Kubernetes Pod의 생명주기

원문: EP178: The Lifecycle of a Kubernetes Pod


이번 주 시스템 설계 리프레셔:

  • Kubernetes Pod의 생명주기

  • CI/CD Pipeline 설명

  • 오픈소스 RAG Stack

  • 가장 인기 있는 버전 관리 전략

  • Production-Ready Data Science 도서

  • Testing Pyramid


Kubernetes Pod의 생명주기

Kubernetes Pod Lifecycle

  1. Pod manifest가 API server에 제출되고 etcd에 저장됩니다.

  2. scheduler가 리소스, affinity 규칙을 기반으로 Pod를 위한 node를 선택하고, 해당 node에 Pod를 바인딩합니다.

  3. kubelet이 network namespace를 생성하고, IP를 할당하며, volume을 마운트하고, 필요시 이미지를 pull하여 Pod를 준비합니다.

  4. container들이 Waiting에서 Running 상태로 전환되며, kubelet이 liveness와 readiness를 위한 health probe를 모니터링합니다.

  5. Kubernetes는 Pod의 고수준 phase를 Pending에서 Running, 그리고 Succeeded/Failed/Unknown으로 추적합니다.

  6. 종료 시, Kubernetes는 Pod 내 개별 container들에게 SIGTERM을 보내고 (필요시 SIGKILL도 전송합니다).

  7. 종료 후, 리소스가 정리되고 Pod 정보가 etcd에서 제거됩니다.

Over to you: Kubernetes Pod Lifecycle을 이해하기 위해 무엇을 더 추가하시겠습니까?


CI/CD Pipeline 설명

CI/CD pipeline은 소프트웨어를 빌드, 테스트, 배포하는 프로세스를 자동화하는 도구입니다.

코드 생성 및 수정, 테스트, 배포를 포함한 소프트웨어 개발 생명주기의 여러 단계를 하나의 통합된 워크플로우로 연결합니다.

아래 다이어그램은 일반적으로 사용되는 도구들을 보여줍니다.

CI/CD Pipeline


오픈소스 RAG Stack

Open Source RAG Stack

  1. Frontend Frameworks: RAG 앱을 위한 프론트엔드 인터페이스를 구축하는 데 사용됩니다. NextJS, VueJS, SvelteKit, Streamlit 등의 도구가 도움이 됩니다.

  2. LLM Frameworks: LLM pipeline, prompt, chain의 고수준 orchestration을 담당합니다. LangChain, LlamaIndex, Haystack, HuggingFace, Semantic Kernel 등의 도구가 포함됩니다.

  3. LLMs: Large language model을 사용하여 최종 응답을 생성합니다. 오픈소스 옵션으로는 Llama, Mistral, Gemma, Phi-2, DeepSeek, Qwen 등이 있습니다.

  4. Retrieval and Ranking: 관련 chunk를 검색하고 관련성에 따라 순위를 매깁니다. Meta FAISS, Haystack Retrievers, Weaviate Hybrid Search, ElasticSearch kNN, JinaAI Rerankers 등의 도구가 도움이 됩니다.

  5. Vector Database: vector embedding에 대한 유사도 검색을 저장하고 가능하게 합니다. 일반적인 옵션으로는 Weaviate, Milvus, Postgres pgVector, Chroma, Pinecone이 있습니다.

  6. Embedding Model: ML을 사용하여 텍스트/데이터를 vector 표현으로 변환합니다. 오픈소스 도구로는 HuggingFace Transformers, LLMWare, Nomic, Sentence Transformers, JinaAI, Cognita 등이 있습니다.

  7. Ingest/Data Processing: 인덱싱 및 검색을 위해 원시 데이터를 추출, 정제, 준비합니다. Kubeflow, Apache Airflow, Apache NiFi, LangChain Document Loads, Haystack Pipelines, OpenSearch 등의 도구가 도움이 됩니다.

Over to you: 목록에 어떤 오픈소스 도구를 추가하시겠습니까?


가장 인기 있는 버전 관리 전략은 무엇인가요?

버전 관리는 개발자들이 소프트웨어 패키지, API, 운영체제 등의 릴리스 변경 사항을 명확하게 전달하는 데 도움이 됩니다.

Versioning Strategies

  • Semantic Versioning (SemVer): MAJOR.MINOR.PATCH 형식을 사용하여 릴리스의 변경 범위에 대한 의미를 전달하는 버전 관리 체계입니다.

  • Calendar Versioning (CalVer): 릴리스 날짜(연도와 월)를 버전 번호로 사용하여 릴리스가 언제 발생했는지를 나타내는 체계입니다.

  • Sequential Versioning: 호환성 세부 정보를 인코딩하지 않고 순차적으로 버전이 증가하는 단순한 번호 지정 방식입니다.

  • API Versioning: breaking change를 관리하고 분리하기 위해 API의 URL 경로에 버전을 포함하는 방법입니다.

여러분께 질문드립니다: 어떤 버전 관리 전략을 선호하시나요? 그 이유는 무엇인가요?


Production-Ready Data Science 도서

제 친구 Khuyen Tran이 Production-Ready Data Science라는 책을 썼습니다. 빠른 프로토타입과 견고한 솔루션 사이의 간극을 메워주는 책을 찾고 계신다면, 확인해 보세요.

이 책은 다음 기술들을 마스터하는 데 도움이 되는 실용적인 예제와 명확한 설명을 제공합니다:

  • 지저분한 notebook을 정리되고 유지보수 가능한 코드로 변환하기

  • 팀과 배포 환경 전반에서 재현 가능한 환경 만들기

  • 모듈화되고, 재사용 가능하며, 테스트 가능한 Python 코드 작성하기

  • 견고한 데이터 검증 및 에러 핸들링 구현하기

  • 그 외 다양한 내용

책에서 논의된 모든 개념의 실용적인 구현이 담긴 GitHub 저장소는 여기에서 확인하세요.


Testing Pyramid

Testing Pyramid

테스팅은 신뢰할 수 있는 소프트웨어의 근간입니다. Testing Pyramid는 테스트를 세 가지 핵심 레이어로 구조화하는 널리 인정받는 전략입니다:

  • Unit Tests: 피라미드의 기반입니다. Unit test는 빠르고, 격리되어 있으며, 작성 및 유지 비용이 낮습니다. 개별 함수, 메서드, 또는 컴포넌트를 테스트합니다.

  • Integration Tests: API, 데이터베이스, 외부 서비스 등 컴포넌트 간의 상호작용을 검증합니다. Unit test보다 느리고 더 많은 설정이 필요합니다.

  • E2E Tests: 전체 시스템에 걸쳐 처음부터 끝까지 실제 사용자 흐름을 시뮬레이션합니다. 작성 및 유지 비용이 높고 실행 속도가 느린 경향이 있습니다.

피라미드 위로 올라갈수록 테스트 개발, 실행, 유지보수 비용이 증가합니다.

Over to you: 테스팅 전략에서 어떤 레이어가 가장 가치 있다고 생각하시나요? 그 이유는 무엇인가요?

Thank you for reading.

Based in Seoul
Since 2024