나호진
Java / Spring 개발자
Java/Spring으로 공공 서비스와 사내 그룹웨어를 개발하고 운영했습니다. 현재 경기도청 내부 업무 지식 공유 시스템인 도정지식포털의 기능 개발과 운영 배포를 담당하고 있습니다.
경력
딥파인
2024.02 – 현재
도정지식포털의 기능 개발과 운영 배포를 맡고 있습니다. 경기민원24에서는 지원 사업별 신청 폼 개발을 지원했습니다.
Spring Framework 4.3, MyBatis, MariaDB, JSP, jQuery, Vue.js
접속 통계 조회 지연 개선
- 접속 통계 요청에 111.5초가 걸리는 원인을 MyBatis 로그로 추적했습니다. 사용자와 게시글을 중첩 순회하며 조회 쿼리를 반복 호출하고 있어, 이를 JOIN 쿼리로 통합했습니다.
- 반복 호출을 없앤 뒤에도 지연이 남아 실행 계획을 분석하고 복합 인덱스를 추가했습니다. 동일 조회 기간과 조건에서 요청 응답 시간이 1초로 줄어든 것을 확인했습니다.
Chrome 개발자 도구의 Network 탭으로 요청 응답 시간 측정.
파일 다운로드 권한 검증
- 파라미터 변조를 통한 임의 파일 다운로드 문제가 발견됐습니다. 파일에는 별도 권한 컬럼이 없었고, 운영 정책상 DB 스키마 변경도 어려웠습니다.
- 게시글 열람 권한을 확인한 뒤 사용자 ID, 첨부파일 ID, 시간값을 포함한 HMAC-SHA256 서명을 발급하도록 구현했습니다. 다운로드 시 로그인 세션과 대조하고, 해당 사용자와 파일에 대해서만 10분간 유효하도록 제한했습니다.
요청별 로그 추적과 예외 알림
여러 요청의 DEBUG 로그가 섞여 오류가 발생한 요청의 처리 흐름을 찾기 어려웠습니다. 웹 요청과 예외 로그를 MyBatis 상세 출력과 구분하고, 요청 ID로 관련 로그를 모아 볼 수 있도록 했습니다. 예외 발생 시에는 관리자 인앱 푸시와 메신저로 알림을 보내도록 했습니다.
플랫타이엑스
2023.05 – 2023.08
Java 11, Spring Boot 2.7, Firebase FCM, RabbitMQ, JPA, Redis, MySQL
문자 발송을 대체하기 위한 푸시 서비스 개발
- 정해진 FCM과 RabbitMQ 구조를 바탕으로 푸시 발송과 재시도 처리를 구현했습니다. 재시도 한도를 넘긴 메시지는 보관하고 개발팀 Slack으로 알리도록 했으며, 기존 문자 발송 모듈의 대체 테스트까지 완료했습니다.
- 폐쇄망에서 FCM API를 호출할 수 있도록 보안팀의 접근 허용 절차를 거쳐 푸시 발송 기능을 연동했습니다.
기존 OpenAPI 프로젝트 전환 (온보딩 과제)
사내 레거시 시스템 전환 작업의 일부로, 온보딩 기간에 기존 OpenAPI 프로젝트를 Spring Framework 4.3에서 Spring Boot 2.7로 옮겼습니다.
미디어로그
2022.02 – 2023.05
Java 8, Spring Boot, MyBatis, MySQL, Vue.js, Electron
- 협력사원이 제출한 문서로 현업이 결재를 기안하고 총무가 계정을 생성하던 절차를 온라인으로 전환했습니다. NICE 본인인증을 포함한 회원가입 화면과 서버 기능을 구현했습니다.
- 가입 정보로 담당 현업 명의의 결재 초안을 생성하고, 현업 상신 후 최종 승인 시 계정을 활성화하도록 연동했습니다. 협력사 직원의 철수와 연장 관리 기능도 개발했습니다.
프로젝트
unified-biztool GitHub ↗
2025.04
Java 17, Spring Boot 3.3, Thymeleaf, Apache POI, Redis, Meta Graph API
- 엑셀에 작성된 광고를 Meta Business Suite에서 수동 등록하던 작업을 웹으로 옮겼습니다. 광고 계정과 캠페인 조회, 이미지와 영상 업로드를 거쳐 집행 대기 상태의 광고가 생성되도록 구현하고, 광고 등록 테스트를 완료했습니다.
- 엑셀 행 병렬 처리와 Meta API 응답 캐싱, 영상 분할 업로드 및 실패 시 취소 처리를 구현했습니다.
auto-board GitHub ↗
2023.12
Java 17, Spring Boot 3.1, JPA, QueryDSL, MySQL, Redis
- GitHub Actions와 Linux 스크립트로 배포 작업을 자동화했습니다.
- IP 헤더를 바꾸는 대량 요청을 경험한 뒤 주요 API에 Google reCAPTCHA 서버 검증을 추가했습니다. 요청 횟수 제한에는 Bucket4j의 토큰 버킷을 사용했습니다.
학력
중앙대학교 문헌정보학과 졸업
2013 – 2021