CLOUD / INFRA ENGINEER

서비스가 멈추지 않도록
설계하고, 운영합니다.

AWS와 온프레미스를 VPN으로 잇는 하이브리드 인프라, Kafka 기반 실시간 파이프라인, GitOps로 운영하는 쿠버네티스를 직접 만들고 운영했습니다.

BARO · 차량 위치 흐름
Site-to-Site VPN차량 ×1500asyncio 시뮬레이터MosquittoMQTT · EC2control공유 구독Kafka4 파티션dispatchGEO 배차TimescaleDB온프렘 · 적재시세 수집yfinance · KIS WSKafkastock.raw.*이상 탐지% · Z · ETF 분류뉴스 수집NewsAPI · RSSLLM 분석Groq · DLQ대시보드 · SlackWebSocket

두 프로젝트의 핵심 흐름이 번갈아 재생돼요

1,500대

차량 동시 시뮬레이션을
MQTT → Kafka로 처리

BARO

2.9M

Kafka consumer lag을
원인 추적 후 해소

BARO

26개

K8s 워크로드를
ArgoCD GitOps로 운영

StockPulse

108종목

한 · 미 1분봉을
실시간 이상 탐지

StockPulse

프로젝트

Site-to-Site VPN차량 ×1500asyncio 시뮬레이터MosquittoMQTT · EC2control공유 구독Kafka4 파티션dispatchGEO 배차TimescaleDB온프렘 · 적재

BARO — 자율주행 택시 호출 · 관제 플랫폼

2026.04 – 06 · 5인 팀 · BE / DevOps

차량 1,500대의 위치를 MQTT → Kafka로 받아 배차 · 재배치하고, AWS 서비스와 온프레미스 분석 · 관측을 VPN으로 묶어 운영한 하이브리드 클라우드.

  • AWS ECS
  • Terraform
  • MQTT
  • Kafka
  • Valkey
  • OpenStack · K3s
  • Airflow
  • Prometheus
케이스 스터디 →
시세 수집yfinance · KIS WSKafkastock.raw.*이상 탐지% · Z · ETF 분류뉴스 수집NewsAPI · RSSLLM 분석Groq · DLQ대시보드 · SlackWebSocket

StockPulse — 주식 이상 탐지 · AI 분석 파이프라인

2026.03 · 개인 프로젝트 · 설계부터 운영까지

한 · 미 108종목 1분봉을 Kafka 파이프라인으로 흘려 급등락을 잡고, 원인을 LLM으로 분석해 대시보드와 Slack까지. 온프레미스 쿠버네티스에 ArgoCD GitOps로 배포 · 운영.

  • Kafka
  • Kubernetes
  • ArgoCD
  • Sealed Secrets
  • TimescaleDB
  • Prometheus
  • FastAPI
  • Next.js
케이스 스터디 →

BARO

Kafka가 멈추자 관제 화면도 멈췄다

증상
관제 화면에 차량이 1대만 보이고, Mosquitto 로그에 Broken pipe가 쌓였어요.
원인
Kafka producer의 기본 대기 시간(max.block.ms 60초) 동안 MQTT 수신 스레드가 붙잡혀 브로커 큐가 넘쳤어요.
조치
max.block.ms를 500ms로, 재시도를 0으로 줄여 Kafka 장애가 MQTT 수신까지 번지지 않게 격리했어요.

BARO

consumer lag 2.9M, 범인은 hot path의 DB 조회

증상
dispatch의 위치 소비가 밀려 Kafka consumer lag이 2.9M까지 쌓였어요.
원인
위치 메시지마다(초당 약 333회) 해당 차량의 진행 중 배차를 DB에서 조회하고 있었어요.
조치
차량 → 배차 매핑을 메모리에 캐시해 메시지 처리 경로에서 DB 조회를 없앴어요.

StockPulse

ArgoCD가 영원히 OutOfSync

증상
배포가 끝나도 일부 리소스가 계속 OutOfSync로 표시되고, 큰 매니페스트는 적용 자체가 실패했어요.
원인
StatefulSet의 volumeClaimTemplates와 CronJob의 status처럼 클러스터가 채우는 필드가 Git과 계속 달랐고, 큰 리소스는 client-side apply가 남기는 last-applied annotation 한도(262KB)를 넘었어요.
조치
해당 필드를 ignoreDifferences로 비교에서 빼고, ServerSideApply=true로 바꿔 annotation 없이 적용하게 했어요.

기술 스택

Cloud · AWS

  • ECS Fargate
  • EC2
  • RDS
  • ElastiCache
  • ALB
  • Route53
  • Site-to-Site VPN
  • Secrets Manager
  • CloudWatch

IaC · CI/CD

  • Terraform
  • GitHub Actions
  • self-hosted runner
  • CodeDeploy Blue/Green
  • ArgoCD
  • Sealed Secrets

Container · Orchestration

  • Kubernetes
  • K3s
  • OpenStack
  • Docker
  • Harbor
  • MetalLB
  • NFS

Messaging · Data

  • Kafka
  • MQTT · Mosquitto
  • TimescaleDB
  • PostgreSQL · PostGIS
  • Valkey · Redis
  • Airflow

Observability

  • Prometheus
  • Grafana
  • Alertmanager
  • CloudWatch exporter
  • blackbox exporter
  • kafka-exporter

Backend

  • Kotlin
  • Spring Boot
  • Python
  • FastAPI
  • TypeScript
  • Next.js

소개

소개 글을 준비하고 있어요.