안영준
백엔드 개발자
EMAILahn479512@gmail.com
GITHUBgithub.com/Ahnyeongjun
BASE서울, Korea
안영준

폐쇄망 배포, 에러를 사전에 잡다

외부 기관의 폐쇄망에 납품·배포하는 환경에서는 한 번 터진 에러를 곧바로 손볼 수 없어, 배포 후가 아니라 배포 전에 문제를 잡는 데 집중했습니다. k6 부하테스트와 테스트 클러스터 통합 테스트를 도입해 50VU 동시 요청 기준 에러율을 11%에서 0%로 낮추고 잘못된 배포를 사전에 걸러냈습니다. 모놀리식 구조를 도메인 단위 9개 서비스로 분리한 MSA 전환으로는 전체 재배포를 월 10건에서 1건으로, 사내 에러 문의를 주 2~3회에서 월 1회로 줄였습니다.

최적화는 백엔드 밖에도 있었다

주 도메인은 백엔드이지만, 병목이 백엔드 안에서만 생기지는 않았습니다. jQuery·Thymeleaf 레거시를 Next.js 15·FSD 아키텍처로 전면 마이그레이션해 프론트 렌더링을 정리했고, CesiumJS 커스텀 ImageryProvider로 이종 레이어 통신 방식을 단일 인터페이스로 추상화했습니다. AI 모델을 직접 학습해 OBB/HBB 탐지(mAP50 0.644)와 세그멘테이션(mIoU 0.7205)을 서빙했고, GPUShare로 GPU 4장에 70파드를 동시 운영하며 일 처리량을 200건에서 3,000건으로 끌어올렸습니다.

반복은, 자동화로

프로젝트를 거듭하며 같은 종류의 수동 작업이 반복되는 것을 보고, 사람이 손대지 않아도 되는 부분부터 자동화로 옮겼습니다. FastMCP 기반 사내 에이전트를 만들어 Git 커밋 이력 정리, 캘린더 일정 동기화, HRWeb 근태 처리를 통합했고, ML 실험 기록·학습 파라미터·결과 비교를 자동 관리하는 실험 자율화 에이전트를 구축해 Slack 알림까지 연동했습니다. 이 자동화로 운영 부담이 줄면서 1인 담당 서비스는 1개에서 5개로, 재배포는 월 10건에서 1건으로, 사내 에러 문의는 주 2~3회에서 월 1회로 줄었습니다. 이 경험을 더 큰 트래픽과 더 복잡한 운영 환경에서 이어가고 싶습니다.

01경력
한컴인스페이스
연구원 · 소프트웨어플랫폼 · 재직 중
2021.07. ~ 재직 중 (5년)
AI 처리 플랫폼 풀스택 개발
  • 위성영상 탐지·세그멘테이션·변화탐지 AI 파이프라인 설계·운영
  • MSA 전환·배포 자동화 — 재배포 월 10건→1건, 배포 4분→30초
  • k6 부하테스트 기반 API 최적화 — PostGIS 38초→159ms, 에러율 11%→0%
  • AOP+MyBatis Outbox 라이브러리 직접 개발 — CDC 인프라 의존 제거, 이벤트 유실 0건
AI 모델 학습·추론
  • 객체탐지·세그멘테이션 모델 학습·서빙 — mAP50 0.644, mIoU 0.7205
  • 추론 가용성 확보 — GPU 4장 70파드 동시 운영, 처리량 200→3,000건/일
사내 자동화 에이전트 개발
  • FastMCP 에이전트 — Git·캘린더·HRWeb 통합, 문서 자동화
  • ML 실험 자율화 에이전트 — cronjob으로 학습 루프 자동 실행·기록, Claude Skill·Hook 기반 실험기록 표 자동 생성, Slack 알림
