← 웹 포트폴리오로

윤형주 HyungJoo Yoon

Backend Developer — 돌아가게 만드는 것과, 계속 돌아가게 만드는 것

시스템이 느려지는 지점을 수치로 추적해 병목을 하나씩 풀어내는 과정을 좋아합니다. 설계부터 배포·운영까지 책임지며 만든 것을 끝까지 지킵니다.

Email ujk6073@gmail.com Phone 010-2566-1186 GitHub github.com/yhj0904 Blog popori99.tistory.com Web career.garabu.org

소개

// about

‘돌아가게 만드는 것’은 공공기관 SI 현장에서 배웠습니다. 농촌진흥청 LMS 초기 로딩을 5.7초→2.4초로, 통합 알림 서버의 1,000명 발송을 30초→5초로 줄이며, 발주처·점검 기관과의 합의까지가 품질이라는 것을 익혔습니다.

‘계속 돌아가게 만드는 것’은 직접 출시한 프로덕트가 가르쳤습니다. Garabu쉐어핏을 혼자 운영하며 통계 API를 2초→50ms(40배)로 개선했고, 키 유출 사고 뒤 배포 파이프라인을 재설계해 위험을 없애고 인스턴스 다운사이즈로 운영 비용을 약 50% 줄였습니다.

지금은 이 경험을 AI 기능에 적용합니다. 폐쇄망 RAG 챗봇으로 검색 정확도를 약 40% 높였고, 영화 117만 건 위에서 4인 팀의 PM 겸 백엔드 리드로 추천 서비스를 완성했습니다.

기술 스택

// skills
confident

손에 익은 도구

Java · Spring Boot · JPA · MyBatis · MySQL(쿼리 튜닝) · Redis · REST API 설계 · JWT · OAuth2 · Docker · AWS · vLLM 온프레미스(폐쇄망 서빙 구축)
exploring

요즘 파고드는 것

LangGraph · 멀티 에이전트 · 하이브리드 RAG(Qdrant · Elasticsearch · Neo4j) · Spring WebFlux · Virtual Threads · Kubernetes · Istio
to ship

제품을 내보내는 손

React Native · Expo · React · FastAPI · Django · Prometheus · Grafana · ELK · GitHub Actions · Jenkins · ArgoCD

일하는 방식

// method

경력과 프로젝트는 모두 문제 → 해결 → 성과 3단계로 정리했습니다. 각 항목 상단의 흐름 표시는 접근 방식(가설·검증 / 협업·조율)을 나타냅니다.

FLOW ① · 가설·검증형
문제 정의 실행·검증 성과
FLOW ② · 협업·조율형
문제 정의 해결·협업 성과

회사 경력

// experience

(주)나우리 개발3팀 · 사원

2024.09 – 2025.10

대학·공공기관 SI/SM 및 사내 솔루션 구축·유지보수. 단일 프로젝트를 넘어 개발·통합·운영을 병행했습니다.

DELIVERED FLOW ② · 협업·조율형

농촌진흥청 차세대 LMS

2024.11 – 2025.05
백엔드 · 기여도 51%

노후화된 공공 LMS를 차세대로 전면 재구축. 보안·웹 접근성 통과가 오픈의 전제였습니다.

hrd.rda.go.kr·Java 8 · Spring MVC · eGovFrame 4.3 · Tibero · Jenkins

01문제
  • 노후화로 응답이 느려진 기존 LMS
  • 공공기관 오픈의 전제 조건인 보안 취약점 통과
  • 법적 의무인 웹 접근성 기준 충족
02해결
  • 회원·게시판·쪽지·관리자 대시보드·수강신청 등 핵심 기능 백엔드 개발
  • 실행계획을 분석해 풀스캔을 인덱스 스캔으로 전환하고, 중첩 서브쿼리를 조인으로 평탄화
  • 발주처와 요구사항을 직접 조율하고 점검 기관의 지적사항을 기한 내 반영
03성과
  • 초기 로딩 속도 5.7초 → 2.4초로 58% 단축
  • 웹 취약점 점검(SQL Injection·XSS 등) 통과
  • 한국형 웹 콘텐츠 접근성 지침(KWCAG) 기반 웹 접근성 점검 통과 — 공공 오픈 품질 확보
5.7s2.4s
초기 로딩 · −58%
51%
핵심 기능 기여도
PASS
보안·웹 접근성 점검

