백엔드 개발자 · 5년차 (Java/Spring)
👤: 김용건 / 1995.07.19
✉️ : [email protected]
📞 : 010-8266-6583
📃 : https://blog.yonggeon.kr
🌐 : https://github.com/Potwings

당연하게 여겨지던 것에서 문제를 찾고, 주도적으로 개선합니다.
스팸 메일 차단 솔루션을 5년간 주도적으로 개발하며, 기존 구조를 당연하게 여기지 않고 비효율적인 문제를 찾아 개선해 왔습니다. 모든 사용자 필터를 기동 시점에 일괄 로딩하던 구조에 의문을 제기해 Lazy Loading 방식으로 전환하여 엔진 기동 시간을 1분 40초에서 15초로 단축하고, Heap 메모리 사용량을 20% 절감했습니다. 또한 대량 데이터 삭제 시 발생하던 성능 병목을 임시 조치에 그치지 않고 근본 원인까지 분석해 OFFSET 기반 조회를 커서 방식으로 재설계하여 만료 데이터 삭제 처리 시간을 22시간에서 3분으로 단축했습니다.
시스템뿐만 아니라 비효율적인 업무 프로세스 또한 개선해야 할 문제라 생각했습니다. 동료 엔지니어들의 유지보수 업무를 지원하게 되는 경우가 많아 어떤 작업이 부담을 주는지 잘 알고 있었고, 그 이해를 토대로 개선이 필요한 지점을 먼저 발견해 왔습니다. 매년 고객사에 직접 방문해서 작업해야 했던 라이센스 갱신 프로세스를 자동화하고, 릴리즈 시 수동으로 진행하던 패키지 배포를 Jenkins CI/CD 파이프라인으로 전환하였습니다. 또 채용 시즌마다 개발자가 직접 수행하던 기술 시험 채점을 LLM 기반 시스템으로 자동화하여 동료들의 업무 부담을 덜어줄 수 있었습니다.
이렇게 시스템과 업무 프로세스의 비효율을 찾아 개선하는 작업을 하면서, 저는 제가 만든 변화가 동료들의 업무 경험을 실제로 바꾸는 순간들을 마주했습니다. 재기동 시간이 단축되어 작업 중 서비스 영향에 대한 부담이 줄었다는 이야기, 라이센스 갱신이 자동화되어 매년 반복하던 고객사 방문이 사라졌다는 동료의 말을 들었을 때 저는 큰 보람을 느꼈습니다. 앞으로도 이러한 보람을 원동력 삼아 당연하게 여겨지던 비효율을 찾아 걷어내는 개발자로 일하고 싶습니다.
기술 스택
주력
사용 경험
Java, Spring Boot, Spring, MariaDB
Python, FastAPI, Spring AI, JPA
Jenkins, Docker, Linux, vLLM, Ollama, Microsoft Presidio, Git, SVN
경력
크리니티 / 솔루션팀 (2021.06 ~ )
스팸 메일 차단 솔루션 고도화를 주도하고, 엔지니어들의 유지보수, 프로젝트 수행을 지원해 왔습니다.
스팸 메일 차단 솔루션 관리 (2021.06 ~ )
Spring Web 관리자 페이지, Netty 기반 메일 수/발신 엔진으로 구성된 스팸 메일 차단 솔루션 기능 개발 및 개선
- 사용자 필터 로딩 방식 개선 | 기동 시간 1분 40초 → 15초, Heap 메모리 사용량 20% 절감
- 엔진 기동 시 특정 사용자에게만 적용되는 필터까지 전부 메모리에 적재하는 구조가 비효율적이라 판단. 사용자 증가 시 기동 시간과 메모리 사용량이 불필요하게 늘어날 것을 우려
- 전체 사용자 필터를 기동 시 일괄 로딩하는 것이 아닌 해당 사용자의 메일 검사 시점에 필터를 로딩한 뒤 캐싱하는 Lazy Loading + 캐싱 구조로 선제 전환
- 이후 고객사 운영 환경에서 재기동 시간이 길다는 이슈가 제기되자, 앞서 준비해둔 개선안을 즉시 반영. 기동 시간 15초로 단축, Heap 메모리 사용량 20% 감소
- 만료 데이터 삭제 프로세스 성능 개선 | 처리 시간 22시간 → 3분 (작업 일지: [링크] http://blog.yonggeon.kr/54 )
- 대량 데이터가 누적된 고객사에서 만료 데이터 삭제 시 slow query가 발생, CPU를 장시간 과점유하며 메일 처리 지연 발생
- 쿼리 실행 계획 분석 후 클러스터링 인덱스를 적용, 데이터 저장 기간 축소하는 임시 조치로 운영 이슈 우선 조치
- 임시 조치로 끝내지 않고 원인을 끝까지 추적하여, OFFSET 기반 조회가 근본 원인임을 파악하고 마지막 PK 기준 커서 조회 방식으로 재설계
- 이후 동일 문제가 발생한 다른 고객사에 재설계 방식을 적용, 22시간이었던 처리 시간을 3분으로 단축
- 복합 조건 기반 메일 차단 기능 구현 | 대형 고객사 신규 계약 성사
- Gmail 등 정상 도메인을 통해 DHL을 사칭하는 제목의 피싱 메일이 반복 유입되나, 발신자·제목 단일 조건으로는 정상 메일까지 차단되어 선별 차단이 불가능
- 발신자·제목·본문 등 여러 조건을 조합한 복합 차단 규칙을 적용할 수 있도록 필터링 로직을 재설계, 기존 단일 조건 차단 로직은 회귀 테스트로 정상 동작 보장
- 운영 현장에서 제기된 이슈를 해결하고, 해당 기능을 필수 요건으로 한 정부 부처·대기업 그룹사 신규 계약 성사
- 메일 엔진 설정 동기화 누락 문제 개선 | 반복되던 설정 유실 문의 해소
- 관리자 웹에서 변경한 설정값을 엔진에 반영하는 과정에서, 재시도 없는 단방향 통신 구조로 인해 설정값이 간헐적으로 유실되어 고객사 반복 문의 발생
- 설정값을 DB에 저장하고 엔진이 5초 주기로 조회하는 Polling 방식으로 전환, 일시적인 반영 실패가 발생해도 다음 주기에 자동 반영되는 구조로 변경
- 한 번의 전달 성공에 의존하던 한계가 있던 기존 구조를 개선하여, 전환 이후 설정 유실 재발 없음