김도현
게임 회사에서 임직원이 사용하는 사내 업무 시스템의 인프라를 담당하고 있다. 2024년 4월 인턴으로 입사해 Kong, Kafka, Redis, Harbor와 Jenkins 배포 파이프라인을 구축했고, 2025년에는 서버 83대를 Ansible로 관리하도록 전환하고 배포 실패 시 이전 버전으로 자동 롤백하는 파이프라인을 만들었다.
2026년에는 폐쇄망 환경에 Kubernetes 클러스터를 구축하고 배포를 ArgoCD로 전환하고 있다. API 게이트웨이를 Kong에서 Envoy Gateway로 이관했고, 상용 APM을 대체하기 위해 Grafana, Loki, Tempo, Mimir로 모니터링 시스템을 구축하고 있다. Kubernetes와 Kafka UI에 코드를 기여했다.
이 블로그에는 업무 중 겪은 문제와 공식 문서를 읽으며 정리한 내용을 기록한다.
주제
- Backend26
- Kubernetes13
- AI11
- Database10
- Middleware7
- Observability6
- Architecture4
- DevOps2
- CS2
글
- Claude Code 사용량 OpenTelemetry 수집 구축과 비용 지표 오류 수정
- 장애 원인 분석 에이전트와 검토 에이전트 분리 구성 (확증 편향 점검, 해결 사례 기록)
- 퍼셉트론부터 LLM까지 신경망 동작 원리 정리
- 1인 DevOps 2년 업무 회고
- Docker Compose에서 Kubernetes로 전환하며 겪은 문제 (게이트웨이, 네트워크, 배포)
- 인프라 역할별 Claude Code 플러그인 운영 (패키지 배포, 위험 명령 차단 훅, 지침 검증)
- Alertmanager 알림 기반 ChatOps 구현 (AI 진단, Slack 승인 조치, 자동 조치 범위 제한)
- 온프레미스 쿠버네티스와 EKS 비교 (네트워킹, IRSA, 로드밸런서)
- 인프라 운영 AI 에이전트 구축 (MCP, PR 리뷰, 알림 자동 진단)
- AI Engineering 6장 정리 (RAG 파이프라인, 에이전트, 메모리)
- AI 코딩 에이전트 사용 가이드 (토큰 관리, 스펙 기반 개발)
- AI Engineering 1장, 5장 정리 (자기 지도 학습, 프롬프트 엔지니어링, 프롬프트 공격 방어)
- OpenTelemetry와 LGTM 스택 구축, 알림 설계
- AI Fluency 4D 프레임워크와 LLM 오류 유형별 검증 방법
- Kubernetes 보안 구성 (PSA, Kyverno, kube-bench, Falco, Trivy)
- MCP 서버와 클라이언트 구현, 프리미티브와 전송 방식 정리
- OPA Gatekeeper 공식 문서 정리 (ConstraintTemplate, Mutation, Audit)
- Claude API 정리 (멀티턴 대화, 프롬프트 평가, Tool Use, 프롬프트 캐싱)
- Istio Gateway와 Kubernetes Gateway API 비교
- Claude Code 도구 호출 구조와 Hooks, 서브에이전트, 스킬 정리
- Istio Ambient 모드 구조 (ztunnel, waypoint)와 사이드카 모드 비교
- Istio 사이드카 모드 공식 문서 정리
- Cilium 공식 문서 정리 (eBPF 네트워킹, 네트워크 정책, Hubble)
- ArgoCD GitOps 구성 패턴과 선택 기준
- Helm 템플릿 문법과 차트 설계, 운영 중 겪은 문제
- Helm 공식 문서 정리 (차트 구조, 템플릿, Hooks, 서명 검증)
- Kubernetes DRA Plugin gRPC 연결 관리 개선 (kubelet 기여)
- 쿠버네티스 오브젝트, 컴포넌트, 애드온 개념 정리
- 키, 인증서, SSH, TLS 정리와 중간자 공격 시나리오
- Redis Cluster 해시 슬롯 분산과 장애 감지 방식
- Elasticsearch 샤드, 레플리카, 라우팅 동작 정리
- Real MySQL 5장 공식 문서 대조 정리 (잠금, 격리 수준)
- Real MySQL 4장 공식 문서 대조 정리 (아키텍처, InnoDB)
- OpenTelemetry Java 자동 계측 동작 원리 (Java Agent, ByteBuddy)
- OpenTelemetry 시그널 정리 (트레이스, 메트릭, 로그)
- 사용자 증가에 따른 시스템 확장 단계 (Scale-Up, Scale-Out, 캐시)
- 관측 가능성 개념과 OpenTelemetry 등장 배경
- Kafka 컨슈머 파티션 할당 전략과 Sticky Assignor 동작
- Kafka 프로듀서 내부 구조와 Exactly-Once 전송 보장
- 운영체제 기초 정리 (프로세스, 스레드, CPU 스케줄링)
- 네트워크 기초 정리 (HTTP 요청 처리 과정, TCP와 UDP)
- Spring Batch 구성 요소와 처리 흐름 (Job, Step, Chunk)
- Kafka Connect와 Debezium을 이용한 CDC 파이프라인 구성
- Kafka KRaft 모드 구조와 ZooKeeper 제거
- Java LTS 버전별 변경 사항 정리 (8, 11, 17, 21)
- MSA 사용자 인증 정보 전달 방식과 Passport 구현
- Elasticsearch 형태소 분석기 적용과 대량 색인 방법
- Spring Cloud Gateway 공식 문서 정리
- gRPC 동작 원리 (Protocol Buffers, HTTP/2)
- Gradle api와 implementation 의존성 설정 차이
- 마이크로서비스와 CQRS 도입 검토
- 테스트 대역과 테스트 피라미드, 운영 서비스 테스트 도입 사례
- 형태소 분석기 비교와 뉴스 키워드 추출 구현 (Lucene, Komoran)
- 크롤러 커넥션 고갈과 OOM 원인 분석 (HikariCP, 벌크 삽입)
- Spring Boot MongoDB 연동 문제 2가지와 해결 방법
- JVM Garbage Collector 종류와 GC 로그 분석
- JWT 인증 방식 선택과 Refresh Token 재발급 구현
- 동시 요청 갱신 손실 문제와 JPA 비관적 락 적용
- 150만 건 테이블 BETWEEN 조회 성능 개선 (인덱스 설계, 실행 계획 분석)
- Caffeine Cache 내부 구조와 W-TinyLFU 캐시 교체 정책
- AOP와 ThreadLocal을 이용한 인증 정보 전달 구조
- Spring AOP 프록시 동작 원리 (리플렉션, JDK 동적 프록시, CGLIB)
- OAuth 1.0과 2.0 비교, 인가 코드 흐름과 PKCE
- Kotlin class와 object 키워드 디컴파일 분석
- REST API 설계 원칙과 URI 설계 기준
- 오프셋 페이징 성능 저하 원인과 커서 기반 페이징 전환
- MySQL 트랜잭션 격리 수준과 InnoDB 잠금 동작
- Spring Boot FCM 푸시 알림 연동 트러블슈팅
- Spring Data JPA Repository 구현체 동작 원리 (SimpleJpaRepository, 프록시)
- MySQL 엔진 아키텍처 정리 (스레드 구조, 메모리 구조, 쿼리 처리 순서)
- QueryDSL 조회 결과 DTO 매핑 방법 4가지 비교
- JVM 구조 정리 (클래스 로더, 런타임 메모리 영역, JIT 컴파일러)
- @Async로 외부 API 호출 응답 시간 단축 (658ms에서 122ms)
- Java 애노테이션 동작 원리와 리플렉션 기반 처리
- Java 직렬화 동작 방식과 사용을 권장하지 않는 이유
- Spring Security 인증 처리 구조 (FilterChain, SecurityContext)
- Servlet 인터페이스 명세로 본 Servlet 동작 구조
- Spring 커스텀 필터 등록 방법과 실행 순서
- Java 8 Stream과 Lambda 정리
- Servlet Filter, DispatcherServlet, Interceptor의 실행 순서와 역할
- 서버 세션과 토큰 기반 인증 방식 비교