// 공개 화면

농촌진흥청 LMS 공개 포털
hrd.rda.go.kr · 공개 포털
DELIVERED FLOW ② · 협업·조율형

사내 통합 알림 서버

2025.01 – 2025.06
백엔드

서비스마다 제각각이던 Push·알림톡·SMS를, 여러 팀이 공통으로 쓰는 플러그인형 알림 서버로 통합.

Spring Boot 3.4.5 · Java 21 · FCM · MyBatis · JWT · Spring Security ·사내 프로젝트(비공개)

01문제
  • 서비스마다 Push·알림톡·SMS를 따로 구현해 생긴 코드 중복
  • 서비스별로 제각각이던 발송 품질
  • 여러 팀이 공통으로 가져다 쓸 알림 서버의 부재
02해결
  • 세 채널을 공통 발송 모델로 추상화한 플러그인형 알림 서버 설계 — 새 채널은 어댑터로 확장
  • 비동기 처리와 배치 FCM 호출로 발송 성능 개선, 요청·성공·실패 이력화로 추적·재처리 지원
  • 연동 가이드를 문서화하고 여러 서비스 팀의 도입을 직접 지원
03성과
  • 비동기·배치 처리로 1,000명 발송 30초 → 5초
  • 복합 인덱스로 발송 이력 검색 3초 → 0.5초
  • Push·알림톡·SMS 3개 채널 통합과 Stateless 인증 체계 완성
30s5s
1,000명 발송
3s0.5s
발송 이력 검색
3
채널 통합 (Push·알림톡·SMS)
stateless
JWT 인증 체계
DELIVERED FLOW ① · 가설·검증형

사내 AI 챗봇 온프레미스 RAG

2025.03 – 2025.06
AI · 백엔드

폐쇄망이라 외부 LLM을 못 쓰는 환경에서, 방대한 사내 매뉴얼·규정을 답해 주는 온프레미스 RAG 시스템.

Python · Django · Llama · Qdrant · vLLM · LangGraph · CUDA 12.3 ·사내 프로젝트(비공개)

01문제
  • 방대한 사내 매뉴얼·규정에서 답을 빠르게 찾기 어려운 환경
  • 폐쇄망이라 외부 LLM API를 쓸 수 없는 제약
  • 키워드 검색만으로는 한계가 분명한 정확도
02실행·검증
  • PDF·HWPX·Excel·PPT 임베딩 파이프라인을 Qdrant HNSW에 적재
  • LangGraph로 Rewrite·Retrieve·Grade·Regenerate 그래프 구성, LLM-as-Judge로 관련성 자동 평가
  • 현업 부서의 매뉴얼·QA 셋으로 정확도 검증
03성과
  • 키워드 검색 대비 정확도 약 40% 개선
  • 폐쇄망 vLLM 서빙으로 외부 API 의존도 0
  • 외부 API 없이 평균 응답 2~3초 달성
+40%
정확도 (키워드 검색 대비)
2–3s
평균 응답 (온프레미스)
4
문서 포맷 처리
0
외부 API 의존
DELIVERED FLOW ② · 협업·조율형

국가정책·과제정보 수집 파이프라인

2025.08 – 2025.10
백엔드

7개 정부·공공기관에 흩어진 사업·입찰·공지를, LLM이 분석할 수 있는 형태로 모으는 수집 파이프라인.

jdcc.or.kr/policy·Spring Boot 3.4.5 · Playwright · Selenium · BeautifulSoup4 · MySQL · Qdrant

01문제
  • 7개 정부·공공기관에 흩어진 사업·입찰·공지를 일일이 수작업 확인
  • 모은 데이터를 분석에 바로 쓰기 어려운 형식
  • 기관마다 다른 사이트 구조와 갱신 주기
02해결
  • 동적 페이지는 Playwright, 정적 페이지는 BeautifulSoup — 기관별 전용 크롤러·수집 Agent 구성
  • 사이트별 어댑터로 수집 로직을 추상화해 사이트 변경에 대응
  • LLM이 분석할 수 있는 형태로 정제·가공해 구조화 적재
03성과
  • 7개 기관(NIA·NIPA·IITP·KIRIA·KIAT·KOSME·TIPA) 수집 자동화
  • 매일 사람이 확인하던 일을 파이프라인이 대체
  • 정책·과제 2,000여 건을 구조화해 적재
