Backend Developer · Java / Spring

정산 정합성과 권한 경계를
먼저 보는 백엔드 개발자

공공 SI와 멀티테넌트 SaaS 커머스에서 Java·Spring 백엔드를 개발했습니다. 버그 하나를 고치기보다 같은 유형의 구멍이 어디에 더 있는지를 찾고, 고친 결과가 맞는지 데이터로 검증하는 방식으로 일합니다.

핵심 성과

실무에서 직접 원인을 찾고 해결한 일들입니다.

118배

문의 목록 쿼리 성능 개선

관리자 페이지 로딩 10.25초 → 0.09초. 인덱스를 늘리지 않고 레거시 데이터를 정리해 조인 조건 자체를 없앴습니다.

50+ 엔드포인트

크로스테넌트 접근 차단

다른 테넌트의 데이터에 접근할 수 있던 경로를 컨트롤러 전수 점검으로 찾아 막고, 검증 로직을 공통 헬퍼로 분리했습니다.

60+ 건

LLM 챗봇 지식베이스·가드레일

오답 학습 데이터를 교정하고, 비공개 정보가 응답에 새지 않도록 출력이 아닌 모델 입력 단계에서 차단했습니다.

사례: 문의 목록 10.25초 → 0.09초

SaaS 커머스 관리자 콘솔 · 넘겨받은 기능의 성능 문제 추적
상황
관리자 문의 목록 진입이 매우 느리다는 현업 제보.
원인
회원 조인이 (회원키 매칭) OR (작성자ID 매칭) 형태라 인덱스를 끝까지 타지 못했습니다. 실행계획 실측 결과 약 1,140만 행을 스캔하고 필터 통과율은 0.0078%. 같은 조인이 목록·카운트·파트너 선택 3개 쿼리에 반복돼 있었습니다.
판단
OR 분기는 초기에 회원키를 기록하지 않던 레거시 데이터만을 위한 임시 보정이었습니다. 인덱스를 추가하는 대신 데이터를 고쳐 조건 자체를 없애기로 했습니다.
조치
  • 레거시 195건 백필. UNIQUE 제약으로 1:1 매칭 보장, 작성자명=회원명 195/195 일치 확인
  • 수정일시가 자동 갱신되지 않게 원값 보존, 복제 DB 전파 확인, 롤백 스크립트 작성
  • OR 조인 3곳을 단순 PK 조인으로 교체
검증
정렬·필터·검색·기간·페이징 41개 조합 × 3개 쿼리 = 123건을 수정 전/후로 실행해 전 컬럼 문자열 비교, 불일치 0건.
목록3.92s → 0.04s
카운트3.17s → 0.02s
파트너 선택3.15s → 0.02s

경력

2023.11 ~ 2026.09 · 약 1년 10개월

(주)티켓나라2026.04 ~ 2026.09
대리

멀티테넌트 SaaS 커머스 플랫폼

개발자 3인 팀 · 백엔드 전반, 관리자·파트너·정산 도메인

  • 테넌트 격리 보안: 파트너 관리·정산 지급·출금 승인·환불·예치금 등 50개 이상 엔드포인트에 테넌트 스코프 검증 적용, PG·인증 시크릿 조회와 타 테넌트 개인정보 노출 차단
  • 파트너 계층·정산: 국세청 사업자 휴·폐업 조회 일일 배치, 환불 시 과다 회수되던 역분개 경로 차단, 누락되던 충전 수수료 항목 복구
  • 발송포탈: 예치금 잔액이 증식되던 경로 차단, 예약 발송 재시도 시 이중 발송되던 문제 수정
  • LLM CS 챗봇: 지식베이스 정제·교정, 비공개 정보 입력단 치환, 조회 권한을 서버 확정 값으로 주입
  • Figma → 페이지빌더 위젯 변환 파이프라인: 영역 자동 분할, 색상 팔레트 매핑, 반응형 자동 변환, 테스트 스위트
  • 성능: 문의 목록 쿼리 118배 개선
Java 17Spring BootMyBatisJSPMariaDBRedisClaude API
(주)코리엠소프트2025.01 ~ 2025.04

