아키텍처 설계부터 프론트엔드, 인프라 운영까지 —
프로덕션 레벨의 시스템을 만드는 Senior Fullstack Developer
5년 이상의 실무 경험을 통해 백엔드 아키텍처 설계부터 크로스플랫폼 모바일 개발, 프로덕션 인프라 구축까지 전체 스택을 아우르는 역량을 갖추었습니다.
기술적 의사결정에서 트레이드오프를 명확히 인식하고, 현재 규모에 맞는 적정 기술을 선택하는 것을 중요하게 생각합니다. 과도한 엔지니어링보다는 문제에 맞는 해결책을 선호합니다.
대기업 그룹사 통합 인사(HR) 시스템에서 3년간 도메인 신규 구축 → 플랫폼 현대화 → AI 기능 도입의 전 과정을 수행했고(커밋 4,491건), 개인 프로젝트로는 KakaoTalk 스타일 실시간 메시징 플랫폼을 1인 풀스택으로 설계·구현·운영하며 프로덕션 레벨의 기술 과제를 해결했습니다.
백엔드 아키텍처부터 모바일 클라이언트, 인프라까지
서로 다른 도메인에서 다양한 기술 과제를 해결한 경험
대기업 그룹사 통합 인사 시스템 3년 실무. 채용·승진·건강검진 도메인 신규 구축, 레거시 Spring → Spring Boot 3.5 플랫폼 현대화, OCR·LLM·RAG 챗봇 등 AI 기능 실무 도입.
KakaoTalk 스타일 실시간 메시징. Hexagonal Architecture + Redis Pub/Sub 멀티 인스턴스 브로드캐스팅, 카나리아 배포 자동화, Flutter 크로스플랫폼 4개 OS.
멀티 모듈 마이크로서비스 이커머스 (8개 모듈). Redisson MultiLock 동시성 제어, ElasticSearch Nori 한국어 검색, Redis 쓰기 버퍼 패턴.
티켓팅·수강신청 버스트 트래픽 제어. Spring WebFlux 논블로킹 리액티브 + Redis Sorted Set 대기열, VIP 우선순위 스코어 설계, Pub/Sub 실시간 알림. TDD 개발.
수만 명 동시 접속을 견디는 선착순 티켓 예매. Hexagonal Architecture, 멱등성 키 중복 차단, TTL 임시 홀드, Kafka 비동기 후처리, Testcontainers 동시성 테스트.
체크아웃 → PSP 승인 → 정산 → 복식부기 원장 → 복구까지. Kotlin + Kafka 3개 마이크로서비스, Transactional Outbox·멱등 소비·DLQ·Recovery Scheduler 신뢰성 패턴.
사진을 네이버 블로그 글로 바꾸는 멀티에이전트 파이프라인. Spring 오케스트레이터 + FastAPI LLM 에이전트 10단계, 상태 머신 재개(아티팩트 재사용), SSE 콘솔, Chromium 발행 확장.
기획·디자인부터 학습 콘텐츠까지 1인 제품화. Flutter 모바일 + React PC 웹 + Node(Hono·SQLite) 동기화 서버, last-write-wins 오프라인 우선 동기화, 문서 주도 개발.
무엇을 만들었는지보다, 왜 그렇게 결정했고 어떤 문제를 어떻게 풀었는지가 중요합니다
운영 장애 시 쿼리 한 줄 수정에도 배포가 필요했음. 배포 없이 운영 중 쿼리를 교체하는 AOP 기반 프레임워크를 설계하되, dry-run 롤백 격리·@Modifying 차단·TTL 클램프로 오남용을 다층 차단.
RAG 챗봇에서 사내 용어·코드명 질의는 키워드 매칭(BM25)이, 자연어 질문은 의미 검색(kNN)이 강함. RRF로 두 순위를 융합해 양쪽 질의 유형을 모두 커버. 권한 필터는 fail-closed로 설계.
StompBrokerRelay + RabbitMQ는 추가 인프라가 필요합니다. 이미 캐시/Rate Limit용으로 Redis를 사용 중이었기에, Redis Pub/Sub으로 인스턴스 간 메시지를 브로드캐스팅. 추가 인프라 비용 제로로 멀티 인스턴스 동기화 달성.
도메인 외부 의존성을 제로로 만들고, InMemory 어댑터로 인프라 없이 서비스 테스트 가능. ArchUnit 9개 규칙으로 CI에서 아키텍처 위반 자동 검증. 65개 UseCase(1:1 Service) 원칙.
DB 비관적 락은 커넥션을 오래 점유하여 DB 부하 유발. Redisson 분산 락은 Redis 기반으로 부하를 분산하고, MultiLock은 N개 상품 락을 정렬 순서로 획득하여 데드락을 원천 차단.
단일 브로커는 모든 요구사항을 최적으로 충족하기 어려움. 주문/결제 핵심 이벤트는 RabbitMQ 메시지 보장, 검색/집계 보조 이벤트는 Redis Streams 저지연으로 역할 분리.
운영 환경에서 ajax 요청이 간헐적으로 401. 재현이 되지 않아 장기간 원인 미상.
curl 재현 + ELK 로그 분석으로 동시 요청 세션 읽기 miss와 401 응답의 익명 세션 쿠키 오염 증폭 구조를 입증 후 각각 수정.
산발 401 재발 제로. "재현 불가" 장애를 추측이 아닌 로그 근거로 입증·수정.
보안 이슈로 POI 상향 후, 소스 수정이 불가능한 상용 그리드 서버모듈과 바이너리 비호환 → 엑셀 다운로드 전면 장애.
벤더 모듈을 바이트코드 호환 패치로 처리해 90개 화면 복구. 동일 유형 잠재 위험 전수 audit + 회귀 테스트.
소스 접근 없이 전면 장애 복구. 의존성 상향 영향 범위를 전수 검증하는 절차 확립.
Redis Pub/Sub 멀티 인스턴스 브로드캐스팅에서 "메시지가 정말 모든 사용자에게 전달되는가?"를 증명할 방법이 없었음.
전달 경로 4단계에 Micrometer 메트릭 삽입. 10개 커스텀 메트릭 + DeliveryImbalance 알림(인스턴스 간 전달량 50%+ 편차 → 부분 장애 감지).
"3개 중 1개만 장애"인 부분 장애까지 선제적 감지. 사용자 리포트 없이 숫자로 전달 상태 증명.
Blue-Green에서 트래픽 전환 시 전체 서비스가 동시에 영향. "배포가 안전한가?"의 객관적 기준 부재.
5xx > 5%를 임계값으로 정의. app-1 카나리아 → 60초 대기 → Prometheus API 자동 쿼리 → 초과 시 :previous 자동 롤백.
장애 영향 전체 → 1/3 축소. 수동 판단 제거로 human error 방지. 프로덕션 트래픽 기반 검증.
N개 상품 동시 주문 시 락 획득 순서가 다르면 교착 상태 발생. DB 비관적 락은 커넥션 풀 고갈 위험.
Redisson MultiLock + 상품 ID 오름차순 정렬. 모든 스레드가 동일 순서로 락 획득 → 데드락 원천 차단. DB 부하를 Redis로 분산.
동시 주문 재고 정합성 100% + 데드락 제로. 커넥션 점유 시간 대폭 감소.
주문마다 ES 직접 업데이트 시 세일 트래픽 → ES 쓰기 폭증 → 검색 응답 지연이라는 cascading failure 위험.
RabbitMQ → Redis HINCRBY 원자적 집계 → 60초 배치 플러시 → ES Painless 스크립트. "60초 이내면 체감상 실시간" 판단.
ES 쓰기 부하 60배 감소. 세일 폭증에도 Redis가 흡수하여 ES 안정성 보호.