7
기관 수집 자동화
per-site
전용 크롤러·수집 Agent
LLM-ready
정제·구조화 적재

// 공개 화면

국가정책·과제정보 수집 결과 2105건
jdcc.or.kr · 수집 2,105건
OPERATIONS FLOW ② · 협업·조율형

유지보수 · 품질 · 인프라 다수 시스템 병행

2025.05 – 2025.09
운영 · 서버관리

군산대·국민연금공단·군장대·호원대 등 여러 대학·공공기관 시스템을 동시에 맡아 장애 대응·성능 개선·인증 취득·서버 셋업을 병행한 운영 업무.

howon.ac.kr·Spring · Oracle · Nexacro · eGovFrame 4.3 · Jira · Confluence

01문제
  • 군산대·국민연금·군장대·호원대 등 여러 시스템을 동시 운영
  • 장애 대응·성능 개선·보안·인증을 한꺼번에 진행
  • 시스템마다 다른 스택과 운영 요구
02해결
  • 군산대 학사·교원 시스템 MyBatis 매퍼·인덱스 튜닝, 군장대 장학금 시스템 Oracle 테이블 설계
  • 국민연금공단 4대사회보험정보연계센터 SSL/TLS·브라우저 호환성·방화벽·패킷 점검
  • GS 인증 기준 트랜잭션 경계 재설계, Jira·Confluence 이슈·산출물 관리와 고객 교육·보고
03성과
  • 사내 CMS/LMS의 GS 인증 Level 1 취득
  • 서버 10대의 운영 환경 문서화
  • 신규 서버 3대의 OS·보안·네트워크 초기 셋업
Lv.1
GS 인증 취득 (CMS/LMS)
28%
군산대 시스템 고도화 담당
10
서버 운영 환경 문서화
3
신규 서버 초기 셋업

// 공개 화면

호원대학교 공개 웹사이트
howon.ac.kr · 운영 시스템

개인 프로젝트

// personal projects
DEPLOYED FLOW ① · 가설·검증형

MonglePick 몽글픽 · AI 영화 추천 챗봇

2026.01 – 2026.05
PM 겸 백엔드 리드 · 4인

자연어 대화로 취향을 읽어, 117만 건의 영화에서 개인화된 추천을 건네는 AI 챗봇.

유저페이지·관리자·GitHub·AI Agent 상세·Backend 상세·설계 문서·FastAPI · LangGraph · Spring Boot · Qdrant · Elasticsearch · Neo4j · Kakao Cloud · Kubernetes

01문제
  • 평점 높은 순 나열은 "왜 좋아하는지"의 맥락을 담지 못함
  • 기록 없는 신규 사용자의 Cold Start 문제
  • 한 가지 검색 방식에만 기대는 추천 편향
02실행·검증
  • LangGraph 5개 그래프·52개 노드로 멀티 에이전트 라우팅 구성
  • 벡터·BM25·그래프 검색을 병렬 수행해 RRF로 융합
  • 비관적 락·AOP로 55종 리워드 동시성, 멱등성 키로 중복 결제 차단
03성과
  • 영화 117만 건·58GB를 스트리밍·체크포인트 재개로 처리해 OOM 해결
  • 카카오 클라우드 4-VM에 GitHub Actions CI/CD·Prometheus·Grafana·Loki로 운영
  • 308개 테스트·골든 60건으로 품질 검증, 4인 팀 PM 겸 백엔드 리드
1.17M
영화 데이터 (58GB)
79
관리자 에이전트 도구 (read-only)
3-way
벡터·BM25·그래프 RRF 융합
308+60
테스트 · 골든셋

// 화면 · 아키텍처

대화형 추천 홈
대화형 추천 홈
추천 결과 TOP 10
추천 TOP 10
관리자 AI 에이전트
관리자 AI 에이전트
하이브리드 RAG RRF 융합
하이브리드 RAG · RRF
4-VM 카카오 클라우드 인프라
4-VM 카카오 클라우드
LIVE FLOW ① · 가설·검증형

Garabu 가라부 · 멀티 플랫폼 가계부

2024.04 – 진행 중
1인 · iOS · Android 운영

직접 출시해 매일 운영하는 멀티 플랫폼 가계부. 복식부기 엔진부터 인프라까지 혼자 책임집니다.

