김준섭Java Backend Developer
금융 SI 4개 프로젝트(ING·NH 농협·KDB·메리츠증권)에서 레거시 전환, 운영 안정화, 배치 검증을 수행했습니다. 형상관리가 없는 시스템은 디컴파일로, SVN 환경은 Git+Jenkins로 바꿔왔고, 지금은 자택 홈랩 위에서 qwer4.org 포털·블로그·AI 서비스를 직접 운영하며 개발 이후를 계속 검증합니다.
Profile
나는 이런 개발자입니다
- 레거시를 두려워하지 않습니다. 형상관리가 없던 AML 시스템을 디컴파일로 분석해 TO-BE 전환 작업을 수행했고, ING 프로젝트에서는 SVN 기반 운영 환경을 Git + Jenkins CI/CD로 전환했습니다.
- 개발만 하고 끝내지 않습니다. 홈랩과 공개 포털을 직접 운영하며 배포·인증서 교체·인프라 페일오버까지 경험합니다. 서비스가 죽으면 직접 고쳐야 하는 환경이 최고의 운영 훈련입니다.
- 팀 자산을 만드는 문서화를 합니다. Jira 보드 세팅, Confluence 운영 가이드, Git 형상관리 문서를 정리하며 신규 인원이 빠르게 온보딩할 수 있는 기준을 만들었습니다.
Strength
핵심 강점
- 레거시 전환 리스크 관리 — 형상관리 없는 시스템도 디컴파일 분석으로 변경 범위를 파악하고, SVN→Git 전환과 CI/CD 도입으로 ING 프로젝트 배포 시간을 약 70% 단축했습니다.
- 금융 도메인 4건 이상 — 수출입 금융(ING), 시장리스크(NH), 글로벌 뱅킹 예산·경비(KDB, 130개 프로그램), AML(메리츠, 일 130~150만 건 배치)을 직접 담당했습니다.
- 운영까지 책임지는 개발 — WildFly 인증서 교체, JDK 업그레이드, SSO 장애 분석, JEUS 포팅을 포함한 운영 이슈를 개발 외 역할로 수행했습니다.
- 공개 검증 가능한 결과물 — qwer4.org 포털, blog.qwer4.org, ai.qwer4.org를 자체 하이퍼바이저·ZTA Tunnel·nginx로 직접 운영 중입니다. 페일오버 테스트 전 항목 PASS.
Timeline
커리어 타임라인
메리츠증권 AML 재구축
Oracle to PostgreSQL 전환, JEUS 포팅, CDD 공통 모듈화, 배치 검증 업무를 수행하고 있습니다.
산업은행 글로벌 뱅킹
경영지원 예산, 경비 도메인 130개 프로그램을 담당하며 대규모 금융 SI를 경험했습니다.
사내 표준화 기여
Jira, Confluence, Git, SKYLark UI 문서와 템플릿을 정리하며 협업 기준 정리에 참여했습니다.
ING 유지보수와 운영 대응
개발, 배포, 인증서, JDK, SSO, 취약점 대응까지 함께 맡으며 운영 감각을 키웠습니다.
NH 농협은행 시장리스크
F1 컨설팅과 협업하며 WebSquare 보고서와 SKYLark 설정 화면, 배치 운영을 경험했습니다.
아이엠비씨스템 입사
금융 SI 웹 개발 경력을 시작하며 Java 기반 프로젝트에 본격적으로 투입됐습니다.
Selected Work
대표 경험
메리츠증권 AML 재구축
산업은행 글로벌 뱅킹 재구축
사내 개발 표준화 및 문서 체계 개선
- 주간보고 양식과 이슈 흐름 기준을 정리해 협업 방식의 일관성을 높였습니다.
- Git, 개발환경, UI 관련 문서를 작성하거나 정리하며 신규 인원 온보딩에 기여했습니다.
- 시스템 관리자 문서와 인수인계 문서를 정리해 문서 이원화 방지에 참여했습니다.
ING 은행 수출입 금융 시스템
NH 농협은행 시장리스크 시스템 구축
- 시장리스크 업무 흐름을 이해한 상태에서 신규 화면 개발과 유지보수를 수행했습니다.
- 설정 화면과 보고서 화면이 다른 기술 스택으로 구성된 환경을 경험했습니다.
- 배치 운영 지원과 배포 대응을 함께 수행했습니다.
Trouble Shooting
실제로 겪고 해결한 문제들
이력서에는 나오지 않는, 실제 운영 환경에서 마주친 문제와 분석 과정입니다.
ING — 운영
WildFly 인증서 만료 → SSO 간헐적 실패
특정 사용자만 간헐적으로 SSO 로그인 실패. 에러 로그에는 "Connection reset" 외에 단서가 없었음.
서버 간 TLS 핸드셰이크 실패임을 확인 → WildFly 키스토어 인증서 만료 발견.
인증서 재발급 및 키스토어 교체, UAT·운영·백업 서버 순차 적용 후 세션 정책 재확인.
"간헐적"이라는 증상은 인증서 만료 초기에 나타나는 패턴임을 이후 유사 사례에 활용했음.
HomeLab — 인프라
ZTA Tunnel 이중 연결 → 인증 API 404 간헐적 발생
qwer4.org 포털 로그인 API가 외부에서 간헐적으로 404. 내부에서는 정상.
두 노드에서 동일 Tunnel ID로 ZTA 에이전트가 실행 중임을 확인 → 터널이 round-robin으로 트래픽을 분배. 미러 노드의 nginx에 /api/auth/ 블록이 누락돼 있었음.
미러 노드 nginx에 /api/auth/ proxy 블록 추가, auth-api bind를 모든 인터페이스로 변경해 양쪽 모두 정상 처리.
로그를 어느 노드에서 봐야 하는지를 먼저 확정해야 한다는 걸 확인했음.
메리츠 — 레거시
형상관리 없는 레거시 분석 → 디컴파일 기반 비교
기존 AML 5.0 시스템에 형상관리(VCS)가 없고, 운영 서버 클래스 파일만 존재.
운영 .class를 디컴파일 후 TO-BE 코드와 diff 비교. 변경 범위와 누락 로직을 직접 추적.
기간계 연계 화면 개발, CDD 공통 모듈화 작업에 기존 로직 손실 없이 반영.
코드가 없는 게 아니라 "찾는 방법이 다를 뿐"이라는 관점이 생겼음.
HomeLab — 배포
portal-vue 배포 후 Blank Screen
빌드 후 배포 완료 메시지가 났지만 브라우저에서 흰 화면만 표시.
JS 번들 파일 크기 확인 → 원본 대비 크기가 매우 작음 → base64 echo 방식의 plink 명령어 길이 제한으로 파일 잘림 확인.
tar + 청크 방식 배포 스크립트로 전환. 이후 배포 검증 절차(파일 크기 확인)를 표준화.
"배포 성공"과 "서비스 정상"은 다른 체크포인트임을 확인했음.
ING — 레거시
NULL 조회 결과 무방비 접근 → 운영 NPE 노출
사용자가 잘못된 날짜 값 입력 후 조회 시 화면에 NPE 에러만 표시. 에러 단서 없음.
selectOne 결과가 null인 상태에서 .get() 메서드를 null 체크 없이 직접 호출. 레거시 코드 전반에 유사 패턴 다수 존재.
BusinessException으로 null 케이스 처리, 메시지 코드를 통해 사용자 친화적 안내 추가. 동일 패턴 구간 일괄 검수.
JVM 예외가 화면에 그대로 노출되면 디버깅도 사용자 경험도 모두 나빠진다는 걸 확인했음.
ING — WAS
WildFly 피크 타임 응답 지연 → JVM 힙 리사이징 반복
업무 피크 타임 이후 WAS 응답이 간헐적으로 느려짐. OOM 로그 없어 원인 불명.
WAS 로그에서 Full GC 발생 빈도 확인 → 초기 힙(-Xms)과 최대 힙(-Xmx)이 달라 힙 리사이징이 반복 발생.
-Xms와 -Xmx를 동일 값으로 통일, MetaspaceSize 상한 추가. Full GC 빈도 급감.
"느려졌다"는 증상에서 GC 로그까지 계층별 지표를 함께 봐야 원인을 찾을 수 있다는 것을 확인했음.
메리츠 — DB 전환
Oracle → PostgreSQL 마이그레이션 중 전용 함수 불일치
Oracle에서 정상 동작하던 쿼리가 PostgreSQL 전환 후 오류 발생. 배치 처리 중 다수 실패.
Oracle 전용 함수(NVL, DECODE, TO_DATE 포맷)가 PostgreSQL에서 미지원. AML 5.0 쿼리 전반에 혼재.
PostgreSQL 동등 함수로 매핑(NVL→COALESCE, DECODE→CASE WHEN). 배치 쿼리 270여 건 순차 검수 및 수정.
DBMS 전환은 접속정보 변경이 아니라 함수 체계·NULL 처리·날짜 포맷 전체를 재검증해야 하는 작업임을 확인했음.
Growth
교육과 성장
Bootcamp
항해99 백엔드 부트캠프 수료
2025년 7월 5일부터 2025년 9월 13일까지 항해99 백엔드 부트캠프에 참여했습니다. GitHub 공개 저장소 기준으로
hhplus-tdd-java, study-learn-spring-posts, hhplus-e-commerce-spring에
포인트 과제, Spring Boot 기반 게시판과 JWT 인증, 이커머스 서버 구조 학습 내용을 정리했습니다.
Course
클라우드환경 (SaaS) 솔루션 전환과정
2023.09, 위블 교육을 통해 자사 솔루션에 적용하기 위한 Docker 기반 클라우드 전환과 SaaS 운영 관점을 학습했습니다. 실무에 바로 연결할 수 있는 배포와 운영 변경 포인트를 정리하는 데 초점을 맞췄습니다.
Course
Docker 기본 / 클라우드기반 Docker 활용
2022.04, 구트아카데미 교육을 통해 웹 애플리케이션 배포, 유지보수, 네트워크 구축에 필요한 Docker 기본기를 학습했습니다. 이후 홈랩과 실무 운영 경험으로 연결해 컨테이너 관점을 확장했습니다.
Course
빅데이터 분석 & Java 개발자 과정
2021.06부터 2021.12까지 에이콘아카데미에서 HTML, CSS, JavaScript, JSP, Spring, Database, Python, 웹 크롤링, 데이터 분석, 머신러닝, 딥러닝까지 폭넓게 학습하며 개발 전환의 기반을 만들었습니다.
Backend
Web Stack
Data
Database / Middleware
Infra
Self-hosted Platform
HomeLab / Public Platform
이 사이트는 어떤 구조로 만들어져있나요?
지금 보고 있는 이 포트폴리오 사이트는 제가 직접 구성한 홈랩 위에서 운영되고 있습니다. 상용 클라우드 없이, 자택 물리 서버 → 하이퍼바이저 → 서비스 컨테이너 → 리버스 프록시 → ZTA Tunnel 경로로 공개됩니다.
공개 포털 스택
qwer4.org
- Vanilla HTML/CSS/JS — 프레임워크 없이 직접 구성. 로딩 속도 최우선
- nginx (엣지 노드 + 미러 노드) — 이중화 구성, 한쪽 장애 시 ZTA Tunnel 자동 페일오버
- Python HTTP 서버 — 방명록 API, 인증 API, 유지보수 API를 단일 호스트로 운영
- ZTA Tunnel + Zero Trust Access — 포트 개방 없이 공개, 관리용 서브도메인은 GitHub OAuth 보호
어드민 패널 스택
admin.qwer4.org
- Vue 3 + Tailwind v4 SPA — 관리자 대시보드. Vite 빌드 후 nginx 정적 서빙
- Kotlin/Spring Boot — 서비스 제어 API. 각 컨테이너/VM 상태 조작
- LibreNMS — 네트워크·서버 모니터링 + 알림
- JWT 기반 포털 인증 — 회원가입 시 영상·AI 서비스 계정 자동 프로비저닝
블로그 스택
blog.qwer4.org
- Quartz v4.5.2 + Node 22 — Obsidian 노트를 마크다운 정적 사이트로 빌드
- Obsidian → Git push → rebuild.sh — 글 발행 파이프라인. SSH 원격 빌드
- CDN — JS/CSS 에셋 캐싱, 이미지 최적화
- 커스텀 CSS (custom.scss) — 다크 테마, 폰트, 레이아웃 직접 구성
AI 서비스 스택
ai.qwer4.org
- vLLM + 로컬 LLM 모델 — GPU 서버 위에서 로컬 추론. GPU 메모리 관리 직접 튜닝
- Open WebUI — 웹 프론트엔드. 포털 계정과 SSO 연동
- Discord Bot — 서버 제어, 블로그 동기화, 홈랩 모니터링 에이전트
- Anki 대시보드 — 학습 데이터 시각화 + AI 카드 자동 생성
Public Proof
공개 링크
Portfolio
Public Portfolio
채용 담당자가 빠르게 읽을 수 있도록 경력 요약과 프로젝트를 정리한 공개 포트폴리오입니다.
Portal
HomeLab Portal
직접 운영 중인 공개 포털입니다. 개인 서비스와 링크 허브의 역할을 합니다.
Blog
Tech Writing
Obsidian 기반으로 운영 중인 기술 블로그입니다. 실무와 홈랩 기록을 남기고 있습니다.
GitHub
Code & History
개인 프로젝트 코드와 개발 흔적을 확인할 수 있는 저장소입니다.
Contact
면접 또는 협업 문의는 아래로 연락해 주세요.