유기동물 보호·입양 플랫폼
CASE STUDY · 2025.11 — 현재
PawBridge
이벤트 전달 신뢰성과 운영 구조를 함께 설계한 MSA공공데이터 기반 입양 플랫폼을 운영하며 서비스 간 이벤트 전달, 검색 모델, 캐시 안정성, AI 기능 분리와 Kubernetes 전환을 다뤘습니다.100 VU · 5분 가중 시나리오
부하 검증 오류율
전체 시나리오 응답 지연
Problem
분산된 서비스의 실패를 한곳에서 감당할 수 없었습니다.
Kafka 직접 발행은 커밋 이후 장애에서 이벤트 유실 가능성이 있었고, 재전송은 중복 처리 위험을 만들었습니다. 다중 파드에서는 캐시 만료가 겹칠 때 DB 요청이 한꺼번에 몰릴 수 있었으며, 검색과 AI 실험까지 Java 도메인 로직에 묶이면 변경 비용이 커지는 상황이었습니다.
My role
애니멀·스토어·페이먼트부터 AI와 운영 환경까지 연결했습니다.
- Java/Spring 기반 애니멀·스토어·페이먼트 API 개발
- Python/FastAPI 기반 이미지 유사도 추천과 입양 준비 도우미 구현
- Kafka 이벤트 정합성, Redis 캐시 안정화, Elasticsearch 검색 구조 설계
- Kubernetes·Helm 배포와 Prometheus·Grafana·Zipkin 관측 환경 구성
Decision
기술을 늘리기보다 실패 경계와 책임을 먼저 나눴습니다.
- 비즈니스 데이터와 이벤트를 같은 트랜잭션에 저장하고 Debezium CDC로 전달
- ProcessedEvent 멱등성 체크와 키 기반 파티셔닝으로 중복·순서 문제 제어
- Redis 분산 락·Double-Check·TTL Jitter로 Cache Stampede 완화
- MySQL CUD와 Elasticsearch 검색 모델을 분리하고 상세 조회는 MySQL에 유지
- DINOv2 추천과 Gemini 챗봇을 Python/FastAPI 서비스로 분리
Verification
운영 조건을 섞은 시나리오로 구조가 버티는지 확인했습니다.
- 동물 목록·검색·상세·AI 추천·통계·보호소를 섞은 100 VU, 5분 부하 검증
- 총 17,356건 · RPS 57.7 req/s · 오류율 0%
- 전체 p95 69.69ms · p99 133.62ms, ES 검색 p95 62ms, MySQL 상세 p95 42ms
- Slack 알림과 분산 추적으로 파드 수준 이상 징후 확인 경로 구성
Boundary
비용 제약도 운영 설계의 조건으로 기록했습니다.
관리형 EKS 비용 대신 Vagrant VM 기반 3-Node Kubernetes 환경으로 전환해 배포·스케일링·관측 흐름을 검증했습니다. 관리형 클라우드 운영과 동일하다고 과장하지 않고, 직접 확인한 범위를 포트폴리오의 경계로 둡니다.