garabu.org·App Store·Google Play·서버 상세·AI Agent 상세·앱 상세·웹 상세·Spring Boot · WebFlux · Java 21 · MySQL · Redis · Elasticsearch · React Native

01문제
  • 개인용 가계부를 커플·가족·모임이 한 장부로 함께 관리하고 싶음
  • 여러 기기에서 네트워크가 끊겨도 쓸 수 있어야 함
  • 1인 개발자에게 가장 어려운 건 출시 이후에도 멈추지 않게 지키는 것
02실행·검증
  • 차변·대변 분개·계정 트리·손익계산서·재무상태표 자동 생성 복식부기 엔진 구현
  • Redis 캐싱으로 통계 API 2초→50ms(40배), Elasticsearch 한글 전문 검색·감사 추적
  • 오프라인 퍼스트 — 비로그인 전 기능 사용, 로그인 시 트랜잭션 동기화 후 로컬ID→서버ID 매핑
03성과
  • 서버·앱·웹·인프라를 혼자 운영하며 iOS·Android·Web 실사용자에게 서비스
  • 키 유출 사고 이후 레지스트리 미경유 배포로 재설계해 위험 제거
  • 인스턴스 다운사이즈로 운영 비용 약 50% 절감

곁들여 — 복식부기를 코드로

단순 수입·지출 기록을 넘어, 차변·대변 분개 규칙을 도메인 모델로 구현해 손익계산서·재무상태표를 자동 생성합니다. "숫자가 안 맞으면 어딘가 분개가 틀렸다"는 복식부기의 자기검증 성질을, 거래 데이터 정합성을 지키는 장치로 그대로 활용했습니다.

40×
통계 API (Redis 캐싱)
3
플랫폼 (iOS·Android·Web)
~50%
운영 비용 절감
1
설계·배포·운영 전부

// 화면

메인 대시보드
메인 대시보드
통계 Redis 캐싱 40배
통계 · Redis 40×
복식부기 재무제표
복식부기 · 재무제표
자산 관리 계좌별 잔액
자산 관리
거래 추가 입력
거래 추가
LIVE FLOW ① · 가설·검증형

ShareFit 쉐어핏 · 운동 공유 플랫폼

2025.12 – 진행 중
1인 · iOS · Android 운영

운동 기록을 실시간으로 나누고 응원하는 소셜 피트니스 앱. 알림과 실시간 통신을 처음부터 직접 설계했습니다.

App Store·Google Play·서버 상세·앱 상세·Spring Boot · MySQL · Redis · SSE · FCM · React Native · Expo · Docker · AWS

01문제
  • 운동 기록은 혼자보다 함께 나눌 때 지속됨
  • 실시간 응원이 핵심 경험
  • 서버가 여러 대로 늘면 한 인스턴스의 SSE 연결로는 모두에게 닿지 못함
02실행·검증
  • 6개 도메인 130개 이상 REST API를 SpringDoc OpenAPI로 문서 자동화
  • JWT·OAuth2(Google·Apple·Kakao)·Spring Security·BCrypt·Rate Limiting으로 인증 강화
  • SSE 실시간 알림에 Redis Pub/Sub 브로드캐스트와 FCM 폴백
03성과
  • AWS EC2·RDS·S3·SES와 Docker 멀티스테이지 빌드로 배포 파이프라인 구성
  • App Store·Google Play 정식 출시·운영
  • REST API·실시간 통신·소셜 로그인·배포까지 1인으로 완수
130+
REST API · 6 도메인
3
소셜 로그인 (Google·Apple·Kakao)
2
실시간 경로 (SSE + FCM)
2
스토어 출시

// 화면

운동 기록 타이머
운동 기록 · 타이머
소셜 피드
소셜 피드
운동 요약 카드
운동 요약 카드
2인 협업 카드 상태머신
2인 협업 · 상태머신
운동 통계 요일별 부위별
운동 통계

AI 활용

// working with AI

LangGraph 멀티 에이전트 서비스를 만드는 사람이, 같은 오케스트레이션 원리로 자기 개발 환경을 자동화합니다. 설계·결정·검증은 직접, 반복·탐색은 에이전트에. (주로 Claude Code — 스킬·서브에이전트·훅·MCP)

context

컨텍스트 설계 — .md 작성 구조