02프로젝트
NIPA 위성 변화탐지 AI 플랫폼 — MSA 설계2025.07. ~ 진행 중
두 시점의 위성영상을 비교해 지표 변화를 AI로 탐지하는 플랫폼입니다. NIPA(정보통신산업진흥원) 지원 사업으로, MSA + FastAPI 기반으로 재설계하며 RabbitMQ 비동기 파이프라인과 Next.js 15 FSD 프론트엔드를 처음 도입했습니다.
비동기 처리 파이프라인
원인Salt 폴링이 ack/nack를 지원하지 않아, 완료 콜백 유실 시 작업이 RUNNING 상태로 고착되어 수동 DB 복구 필요
해결RabbitMQ ack/nack + DLQ 비동기 파이프라인으로 전환, 연결 단절 시 자동 재투입·3회 초과 시 DLQ 격리
결과작업 유실 0건
게이트웨이 레벨 인증
원인서비스가 늘어날수록 각 FastAPI 서비스가 JWT 검증을 직접 처리해 인증 코드가 중복되고, 정책 변경 시 전 서비스를 동시에 수정해야 했습니다.
해결Keycloak OIDC와 Envoy Gateway SecurityPolicy로 인증을 게이트웨이 레벨로 끌어올려, 정책 변경은 SecurityPolicy 1개만 수정하면 되도록 만들었습니다.
결과정책 변경 시 SecurityPolicy 1개만 수정, 신규 서비스는 Policy 연결만으로 인증 적용, Keycloak 세션 공유 SSO 확보
MSA 전환
원인모든 기능이 단일 프로세스로 결합돼 도메인 경계 부재, 기능 하나 배포에도 전체 서비스 재시작으로 배포 시마다 운영 중단
해결도메인 단위 9개 서비스로 분리, 전 서비스 FastAPI 통일·Envoy Gateway 라우팅
결과재배포 월 10건→1건, 배포 속도 4분→30초
멀티 배포 뷰어·레거시 프론트 재설계
원인jQuery에서 Thymeleaf로 이어진 레거시 프론트, 컴포넌트 추상화 없어 기능 경계 모호·작은 수정에도 영향 범위 예측 불가했고, 지구 변화탐지·달지도 두 모드를 별도 배포해야 했습니다.
해결Next.js 15·FSD로 feature slice를 분리해 동일 Docker 이미지를 K8s 환경변수만으로 여러 배포판으로 나눴고, CesiumJS 커스텀 ImageryProvider로 이종 레이어를 단일 인터페이스로 추상화했습니다.
결과신규 레이어 추가 시 기존 코드 수정 0건, 환경변수만으로 지구/달 모드 배포 분리
항공우주연구원(KARI) 위성영상 AI 처리 플랫폼 구축2023.10. ~ 2025.07.
다누리·Sentinel·Landsat 등 10개 이상 위성 소스를 수집·처리해 객체탐지·세그멘테이션·초해상도 AI 추론 결과를 CesiumJS 뷰어로 가시화하는 플랫폼입니다. 한국항공우주연구원(KARI)에 납품했으며, Outbox 패턴 라이브러리·Aliyun GPUShare·janus 워크플로우 엔진을 이 프로젝트에서 설계·구현했습니다.
부하 테스트 기반 성능·보안 개선
원인국가기관 납품 특성상 보안 요구사항이 엄격했고, 32개 매퍼에 SQL injection 취약점이 있었으며, k6 50VU 부하테스트에서 에러율 11.22%가 발생했습니다.
해결보안 체크리스트·JUnit 통합 테스트를 선반영하고 SQL injection을 화이트리스트 검증으로 교체, 조건부 PostGIS 실행·페이지네이션·BLOB 분리·Redis 캐싱으로 병목을 해소했습니다.
결과위성 메타 목록 38초→159ms(239배), 수집 현황 집계 46초→181ms(256배), 알람 팝업 목록 25초→104ms(캐시 20ms), 50VU 에러율 11.22%→0%, 처리량 392→1,177 req/s
파일 기반 양방향 DB 동기화
원인외부망↔폐쇄망이 물리 분리돼 포트·외부 솔루션을 쓸 수 없는 환경에서, Debezium CDC로 양방향 DB 동기화를 구현했으나 replication slot이 반복 파손됐고, UUID v4로는 발생 망·서버 역추적도 불가능했습니다.
해결CDC 의존을 제거하고 MyBatis Executor 인터셉터 기반 Outbox 라이브러리를 직접 구현했으며, Snowflake 알고리즘으로 worker ID에 망 정보를 인코딩해 이벤트 유실 없이 안정적으로 운영했습니다.
결과이벤트 유실 없이 안정적으로 운영, 외부 코디네이터 없이 단조 증가·전역 유일성·망 추적 동시 확보
영상 서빙 속도 개선
원인수십~수백 MB GeoTIFF 원본을 그대로 내려주면 뷰어가 렌더링하지 못했고, 객체탐지 결과를 GeoJSON으로 매번 동적 생성해 캐싱 효과 없이 응답에 최대 5분이 걸렸습니다.
해결Go로 영상 서빙 서버를 구현해 WMS·WMTS·MVT 세 프로토콜을 지원하고, 베이스맵은 WMTS 타일 사전 생성·캐싱으로, 객체탐지 결과는 ETL 단계 MVT 사전 생성으로 전환했습니다.
결과WMTS 타일 캐싱 2.4s→0.4s, MVT 전환으로 객체탐지 오버레이 응답 약 5분→1초 이내
관심정보 객체탐지·변화탐지 세그멘테이션 성능 향상
원인위성 나디르 고정 촬영 특성상 회전 augmentation이 오히려 mAP50을 떨어뜨렸고, 땅과 도로 색상이 유사해 세그멘테이션 픽셀 분류가 까다로웠습니다.
해결20클래스를 OBB/HBB로 이원화하고 회전 augmentation을 제거했으며, ConvNeXt-Base+UPerNet에 Skeleton Head를 추가해 mIoU 0.7205를 달성했습니다.
결과HBB mAP50 0.644 / OBB mAP50 0.604, 세그멘테이션 mIoU 0.7205
03대외활동
FESI 13기 — 백엔드 멘토링codeit · 2026
프론트엔드 부트캠프 수강생 6명 대상 실무 방식 기반 멘토링 (PR 리뷰, REST API 설계, DDD·TDD 실습).
제4회 블레이버스 MVP 개발 해커톤블레이버스 · 2026
기계공학 3D 학습 플랫폼 SIMVEX 개발 — @react-three/fiber 기반 3D 분해·조립 시뮬레이션 및 SSE 스트리밍 AI 어시스턴트 구현.
스위프(SWYP) 웹 9기 ~ 11기, 앱 4기스위프 · 2025 ~ 2026
4개 기수에 백엔드·프론트엔드·PM으로 참여하며 팀 프로젝트를 웹·앱으로 출시했습니다.
항해99 백엔드코스 9기항해99 · 2025
동시성 제어와 이벤트 드리븐 아키텍처를 실전으로 검증하는 학습 프로젝트. 상위 10% 수료.
AI 커리어스쿨멋쟁이사자처럼 · 2024
Python 기반 데이터 분석 및 시각화 학습 — 위성 영상 데이터 파이프라인·AI 모델 서빙 업무의 데이터 처리 흐름 이해에 기반이 됨.
04교육
한밭대학교
대학교(학사) · 융합기술학과
2022.03. ~ 2026.03. · 졸업
대덕소프트웨어마이스터고등학교
고등학교 · 소프트웨어개발과
2020.03. ~ 2022.03. · 졸업
05자격증
SQL개발자(SQLD)2025.12.
합격 · 한국데이터산업진흥원
정보처리기사2025.06.
합격 · 한국산업인력공단
정보기기운용기능사2021.12.
합격 · 한국산업인력공단
정보처리기능사2020.12.
합격 · 한국산업인력공단
06기술 스택
Spring BootJavaKotlinPythonGoFastAPIPostgreSQLMySQLRedisRabbitMQKafkaKubernetesDockerNext.js
안영준 · 백엔드 개발자ahn479512@gmail.com