이규원
백엔드 개발자 | Java · Kotlin · Spring Boot · Python · Django
Seoul, South Korea · kyuwoon369@gmail.com · linkedin.com/in/eekyuwon · github.com/kyuwon53
사용자 중심 비즈니스 도메인에 빠르게 적응하고 구조적 임팩트를 만들어내는 백엔드 엔지니어입니다. 커머스에서는 30만+ 회원의 30년 레거시 회원·주문/결제 시스템을 무중단으로 신규 전환하고 이벤트·권한 등 공통 기능을 구축했고, 제조 산업 AI에서는 대용량 센서 데이터 파이프라인을 재설계해 대시보드 조회를 5초 이상에서 1초 미만으로 개선했으며, 세무에서는 전국민이 사용하는 홈택스에서 트래픽이 가장 많은 종합소득세 일반신고서(5월 신고 1,000만 건 규모) 개발을 담당했습니다. 새로운 요구사항을 빠르게 이해하고 문제의 본질을 파악하여, 안정성과 확장성 중심의 백엔드 시스템을 구축하는 데 강점을 가지고 있습니다.
경력
한빛앤 · 공통 서비스 개발팀 팀장 / 백엔드 개발 | 2024.09 ~ 재직 중
개발자 대상 온라인 학습/콘텐츠 커머스 플랫폼. 주문/결제·회원·상품·콘텐츠 도메인의 신규 시스템 전환과 구조 개선을 주도.
주요 담당 영역
- 주문/결제·쿠폰·적립금 신규 시스템 전환, 결제사(PG) 전환 및 본인인증(포트원/서버투서버) 이관
- 회원 시스템 신규 전환과 어노테이션 기반 권한(RBAC) 체계 구축
- 이벤트 기반 보상 시스템, 신고하기 등 공통 기능 설계·구축
- 코호트·국비지원(KDC) 수강신청/입과, 세미나, 버디 등 신규 서비스 도메인 구축
- 상품·카테고리·리뷰, 마이콘텐츠, 오탈자 이관, 책 상세 개편 등 커머스·콘텐츠 도메인 개선
- 배치·데이터 마이그레이션(MySQL↔PostgreSQL), Flyway·헬스체크·모니터링 등 운영 기반 정비
결제완료 API가 정상 처리에도 401을 반환하던 문제 근본 원인 규명
- 결제 완료 처리 요청에서 결제 동기화·주문 완료·트랜잭션 커밋·응답 생성까지 내부 로직은 모두 정상인데도 클라이언트에는 401이 반환되고, 인증이 필요 없는 엔드포인트로 바꾸면 재현되지 않는 크리티컬한 문제를 담당.
- 로그를 심어 최종 응답 직전
dispatcherType=ASYNC, auth=false를 포착하고, Kotlin 코루틴 suspend 컨트롤러가 서블릿 ASYNC 디스패치로 재진입하면서 OncePerRequestFilter 기본 정책상 JWT 필터가 건너뛰어져 SecurityContext가 비워지는 것이 원인임을 규명.
- 인증 필터가 재디스패치에서도 실행되도록
shouldNotFilterAsyncDispatch()·shouldNotFilterErrorDispatch()를 재정의해 결제 완료 응답을 안정화하고, 원인과 재발 방지 포인트를 팀에 공유.
주문/결제 신규 시스템 전환 — 패키지 상품·PG 전환·정산 리스크 해결 (PO 역할 병행)
- 주문·장바구니·결제·상품·공제 정책이 강하게 결합되고 결제 중복·운영 지표 부재로 리스크가 누적된 레거시를, 패키지 상품 출시와 결제사(PG) 계약 변경이 겹친 상황에서 신규 시스템으로 전환.
- 문화비소득공제 대상/비대상이 섞인 패키지 상품의 금액 분리와 결제·정산 기준을 정의하고, 고객이 주문을 나눠 결제하지 않도록 장바구니→주문→결제 한 흐름 안에서 해결.
- 도메인 결합을 해소하도록 재설계하고 유니크 제약·행 잠금 기반 멱등성·중복 구매 방지, 결제·웹훅 처리 분리, 실패 주문 보정 스케줄러, 쿠폰·적립금 전환을 함께 진행.
- 정산 오류 리스크를 줄이고 데이터 기반 운영 가시성을 확보했으며, 범위 정의·우선순위·커뮤니케이션까지 PO 역할을 병행한 성과로 전사 우수사원 포상·팀장 승진으로 이어짐.
30년 레거시 회원 시스템 무중단 전환 (30만+ 레코드)
- 30년 레거시 플랫폼의 회원(30만+ 레코드)을, 신규 가입/로그인 시에도 레거시 서비스 이용에 차질이 없도록 무중단으로 이관.
userId→memberId 전환을 컬럼 추가 → 데이터 싱크 → 이중 기록 → 인증 정리 후 제거의 단계로 호환성을 유지하며 진행하고, 공용 회원 인증 API로 레거시와 신규 시스템이 공존하도록 설계.
- 서비스 중단 없이 신규 스택으로 전환하고, 이후 다른 서비스도 점진적으로 이관할 수 있는 기반을 마련.
이벤트 기반 보상 시스템 구축
- 조건 달성 시 보상을 지급하는 이벤트가 늘어날 때마다 개별 로직을 삽입해야 하고, 중복 지급 방지와 신규·레거시 DB 동시 정합이 필요했던 구조를 개선.
- 개별 삽입·중간 레이어·큐 기반 비동기 3안을 비교해 현 인프라·일정에 맞는 @EventListener 기반 중간 레이어(수신·분기 → 라우팅 파사드 → 전략 핸들러)를 도입하고 미지원 트리거 방어용 기본 핸들러를 둠, 이후 큐 기반으로 확장 가능하게 설계.
- 중복 참여 검증과 신·구 DB 동시 지급 정합으로 지급 신뢰성을 확보하고, 이벤트가 추가돼도 핸들러만 확장하면 되도록 개발 비용을 절감.
그 외 구조 개선 · 성능 · 자동화
- 권한 체계(RBAC) 전환: URL 경로 기반 암묵적 권한을
@PreAuthorize 기반 API 단위 명시적 권한 체계로 재설계, 일반 사용자·운영자·역할별 관리자를 하나의 권한 모델로 통합.
- 활성 트랜잭션 고갈 해소: 트래픽 많은 단순 조회 API가 매 요청마다 JTA(Atomikos) 트랜잭션을 열어 상한 초과가 발생 → 조회를
readOnly/트랜잭션 밖으로 전환하고 보유 시간을 줄여 인프라 증설 없이 안정화.
- PostgreSQL 성능 개선: 실행계획 분석으로 비효율 조건·서브쿼리를 인덱스 활용 조인으로 재작성하고 N+1 제거 → 1초 이상 걸리던 고트래픽 조회를 수 ms 수준으로 단축.
- DB 형상관리 Flyway 도입: 수기 SQL로 인한 환경 불일치·배포 실패를 제거(Flyway·Liquibase PoC 비교 후 채택), 팀 표준으로 정착.
- 운영 가시성: 배치 실패 시 종료코드로 Jenkins 실패 알람을 받도록 연동하고 로그를 보강해 실패 지점을 빠르게 추적, Spring Boot Actuator 기반 헬스체크로 DB·디스크 등 의존성 상태를 노출.
MakinaRocks · Backend Engineer | 2022.10 ~ 2024.08
제조 설비 이상탐지 모니터링 솔루션(MRXray). 모터 센서의 대량 데이터를 연산·시각화하고, 이상탐지 모델 기반으로 얼럿·모니터링을 제공.
MRXray 고도화
- 이상탐지 모니터링 솔루션의 백엔드 설계·구현 및 DB 설계를 담당. 센서의 대량 데이터를 의미 있는 값으로 연산·시각화하고, 이상 값·표준 이상치를 기반으로 센서 이상 정도를 계산해 모니터링을 제공.
- 표준 룰과 사용자 지정 룰로 얼럿을 발생시키고, 고장이 탐지된 장비의 위치·데이터·점검 이력을 모니터링하도록 구현. 고객 요구사항을 솔루션에 범용 적용 가능하도록 기획·설계·구현하고 프론트 엔지니어와 UX/UI를 협의.
- 현재 구조 변경 최소화와 API 호출 감소를 고려해 설계하고, 솔루션·병행 프로젝트를 함께 고려해 주요 도메인·공통 로직을 코어 모듈로 분리해 재사용성을 높임.
MRXray 자바 마이그레이션
- 안정성·확장성·구인 등의 이유로 결정된 Python/Django → Java/Spring Boot 전환에서 기본 구조·스켈레톤 구현과 API 개발(약 80%)로 마이그레이션을 주도.
- UX 관점에서 사용자가 필요한 데이터를 재정의해 평면적으로 170개였던 API를 약 80개로 축소(한 페이지 조회에 20여 개씩 나가던 호출을 1개로), 트랜잭션 관리·미사용 API를 정리.
- 요구사항 변화에 맞춰 DB 스키마를 리팩토링(불필요 컬럼·무분별한 인덱스/대체키 제거). 매주 금요일을 리팩토링·학습 적용일로 운영하고, 결정 맥락을 이슈·PR·노션에 기록해 동료가 언제든 파악할 수 있게 함.
모델링용 원천 데이터 적재 파이프라인·DB 설계
- 모델링 팀이 사용할 원천 데이터 DB를 구축. MDF 특수 파일 포맷을 분석하고 ML 엔지니어와 협의해, 수집 시각이 다른 데이터의 시간 정합을 맞춰 원본을 최대한 보존하며 적재.
- 설정 경로를 감시하다 MDF 파일이 들어오면 필요한 데이터를 추출·적재하는 프로세스를 개발하고, 사내 Kubernetes에 DB와 파싱 프로세스를 배포해 모델링 팀이 사용하도록 함.
데이터 이상 모니터링·알림 개발
- 데이터가 수집되지 않을 때 센서 DB·추론 파이프라인 등 어느 지점이 문제인지 담당자별로 일일이 확인해야 해 대응이 지연되던 문제를 개선.
- 실제 DB의 마지막 데이터를 기준으로 일정 시간 이상 데이터가 들어오지 않으면 담당자에게 Slack 알림을 보내는 스크립트를 스케줄러에 등록 → 수집 이슈 발생 시 문제 지점을 빠르게 파악·대응하도록 함.
분류 모델 성과 지표 기능 개발·개선
- 이상 값을 기준에 따라 계산해 분류 모델 성과 지표를 보여주는 기능을 조회 시점마다 쿼리로 계산하도록 1차 개발했으나 DB 부하·성능 이슈가 발생.
- 임계값을 기준값으로 규약하고 조회 시 계산 대신 이상 값 적재 시점에 애플리케이션에서 계산해 통계 테이블에 저장하도록 개선 → 한 달 치 조회 기준 5초 → 1초 미만으로 단축.
데이터 아카이빙 · 배포 자동화 · 장애 대응
- 수집 원천 데이터를 Parquet로 압축·보관하는 아카이빙 파이프라인을 구축해 DB 저장 비용을 절감하고 히스토리 데이터를 백업·추론용으로 보존.
- GitHub Actions·Docker·EC2 기반 블루-그린 배포로 빌드·테스트·이미지 배포·배포를 단일 CI/CD 파이프라인으로 통합·자동화.
- 운영 장애 시 AWS EC2에서 PostgreSQL 수동 페일오버(스탠바이 승격)로 가용성을 복구.
유플러스아이티(Uplus IT) · Software Engineer | 2021.09 ~ 2022.10
전국민이 사용하는 국세청 홈택스·손택스 세금 신고 서비스. 개발자 100명 이상 규모의 조직.
홈택스·손택스 종합소득세 일반신고서 (21귀속) 오픈 개발
- 종합소득세 신고는 홈택스에서 트래픽·사용자 수가 가장 많은 프로그램으로, 신입으로 합류했지만 이 핵심 신고서의 오픈 개발에 참여.
- 신고 시즌에는 손택스(모바일) 월간 사용자가 전월 대비 약 372만 명(90~129%) 급증해 해당 월 국내 전체 모바일 앱 중 사용자 급상승 1위를 기록할 만큼 트래픽이 폭증하는 서비스.
- 매년 오픈 때 데이터 이슈·에러로 긴장이 큰 프로그램이라, 전년 대비 변경점을 미리 점검·공유해 불필요한 작업을 줄이고 테스트·검증 시간을 확보. 본인 업무를 기간보다 일찍 마친 뒤 메인 서비스 담당 동료의 버그를 함께 분석해 원인을 빠르게 규명.
- 5월 신고 1,000만 건이 처리되는 동안 이례적으로 안정적인 오픈이라는 평가를 받음.
홈택스·손택스 근로소득자 경정청구 (21귀속) 오픈 개발
- 21귀속 세법 개정에 맞춰 근로소득자 경정청구 신고서의 계산기 팝업과 계산 알고리즘을 개발.
- 정리되지 않아 재사용·변경이 어렵던 7,000줄이 넘는 계산 알고리즘을 리팩토링해 약 2,000줄로 정리 → 이후 코드 분석·변경 시간을 단축.
- 타 팀의 데이터·서비스에 의존해 원천 데이터 파악이 어려웠으나 먼저 적극적으로 소통해 데이터 흐름을 파악, 이전 귀속보다 2주 빨리 구현을 완료.
세금계산서 대량 배치 처리 최적화
- 70만 건 이상의 세금계산서 배치를 작은 실행 단위로 분할 처리해 처리량을 높이고 DB 부하를 줄임.
기술 스택
- 언어/프레임워크: Kotlin, Java, Python, Spring Boot, Spring Batch, Django
- 데이터베이스/메시징: PostgreSQL, MySQL, RabbitMQ, Kafka
- 인프라/DevOps: AWS, Docker, Kubernetes, GitHub Actions, Jenkins, Flyway, Grafana, Sentry
자격증 / 수상
- SQLD (SQL 개발자)
- 전사 우수사원 포상 (한빛앤) · 2026년 조직 개편에서 공통 서비스 개발팀 팀장 승진
학력
충남대학교 · 수학 학사