CLAUDE.md(197줄 핵심 요약)는 매 세션 자동 로드되는 ‘프로젝트 헌법’ → docs/PROGRESS.md 인덱스 → docs/progress/{주제}.md 상세로 내려가는 계층형 단일 진실 원본. 같은 사실을 두 곳에 두지 않고, 운영 원칙은 상단에 고정해 스킬·훅이 실제로 강제.
skills

커스텀 스킬 7종 — 슬래시 명령

/commit · /create-pr · /review-code · /git-status-all · /sync-fork · /deploy-staging · /infra-status. 반복 작업을 명령 1회로 캡슐화 — 쓰기 스킬은 FAIL-FAST 안전 가드와 5개 레포 일괄 처리 내장, 커밋 컨벤션은 하드코딩 대신 레포에서 자동 학습.
subagents

서브에이전트 7종 — 권한·모델 차등

도메인 구현 5종(R/W)과 code-reviewer·test-runner(read-only)로 역할 분리. 권한 최소화, 모델 차등(구현=sonnet·검증=haiku), maxTurns 상한, 컨텍스트 격리 — 레포에 커밋되어 4인 팀 누구든 같은 기준으로 작업.
hooks

훅 — 손대지 않는 자동화 워크플로

PostToolUse 훅이 변경 파일을 컨텍스트에 자동 주입해 변경 추적을 유지하고, Stop 훅이 5개 레포 미커밋을 감지해 커밋 누락 차단. 권한 allowlist 556건으로 승인 중단 없이 커밋→PR→리뷰→배포가 이어지는 흐름.
mcp

MCP 연동 — 코드 밖까지

Google Sheets(WBS 진척 갱신) · Atlassian(Jira 이슈 생성·전이, Confluence 문서 작성) · Playwright(E2E 시나리오 구동·스크린샷 검증) — 프로젝트 관리·QA·검증을 한 대화 흐름으로.
case

대표 사례 — 사고를 체계로

@Transactional 전파 회귀(500 오류)를 겪은 뒤: 원인을 docs/progress/에 문서화 → /review-code 체크 항목 반영 → reflection 단위 테스트로 회귀 고정 → Codex 교차 검증. 만드는 도구(Claude Code)와 검증하는 도구(Codex)를 분리해 같은 사고가 리뷰·테스트에서 걸러지게.

학력 · 교육 · 활동

// education
2025.11–2026.05 카카오클라우드 활용 AIaaS 마스터 클래스 · 우수 수료팀 · 스나이퍼팩토리 · 카카오엔터프라이즈
  • Kakao Cloud VPC·Transit Gateway·Kubernetes/Istio Ambient·Load Balancer·Object Storage 설계·운영
  • GitHub Actions·ArgoCD 기반 CI/CD 파이프라인 구축, LoRA Fine-tuning·RAG Agent 구성 실습
2021–2023 SW공학 연구실 랩장 · 튜터링 튜터 · 전주대학교 컴퓨터공학과
  • 학부생 Java 멘토링·정기 스터디 운영, 후배 1:N 프로젝트 지도
  • GlueSQL 오픈소스 컨트리뷰션: 웹 SQL 테스트 페이지 개발 및 코어 버그 수정 PR (gluesql/gluesql#24)
2018.03–2024.02 전주대학교 컴퓨터공학과 졸업 · 학점 3.0 / 4.5 2025.12 정보처리기사 · 한국산업인력공단

회고

// lookback

기능을 만드는 개발과, 계속 굴러가게 만드는 개발은 다른 일이었습니다.

여러 프로젝트를 거치며, 기능을 완성하는 일과 출시 이후에도 멈추지 않게 지키는 일은 다른 문제라는 것을 배웠습니다.

공공기관 업무 시스템에서는 정확한 요구사항 분석과 안정적인 데이터 처리, 그리고 발주처·점검 기관과의 합의가 품질을 좌우했습니다.

사내 알림 서버와 온프레미스 AI 챗봇에서는 확장 가능한 구조와 운영(이력·실패 추적·관측성)을 먼저 설계해야 장애에 강하다는 것을 익혔습니다.

직접 출시한 프로덕트에서는 배포·모니터링·사고 대응까지가 진짜 개발이었습니다. 앞으로도 문제를 구조화하고, 운영까지 책임지는 백엔드 개발자로 나아가려 합니다.