
미리보기
- 직업
- 꿈에서도 개발하는 백엔드 개발자
- 이름
- 정정일
- 간단소개
- 잠들기 전에도 개선점을 생각하는 2년차 백엔드 개발자 정정일입니다. 현재는 누적대출액 2조 5,137억원의 온라인투자연계금융업 플랫폼 백엔드 개발 및 운영을 담당하며 다음과 같은 일들을 주로 하며 경험했습니다. - Java, Spring Boot, Spring Batch 기반의 엔터프라이즈 애플리케이션 개발 - 쿼리 튜닝, 비동기 처리, 병렬 처리를 통한 API 성능 최적화 - 레거시 시스템 분석 및 개선, 비지니스 로직 도메인별 통합 - 분산 서버 환경에서 발생하는 동시성 이슈 해결 및 성능 최적화 - 클라우드 환경에서 Kubernetes 기반 인프라 운영 및 유지보수 또한, 영업직에서 3년간 근무한 경험을 바탕으로 사람들과 소통하는 것을 즐기며, 팀과의 원활한 협업을 위해 기여하고 있습니다. 어제보다 오늘, 오늘보다 내일 더 성장하기 위해 노력하며 효율적인 문제 해결을 위해 고민합니다.

기술 스택
- 기술 스택
- Java
- Spring
- Spring Cloud
- Spring Security
- JPA
- Kotlin
- Git
- MySQL
- Redis
- mybatis
- Kubernetes
- Kafka
경력
- 회사명
- (주)헬로핀테크
- 직책 • 부서
- 사원 • 개발팀
- 근무 기간 (근무 형태)
- 2023.03. - 재직 중
- (2년 | 정규직)
- 담당 업무
Java, Spring Boot, Spring Batch를 활용한 엔터프라이즈 애플리케이션 구현
57,000명의 투자자와 2,000명의 대출자 연계 플랫폼 백엔드 구축 및 운영
전체적인 API 개발 및 유지보수 ( 투자, 입출금, 대출 상품 관리, 정산 등 )
6개의 WAS, 1개의 Web Server, 1개의 Batch Server 개발 및 운영
PHP 기반의 레거시 서버 Java, Spring Boot 기반으로 리뉴얼
정산 시스템 고도화
3개의 서버, 13개의 DB Procedure, 11개의 DB Function으로 분산된 정산 로직 분석
1개의 API 서버로 통합
시스템 복잡도 감소로 요구사항 반영 속도 평균 46.31% 향상 ( 평균 4.06주 → 2.18주 )
점진적 전환을 통해 시스템 안정성 확보
성능 개선
Redis 기반 캐시 전략 설계, API 응답 속도 74.69% 개선 ( ART : 5.132초→ 1.299초 )
이벤트 기반 비동기 처리 도입을 통해 관심사를 분리하고 API 성능을 최적화
쿼리 튜닝을 통해 주요 API 응답 속도 87.66%개선 ( ART : 10.295초 → 1.27초 )
Spring Batch Tasklet 기반 투자자 예치금 정합성 체크 배치 Chunk, Partitioning 방식으로 리펙토링, 정합성 문제 발생확률 99.9% 감소 및 배치 성능 64% 개선
k8s ingress - Sticky Session으로 어플리케이션 재기동 시 Session이 유실되는 문제 존재 Redis Session Clustering방식으로 전환하여 해결
신규 도입
PR 단위 코드리뷰, Pn룰 제안 및 도입
Spring Rest docs, Asciidoc을 이용한 API 명세서 자동화
신규 개발
비대면 주택담보대출 신청 및 승인 시스템 DB 설계 및 주요 기능 개발
은행 등 외부 시스템 연동 통합용 API 서버 개발
OPENAPI 투자 기능 개발 참여
대출 상환 일정 시뮬레이션 기능 구현, 사용자 친화적 대출 관리 환경 제공
투자자 지급 이자와 대출자 수취 이자를 분리 낙전 수입 추가 실현
JPA, Mybatis를 동시 사용으로 인한 HikariCP Dead lock 트러블 슈팅 및 해결
DB 복제 지연 문제 해결 시스템 데이터 일관성 보장
Spring Batch job 동시 등록 Metadata tables Deadlock 문제 해결로 안정적인 Batch 환경 구축
분산 락을 통해 분산 서버 환경에서의 투자, 입출금 동시성 이슈를 해결
Back-end : Java, Spring Boot, Spring Batch, Spring Security, JPA, Mybatis, MySQL, Redis, Redisson, Spring Rest docs, DB Procedure, DB Function
Front-end : Javascript, Thymeleaf, CSS, HTML, jQuery
Infra : Git, Kubernetes, Docker, Jenkins, ArgoCD, ELK, Prometheus
헬로펀딩 서비스 개발
레거시 개선
신규 개발 및 도입
트러블 슈팅 및 해결
주요 사용 기술
프로젝트
- 프로젝트명
- 정산 리뉴얼 프로젝트
- 소속/기관명
- 헬로핀테크
- 프로젝트 기간
- 2024.06. - 진행 중
- (9개월)
- 프로젝트 설명
정산 로직이 3개의 서버, 13개의 DB Procedure, 11개의 DB Function으로 분산되어 복잡도가 높아 유지보수와 개발 비용이 과도하게 발생
분산환경에서의 Race Condition 발생
정산 비즈니스 로직 통합 프로젝트를 제안하고 API 설계 및 구현을 주도
기존 아키텍처와 의존성을 분석하고 점진적 전환 전략을 설계해 서비스 안정성을 확보
Redisson 기반 분산 락을 통해 Race Condition 문제 해결
통합 이후 테스트와 최적화를 통해 안정적인 운영 환경을 구축
시스템 복잡도 감소로 요구사항 반영 속도 평균 46.31% 향상. ( 4.06주 → 2.18주 )
동시성 문제 해결로 정산 프로세스의 신뢰성 및 안정성 향상
점진적 전환 방식을 통해 서비스 운영 안정성을 유지하며 통합 성공
여러 도메인으로 분리돼 있던 정산 비지니스 로직 통합 프로젝트 제안 및 채택
프로젝트 인원 : 4명
[문제]
[해결 및 역할]
[성과]
[주요 기술] Spring Boot 2.7.3, Java 11, JPA, Redission, Rest API
- 프로젝트명
- 백오피스 웹서버 개발, 운영 및 개선
- 소속/기관명
- 헬로핀테크
- 프로젝트 기간
- 2023.04. - 진행 중
- (1년 11개월)
- 프로젝트 설명
한 Task 내에 JPA와 MyBatis 혼재로 인해 HikariCP Dead Lock 발생
DB Replication 복제지연 문제로 일관성 이슈 발생
비효율적인 서브쿼리와 인덱스 미활용으로 서버 부하 증가
한 로직에서 여러 도메인 로직 혼재로 인한 성능저하 (예: 대출 승인 시 심사결과 저장, 문자 발송, 관리자 알림)
HikariCP Dead Lock 트러블 슈팅 및 원인 파악, JPA로의 일원화를 통해 해결
Connection pool 분리, 영속성 컨텍스트 Connection 반환 시점 변경을 고려하였으나 Mybatis 코드를 JPA로 변경하고 있던 상태였기에 JPA로의 일원화를 통해 해결.
문제가 발생한 로직을 우선적으로 수정, 변경 중에는 Pod 수를 늘려 부하 분산을 통해 DBCP의 Connection 갯수가 모두 점유되지 않도록 조치.
DB Replication 복제지연 문제 해결
@Transactional
의readOnly
여부로 구분하여 Proxy, Master를 구분하는 방식과 AbstractRoutingDataSource와 AOP를 통한 DataSource 분리를 고려readOnly
여부로 구분하는 경우 복제지연 문제가 발생하지 않는 트랜잭션도 Proxy를 보지 않게되어 부하 분산 효과가 줄어들 수 있다 생각해 AbstractRoutingDataSource와 AOP로 DataSource를 분리하여 복제 지연 문제를 해결
쿼리 최적화를 통한 API 성능 개선
불필요한 서브쿼리 제거 및 Join 사용
인덱스 활용 및 멀티컬럼 인덱스 최적화
해당 API 뿐 아니라 자주 사용하는 컬럼 Indexing 필요여부 의논 및 도입 결정
이벤트 기반 비동기 처리 제안 및 도입으로 성능 최적화 및 관심사 분리
복제 지연 해결을 통한 사용자 신뢰도 향상
HikariCP Dead Lock 문제 해결을 통한 서버 안정성 향상
SQL 튜닝을 통해 주요 API 성능 87.66% 개선 ( ART : 10.295초 → 1.27초 )
시스템의 유지보수성 및 성능 향상
PHP 레거시 백오피스 서버 Java, Spring으로 리뉴얼 하며 기존 기능 개발 및 추가 개발 진행
개발, 운영 인원 : 2~6명
[문제]
[해결 및 역할]
[성과]
[주요 기술] Spring Boot 2.6.7, Spring Security, Java 11, JPA, Mybatis, Thymeleaf
- 프로젝트명
- 서비스 인프라 운영 및 유지보수
- 소속/기관명
- 헬로핀테크
- 프로젝트 기간
- 2023.12. - 2024.09.
- (10개월)
- 프로젝트 설명
기존 인프라를 담당하던 DevOps 퇴사로 인해 인프라 운영 공백 발생
K8s Ingress - Sticky Session 설정으로 인해 어플리케이션 재기동 시 Session 유실 및 사용자 재로그인 필요
새로운 DevOps 입사 전까지 클라우드 기반 서버 인프라 운영 및 유지보수 담당
19개 인스턴스, 10개 노드, 3개 웹 서버, 9개 WAS, 2개 DB 운영 및 유지보수
Sticky Session 문제를 해결하기 위해 Redis Session Clustering 방식으로 전환, Session 유실 문제 해결
운영 공백 기간 동안 안정적으로 인프라 유지보수 수행
Session 유실 문제 해결로 사용자 경험 개선 및 서비스 신뢰도 향상
클라우드 기반 서버 인프라 운영 및 유지보수
운영 인원 : 1명
[문제]
[해결 및 역할]
[성과]
[주요 기술] Kubernetes, Jenkins, ArgoCD, ELK, Prometheus, Redis, MySQL
- 프로젝트명
- Batch 서버 개발, 운영 및 개선
- 소속/기관명
- 헬로핀테크
- 프로젝트 기간
- 2023.05. - 진행 중
- (1년 10개월)
- 프로젝트 설명
기존 서버는 PHP와 Crontab 기반으로 구축돼 관리가 어려웠으며, Spring Batch로 이전하는 과정에서 Job 동시 실행 시 Deadlock 문제가 발생
Tasklet 방식으로 대량 데이터 처리 시 성능 저하 및 데이터 정합성 문제 발생
Spring Batch Metadata Table Deadlock 원인 파악 및 문제 해결
여러 Job 동시 실행 금지, Spring Batch 버전 업 (Java, Spring Boot, Spring Batch 전체 버전업 필요로 배제), Metadata Table 관련 Isolation Level 변경 방법등을 고려
Job 동시 실행 금지는 비현실적이라 배제, Spring Batch 버전 업의 경우 서버 버전상 Java, Spring Boot, Spring Batch 전체 버전업 필요로 배제하여 Metadata Table 관련 Isolation Level 변경하여 해결
대량 데이터 처리 성능을 개선하기 위해 Chunk 기반 처리 및 Partitioning 방식 도입
Tasklet 방식의 단점을 보완해 대량 데이터 처리 성능 최적화
배치 성능을 기존 13분에서 5분으로 대폭 개선
Deadlock 문제 해결로 안정적인 Batch 환경 구축
데이터 정합성 문제 해결로 정합성 문제 발생확률 99.9% 감소 ( 최대 트랜잭션 처리 시간 22분 → 0.01초 )
성능 최적화를 통해 데이터 처리 시간을 64% 단축 ( 13.27분 → 4.77분 )
해결 사례를 사내에 공유, 다른 팀에서도 활용 가능하도록 문서화
PHP, Crontab 레거시 Batch서버를 Spring Batch로 리뉴얼 하며 추가 기능 개발 및 운영
개발, 운영 인원 : 4~6명
[문제]
[해결 및 역할]
[성과]
[주요 기술] Spring Boot 2.7.3, Spring Batch, Java 11, JPA, MyBatis
- 프로젝트명
- 은행 및 외부 시스템 연동 통합용 API서버 개발, 운영
- 소속/기관명
- 헬로핀테크
- 프로젝트 기간
- 2023.08. - 진행 중
- (1년 7개월)
- 프로젝트 설명
외부 시스템 연동 코드가 여러 어플리케이션 서버에 중복되어 유지보수 어려움 발생
API 명세서 부재로 비효율적 소통
Git branch 전략 미비로 형상 관리 문제 발생
일부 외부 API(예: 주택 시세 조회)에서 응답 시간 지연
외부 연동을 추상화한 통합 API 서버를 구축하여 중복 코드를 제거하고 유지보수성 개선
Spring Rest Docs와 Asciidoc을 활용하여 API 명세서 자동화
Git flow 전략을 제안 및 도입하여 형상 관리 체계화
Redis 기반 캐싱을 설계하고 구현하여 API 응답 속도 개선
외부 시스템 연동 관리 효율성 및 유지보수성 향상
협업 생산성 증가 및 형상 관리 안정화
API 응답 속도 74.69% 개선 ( ART : 5.132초 → 1.299초 )
내부 어플리케이션들을 위한 은행 등 외부 시스템 연동 통합용 API 서버 개발 및 운영
개발, 운영 인원 : 4명
[문제]
[해결 및 역할]
[성과]
[주요 기술] Spring Boot 2.7.3, Java 11, JPA, Rest API, Spring Rest docs
포트폴리오
교육
- 소속/기관
- 플레이데이터 (encore)
- 종류 | 전공명/전공계열
- 사설 교육 | 빅데이터 기반지능형 SW 및 MLOps 개발자 양성 과정
- 재학 기간 (재학 상태)
- 2022.07. - 2022.12. (졸업)
- 소속/기관
- 호치민시한국국제학교
- 종류 | 전공명/전공계열
- 고등학교 | 문과
- 재학 기간 (재학 상태)
- 2014.03. - 2017.02. (졸업)
대외활동
- 활동명
- 백엔드 기술 아티클 스터디
- 소속/기관
- 기타
- 활동 연도
- 2024
- 활동 상세 설명
2023.08~진행중 / 주 2~3회
백엔드 기술과 관련된 글을 읽고 서로의 의견을 나누며 토론하는 스터디입니다. 인원은 6명으로 주 2~3회 1시간 가량 진행했으며 2023년 8월부터 매주 진행중입니다.
매주 읽고싶은 주제와 관련된 글을 선정하여 각자 의견, 경험, 이견등을 나누며 기술에 대한 이해도를 높이고 다른 사람들의 의견을 접하여 시야를 넓게하는 효과가 컸습니다.
가장 기억에 남은 아티클로는 "소프트웨어 엔지니어가 알아야 할 로그에 대한 모든 것" 이라는 Medium 게재된 글로 Apache Kafka를 개발한 Jay Kreps이 작성한 글을 번역, 해석한 글이였습니다. Kafka를 개발하게 된 이유와 철학을 로그라는 하나의 주제에서 출발하여 점진적으로 설명됐기에 Log와 Kafka대한 이해도를 크게 높일 수 있었습니다. 게재된 글을 읽고 이해한 것을 바탕으로 경험으로서 습득하기 위해 MSA 기반 사이드 프로젝트에 Event streaming을 위해 적용해보는 과정 또한 가졌습니다.
Link : https://www.notion.so/minnim1010/6af63324e8614108bf32b0c2f5a1c87c
- 활동명
- 비전공자를 위한 백엔드 과외
- 소속/기관
- 크몽
- 활동 연도
- 2024
- 활동 상세 설명
2024.08~진행중 / 평점 5점
초심자를 대상으로 백엔드 과외를 진행하며, 기본 개념부터 실무에서 활용되는 기술까지 쉽게 이해하실 수 있도록 노력했습니다. 이 과정에서 기술의 핵심을 다시 정리하고, 학습자 입장에서 설명하는 방법을 고민하면서 제 자신도 기술에 대한 이해도를 더욱 깊게 다질 수 있었습니다.
또한 이를 통해 기술적인 부분의 커뮤니케이션 능력이 상승할 수 있었습니다.
이러한 노력들로 감사하게도 평균 5점 만점으로 높은 리뷰 점수를 가질 수 있었습니다.
Link : https://kmong.com/gig/598770
자격증
- 자격증명
- 리눅스마스터
- 점수/급 | 발급 기관
- 2급 | 한국정보통신진흥협회
- 취득월
- 2024.10
- 자격증명
- AWS CCP
- 점수/급 | 발급 기관
- Certified Cloud Practitioner | AWS
- 취득월
- 2024.08
- 자격증명
- SQL
- 점수/급 | 발급 기관
- Developer | 한국데이터산업진흥원
- 취득월
- 2022.12