간편결제 플랫폼 · 쇼핑몰 솔루션

  • 결제 앱 유지보수, JavaScript 룰렛 이벤트 개발
  • 쇼핑몰 솔루션 프로젝트 구성, 공통코드 개발
  • NAS–Linux 연동 및 파일 처리
JavaJSPJavaScriptMariaDBNAS
(주)소프트아이텍2023.11 ~ 2024.11

공공 SI (KISTI · 국방기술진흥연구소 · 한국생명공학연구원)

  • BioIN·BiCS 재구축 (2024) — PL: 분석·설계, 고객 회의 주도, 일정·산출물 관리. 공공 OpenAPI 연동, PDF 썸네일 자동 변환, 전문인력 관리 프로그램 신규 구축
  • 국방기술정보통합서비스(DTiMS) 4.0: 분석·설계·개발 (개발자 8명)
  • 국가과학기술지식정보서비스(NTIS): 연계·정제 품질관리 관리자 페이지 개발
JavaJSPOracleTiberoJEUS전자정부 프레임워크

개인 프로젝트

기획부터 배포·운영까지 혼자 만들어 실제로 서비스 중인 프로젝트입니다.

모바일 청첩장

wed.ssoho.store

고객별 코드·URL로 개별 청첩장을 발급하고, 관리자 화면에서 내용과 이미지를 관리하는 웹 서비스.

샘플 청첩장: 클래식 골드 · 모던 미니멀 · 로맨틱 블러쉬 · 내추럴 그린

  • 고객코드/URL코드 기반 동적 라우팅, 레이아웃 템플릿 15종, 갤러리·방명록·참석 여부(RSVP)·지도·BGM
  • 관리자: 예식 정보·이미지·하객 그룹·방명록·RSVP 통계 관리, 마스터 계정의 고객사 관리
  • Spring Security 인증, JPA 엔티티 설계, 이미지 업로드
  • Oracle Cloud에 nginx 리버스 프록시 + Let's Encrypt HTTPS로 직접 배포·운영
nginx(HTTPS) ─┬─ / → Next.js 14 (3000) └─ /api/ → Spring Boot 3.2 (8080) → MariaDB
Next.js 14TypeScriptSpring Boot 3.2Spring SecurityJPAMariaDBnginx

선물창고 (기프티콘 관리 앱)

gift.ssoho.store

흩어진 기프티콘을 사진 한 장으로 등록하고, 만료일 전에 알림을 받는 모바일 앱.

  • OCR로 기프티콘 이미지에서 정보 자동 인식
  • JWT 로그인 + 관리자 승인 기반 가입, 만료 임박 푸시 알림
  • GitLab CI/CD로 서버 자동 배포, EAS로 Android APK 빌드
React Native(Expo) 앱 ─→ nginx ─→ FastAPI (8090) → MySQL └─ 웹 빌드 정적 서빙
React NativeExpoTypeScriptFastAPIPythonMySQLGitLab CI

AI 개발 방식

AI를 "코드 자동완성"이 아니라 역할을 나눈 팀처럼 씁니다.

01 · 계획

요구사항을 작업 단위로

Claude Code에서 계획 담당 에이전트로 작업을 쪼개고, 영향 범위를 먼저 정리합니다.

02 · 구현

멀티 에이전트로 병렬 진행

oh-my-claudecode로 구현·검토·검증 역할을 분리해 실수를 줄입니다.

03 · 교차 검증

다른 모델로 리뷰

Codex로 같은 변경을 다시 검토해, 한 모델의 맹점을 다른 모델로 잡습니다.

04 · 확인

결과는 데이터로

"됐다"가 아니라 실행 결과·전후 비교로 확인한 뒤에 반영합니다.

실무에서는 Claude API로 CS 챗봇을 직접 운영하며 가드레일과 지식베이스 품질을 관리했습니다.

기술 스택

실무와 개인 프로젝트를 구분해 적었습니다.

실무 주력
Java 17Spring BootMyBatisJSPJavaScript
Database
MariaDBOracleTiberoRedis
AI
Claude APIClaude CodeCodex
Infra / Tool
LinuxnginxGit / GitLabGradleJEUS
개인 프로젝트
Next.jsReact NativeTypeScriptJPASpring SecurityFastAPIOracle Cloud