Back
ESSAY번역
DEC 07, 2025

EP185: 도커 vs 쿠버네티스

원문: EP185: Docker vs Kubernetes


이번 주 시스템 설계 복습:

  • Rate Limiter 시스템 설계: Token Bucket, Leaky Bucket, Scaling (Youtube 영상)
  • Docker vs Kubernetes
  • Batch vs Stream Processing
  • Modular Monolith란 무엇인가?
  • Process와 Thread의 차이점은 무엇인가?
  • AI Agent는 어떻게 Tools, Memory, Reasoning을 연결하는가?

Docker vs Kubernetes

Docker vs Kubernetes

Docker는 애플리케이션을 dependency와 함께 패키징하고 단일 머신에서 실행할 수 있게 해주는 컨테이너 플랫폼입니다. 작동 방식은 다음과 같습니다:

  • 앱 코드와 dependency를 Dockerfile에 작성하는 것으로 시작합니다.
  • build image 단계에서 이식 가능한 container image를 생성합니다.
  • container runtime이 host 머신에서 직접 이미지를 실행합니다.
  • 네트워킹이 컨테이너와 외부 서비스를 연결하여 최종 실행 중인 앱을 생성합니다.

Kubernetes는 확장성과 복원력을 위해 여러 머신 클러스터에서 컨테이너화된 애플리케이션을 관리하는 컨테이너 오케스트레이션 플랫폼입니다. 작동 방식은 다음과 같습니다:

  • Dockerfile의 앱 코드와 dependency로 시작합니다.
  • build image가 Kubernetes가 지원하는 container runtime으로 전달됩니다.
  • Master node는 API server, etcd(key-value store), controller manager, scheduler를 실행하여 클러스터를 조율합니다.
  • Worker node는 Pod 내부에서 실제 컨테이너를 실행하며, Kubelet과 kube-proxy가 네트워킹을 관리합니다.
  • 분산되고, 확장 가능하며, self-healing 특성을 가진 실행 중인 앱을 생성합니다.

여러분에게 질문: 프로젝트에서 Docker나 Kubernetes를 사용해 보셨나요?


Batch vs Stream Processing

데이터는 끊임없이 흐르지만, 이를 어떻게 처리하느냐가 모든 차이를 만듭니다. 데이터 시스템을 구축할 때 두 가지 주요 접근 방식이 있습니다: batch processing과 stream processing입니다. 시간에 따른 정확성이 필요한지, 즉각적인 인사이트가 필요한지에 따라 각각의 자리가 있습니다.

Batch vs Stream Processing

Batch Processing: 데이터를 청크 단위로 수집하고 예약된 간격으로 처리합니다. 보고서와 과거 데이터 분석에 적합합니다.

Stream Processing: 이벤트를 실시간으로 연속 처리합니다. 대시보드, 알림, 추천 시스템을 구동합니다.

Batch = 대용량, 과거 데이터 정확성 Stream = 저지연, 실시간 액션

여러분에게 질문: batch pipeline과 real-time stream 중 어느 것이 확장하기 더 어렵다고 생각하시나요?


Modular Monolith란 무엇인가?

Modular monolith는 애플리케이션을 독립적인 모듈 또는 컴포넌트로 나누는 아키텍처 패턴입니다. 각 모듈은 관련 기능을 그룹화하는 잘 정의된 경계를 가집니다. 이렇게 하면 더 나은 응집력을 얻을 수 있습니다.

Modular Monolith

Modular monolith의 주요 특징은 다음과 같습니다:

  • 모듈들이 독립적입니다.
  • 각 모듈은 특정 기능을 제공합니다.
  • 각 모듈은 잘 정의된 인터페이스를 노출해야 합니다.

Modular monolith의 주요 장점은 무엇일까요?

Monolith는 모든 기능을 하나의 큰 배포 단위로 묶습니다. 이로 인해 monolith는 이해하기 쉽습니다.

Microservice는 기능들을 별도의 배포 가능한 단위로 분산합니다. 이로 인해 더 확장 가능해집니다.

그러나 modular monolith는 애플리케이션을 동일한 배포 단위의 일부인 모듈로 나눕니다. 전통적인 monolithic 애플리케이션의 단순함과 microservice의 유연성을 결합합니다.

다시 말해, modular monolith로 두 세계의 장점을 모두 가질 수 있습니다.

그래서 - 애플리케이션을 구축하기 위해 modular monolith를 사용해 보셨나요?


인기 인터뷰 질문: Process와 Thread의 차이점은 무엇인가?

Process vs Thread

Process와 thread의 주요 차이점:

  • Process는 일반적으로 독립적이지만, thread는 process의 하위 집합으로 존재합니다.
  • 각 process는 자체 메모리 공간을 가집니다. 동일한 process에 속하는 thread들은 같은 메모리를 공유합니다.
  • Process는 heavyweight 작업입니다. 생성하고 종료하는 데 더 많은 시간이 걸립니다.
  • Context switching은 process 간에 더 비용이 많이 듭니다.
  • Thread 간 통신(Inter-thread communication)이 더 빠릅니다.

AI Agent는 어떻게 Tools, Memory, Reasoning을 연결하는가?

AI Agents

  • Reasoning: AI agent의 두뇌입니다. 사용자의 목표를 쿼리로 받아 reasoning agent(ReAct와 같은 프레임워크 사용)를 사용하여 목표를 일련의 더 작고 논리적인 단계로 분해합니다.
  • Tools: 각 단계에서 agent는 적절한 도구를 선택합니다. 이는 웹 검색, 계산기, 코드 인터프리터, 문서 등 호출할 수 있는 외부 프로그램이나 API일 수 있습니다.
  • Memory: 노트북과 같습니다. agent는 각 도구 사용의 결과를 메모리에 기록합니다. 이 노트북을 통해 결과로부터 학습하고, 긴 대화에서 context를 유지하며, 새로운 발견에 따라 계획을 수정할 수 있습니다.

reasoning, 도구로 행동하기, 결과 기억하기의 지속적인 루프가 체인을 만듭니다. 마지막으로, agent가 사용자의 쿼리를 충족했다고 만족하면 사용자에게 응답합니다.

여러분에게 질문: AI agent를 사용해 보셨나요?

Thank you for reading.

Based in Seoul
Since 2024