# Monthly I Learned
# 2026. 09
- Celery 워커가 태스크 하나 못 받고 죽을 때 - prefork와 OTel gRPC exporter (opens new window)
- 백업 검증이 조용히 통과할 때 - PIPESTATUS, set -e, mongorestore --dryRun (opens new window)
- 인프라 철거가 안전장치에 막힐 때 - force_delete, allowEmpty, finalizer의 순서 (opens new window)
# 2026. 08
- 메모리 request=limit이 노드를 지키는 이유 - QoS 클래스와 OOM (opens new window)
- CI 빌더가 사설 레지스트리 인증서를 신뢰하지 못할 때 - buildx와 dind (opens new window)
- Django 데이터 마이그레이션에서 모델을 import 하면 안 되는 이유 (opens new window)
# 2026. 07
- 검증을 통과해야 승격되는 배포 만들기 - blue/green 게이트의 설계 지점 (opens new window)
- CI가 외부 레지스트리에 매달려 있을 때 - pull-through 캐시의 이득과 대가 (opens new window)
- CPU limit이 파드를 재시작시키는 구조 - 스로틀링과 liveness probe (opens new window)
# 2026. 06
- PostgreSQL을 standalone에서 복제 구성으로 옮길 때 실제로 정해지는 것들 (opens new window)
- ArgoCD ignoreDifferences가 동작하지 않는 세 가지 이유 (opens new window)
- Karpenter 노드가 클러스터에 붙지 않을 때 - 디스커버리, 인가, 인터럽션 (opens new window)
# 2026. 05
- 수동 설치된 컴포넌트를 Helm 릴리스로 인수하고 GitOps에 넘기기 (opens new window)
- KEDA로 Kafka 컨슈머를 늘릴 때 -
lagThreshold는 임계값이 아니다 (opens new window) - SR-IOV InfiniBand를 파드에 붙이기 - 확장 리소스, CNI, 그리고 세 조각의 정합성 (opens new window)
# 2026. 04
- OTel Collector를 어디에 둘 것인가 - 데몬셋과 게이트웨이는 대체재가 아니다 (opens new window)
- EKS 컨트롤 플레인을 잠그는 순서 - 엔드포인트, 보안 그룹, 감사 로그 (opens new window)
- VPA 권고로 request를 정할 때 - 권고가 맞는 경우와 틀리는 경우 (opens new window)
# 2026. 03
- GORM에서
WithContext를 빼먹으면 무엇이 안 되는가 - 타임아웃, 취소, 그리고 커넥션 풀 (opens new window) - kubespray로 노드를 넣고 빼기 -
--limit이 위험해지는 지점 (opens new window) - CRD를 GitOps로 관리할 때의 경계 - Karpenter로 보는 세 가지 함정 (opens new window)
# 2026. 02
- ArgoCD Notifications의 네 조각 - 그리고 알림이 소음이 되는 지점 (opens new window)
- aws-auth ConfigMap에서 EKS Access Entries로 - 되돌릴 수 없는 전환을 안전하게 하기 (opens new window)
- "Failed to detach context"가 쏟아지는 이유 - 제너레이터, contextvars, 그리고 지연된 정리 (opens new window)
# 2026. 01
- ArgoCD Image Updater - 무엇을 최신으로 볼 것인가, 그 결과를 어디에 쓸 것인가 (opens new window)
- 스팬에 무엇을 넣지 말아야 하는가 - 속성 상한, 카디널리티, 그리고 지울 수 없는 데이터 (opens new window)
- OpenTelemetry 데코레이터를 직접 만들 때 무너지는 것들 (opens new window)
# 2025. 12
- 분산 ClickHouse의 두 축 - 샤딩과 복제는 서로 독립이다 (opens new window)
- 메시 VPN이 직접 연결에 실패하는 지점 - NAT 종류와 릴레이 자가 호스팅 (opens new window)
- ArgoCD가 모르는 도구로 매니페스트를 만들기 - Config Management Plugin (opens new window)
# 2025. 11
- 공유 베이스 이미지와 파생 이미지 CI - 베이스가 바뀌었는데 아무도 다시 빌드하지 않는 문제 (opens new window)
- 이미지 태그는 포인터다 - 같은 태그를 다시 밀었을 때 클러스터에서 벌어지는 일 (opens new window)
- PodMonitor와 ServiceMonitor는 무엇이 다른가 - 스크레이프 대상은 Endpoints가 정한다 (opens new window)
# 2025. 10
- Helm 차트를 올렸는데 새 기본값이 안 들어오는 이유 - values 병합 규칙 (opens new window)
- 개발용 컨테이너 이미지가 어제와 다르게 빌드되는 이유 (opens new window)
- 모노레포에서 바뀐 이미지만 빌드하기 - 경로 필터가 만드는 함정 (opens new window)
# 2025. 09
- ORM 모델을 도메인 엔티티로 쓰면 안 되는 순간 (opens new window)
- errgroup으로 병렬 조회 묶기, 그리고 캐시 TTL을 정하는 기준 (opens new window)
- Go에서 context를 인터페이스 계약으로 만들기 (opens new window)
# 2025. 08
- 클러스터 안팎에서 Kubernetes API에 인증하기 - in-cluster 토큰과 kubeconfig (opens new window)
- Helm CLI를 감싸는 대신 Go SDK로 배포 제어하기 (opens new window)
- Go 백엔드에 헥사고날 아키텍처 적용하기 - 포트와 어댑터 (opens new window)
# 2025. 07
- Kubernetes NetworkPolicy (opens new window)
- LimitRange와 ResourceQuota (opens new window)
- Gateway API와 HTTPRoute (opens new window)
# 2025. 06
- GPU는 쪼개 쓸 수 없다 - 확장 리소스와 디바이스 플러그인 (opens new window)
- 파드를 흩뿌리는 두 가지 방법 - podAntiAffinity와 topologySpreadConstraints (opens new window)
- Ray head가 죽으면 무엇이 사라지는가 - GCS 장애 복원력 (opens new window)
# 2025. 05
- ReadWriteMany를 고르기 전에 - 액세스 모드는 파드가 아니라 노드 단위 계약이다 (opens new window)
- RayService 업데이트가 클러스터를 통째로 갈아엎는 조건 (opens new window)
- KubeRay 오토스케일러는 사용률을 보지 않는다 (opens new window)
# 2025. 04
- [k8s hard way] 03-CA와 인증서로 컴포넌트 신뢰 세우기 (opens new window)
- [k8s hard way] 02-Jumpbox 설정 (opens new window)
- [k8s hard way] 01-prerequisites 실습 (opens new window)
# 2024. 12
# 2024. 11
- 예제로 살펴보는 AI를 위한 데이터 엔지니어링 (opens new window)
- Kubernetes HPA (Horizontal Pod Autoscaler) 알아보기 (opens new window)
- Spark 조인(join) 최적화 (opens new window)
- Kubernetes의 Probe 알아보기 (opens new window)
- 도커 멀티스테이징 (opens new window)
- Apache Spark RDD(Resilient Distributed Dataset) (opens new window)
- Metrics Monitoring and Alerting system (opens new window)
- Distributed Job Scheduler system design (opens new window)
- Netflix 데이터 SQL로 분석해보기 (opens new window)
- MLOps 03: Feast Feature Store - An In-depth Overview Experimentation and Application in Tabular data (opens new window)
- MLOps 02: Dagster - Seamless Data Pipelines & ML Model Management for Machine Learning Engineers (opens new window)
- MLOps 01: Data testing, why, what and how (opens new window)