
박민영
minyeongpark.pmy@gmail.com
소개
측정과 트레이드오프 분석으로 시스템 문제를 해결하는 백엔드 개발자
스레드풀·커넥션 풀·트랜잭션 경계 등 시스템 레벨 문제를 벤치마크로 검증하며 해결합니다. 모든 기술 선택에 "왜 이 방법인가"를 수치 기반으로 설명하는 것을 중요하게 생각합니다.
Velog Link : Spring은 다중 요청을 어떻게 처리할까?
학력
서울과학기술대학교
컴퓨터공학과
Mar. 2021 - Aug. 2025
삼성 청년 SW · AI 아카데미
서울
Web(Java) 트랙 (1,725 시간)
Dec. 2025 - 현재
Java: Java 객체지향 프로그래밍(상속, 다형성, 인터페이스), 예외 처리, 파일 I/O 학습
알고리즘 및 자료구조: 스택, 큐, 트리, 그래프 등 자료구조 활용 및 완전탐색, DFS/BFS, 그리디, DP 등 알고리즘 학습
웹 프론트엔드: HTML/CSS, JavaScript, AJAX 학습
AI: 생성형 AI 원리 이해 및 프롬프트 엔지니어링 실습
기술
Java & Spring Boot를 활용하여 REST API 설계 및 레이어드 아키텍처 기반 애플리케이션 개발이 가능합니다.
Spring Data JPA를 활용한 엔티티 연관관계 설계 및 트랜잭션 전파 전략 적용이 가능합니다.
ThreadPoolTaskExecutor 기반 비동기 처리 파이프라인 설계와 리소스 및 성능 지표를 고려한 스레드풀 크기 최적화가 가능합니다.
Spring Security를 활용한 JWT 기반 무상태 인증 구현 및 OAuth2 소셜 로그인 연동이 가능합니다.
FFmpeg 및 JavaCV를 활용한 영상 처리 파이프라인 구현이 가능합니다.
SSE(Server-Sent Events)를 활용한 푸시 알림 구현이 가능합니다.
Database as a Queue를 통해 요청 유실을 방지하는 구조 설계가 가능합니다.
GitHub Actions를 활용한 CI/CD 파이프라인 구축 경험이 있습니다.
프로젝트
DIVE (AI 기반 기술면접 연습 웹사이트)
백엔드 개발
Oct. 2024 - 현재
서비스 소개 : 기술 면접을 편리하고 체계적으로 준비할 수 있도록 지원하는 웹사이트입니다. 사용자는 분야별 면접 질문 목록을 생성하고, 녹화한 영상 답변에 대해 Claude AI 모델의 피드백을 받을 수 있습니다.
기술 스택 : Java 17, Spring Boot 3.3, Spring Data JPA, MySQL 8.0, AWS EC2, Github Actions, Swagger
참여 인원 : 프론트엔드 1인, 백엔드 1인
I/O Bound 작업 전용 스레드풀을 도입하여 Tomcat 스레드 고갈 방지
피드백 생성 작업이 영상 업로드 및 AI 분석 작업에 장시간이 소요되는 I/O Bound 작업임을 고려하여, Tomcat 스레드 고갈을 방지하고자 전용 ThreadPoolTaskExecutor 도입
1GB RAM 환경에서 작업 당 약 150MB의 메모리를 점유하는 것을 고려하여, 이론적 병렬 처리 한계(약 7개) 전후의 성능 변화를 분석하고자 스레드풀 크기를 4, 5, 10, 20, 30개로 변경하며 20건의 동시 요청 테스트 수행
트레이드 오프 :
Size 4 : 초기 응답시간은 빠르나(40초), 후순위 요청의 응답시간이 길어져 평균 응답 시간이 107초로 지연됨
Size 10 : 초기 응답시간은 다소 늘어났으나(52초), 대기열을 빠르게 해소하여 평균 응답 시간을 89.5초로 단축 (Size 4 대비 약 17초 개선)
결과 : Tomcat 스레드풀만 사용했을 경우 대비 평균 응답시간(+8s) 지연을 감수하고, Tomcat 스레드 고갈을 예방하여 피드백 요청의 초기 응답시간 18초 단축 및 기타 요청의 응답 지연 방지
피드백 생성 작업을 비동기 처리하고 작업 완료 시 알림 제공
영상 업로드 및 AI 분석 작업을 비동기 처리하여 사용자의 불필요한 대기 시간을 제거하고, 작업 완료 시 즉시 알림을 제공하여 흐름이 끊기지 않는 학습을 지원
클라이언트의 주기적인 Polling으로 발생하는 불필요한 HTTP 트래픽 및 서버 부하를 예방하고자 Server-Sent-Events로 구현
spring.jpa.open-in-view=false 설정하여 트랜잭션 종료 시 즉시 커넥션 반환하여 커넥션 풀 고갈 방지
Fetch Join 쿼리를 통한 지연 로딩 예외 및 N+1 문제 해결
OSIV 비활성화로 인해 영속성 컨텍스트 밖에서 QuestionSet의 Question 컬렉션 필드를 지연 로딩할 때 LazyInitializationException이 발생
QuestionSetRepository 클래스에 JPQL을 활용하여 JOIN FETCH 쿼리를 적용하여, QuestionSet을 조회하는 시점에 questions를 한 번의 쿼리로 미리 함께 조회하도록 함
결과 : 지연 로딩 예외를 해결하고 데이터 조회 시 발생할 수 있는 N+1 문제를 예방함
Database as Queue를 통해 영상 작업 요청의 유실을 방지
스레드풀 포화 시 요청이 유실되는 문제를 해결하기 위해 요청 정보를 DB에 PENDING 상태로 저장하는 Database as a Queue 도입
스케줄러가 1초마다 스레드풀 여유 용량만큼만 작업을 조회하여 처리하고, 완료 시 삭제·실패 시 FAILED 상태로 이력 보존
결과 : 스레드풀 포화 상태에서도 요청 유실 없이 순차 처리
GitHub Actions 활용한 배포 자동화 : 수동 배포로 인한 휴먼 에러를 방지하고 배포 시간을 단축하기 위해 GitHub Actions CI/CD 파이프라인을 구축하여 배포 프로세스를 자동화
TraBlog
백엔드 개발
Aug. 2023 - Dec. 2023
기술 스택 : Java 11, Spring Boot 2.7, Spring Data JPA, MariaDB, AWS EC2, Swagger
참여 인원 : 프론트엔드 1인, 백엔드 1인, 디자이너 1인
서비스 : MZ세대를 위한 여행 기록 및 방문 여행지 스탬프 모으기 크로스 플랫폼 앱입니다. 사용자는 사진과 함께 여행 기록 포스트를 업로드 할 수 있고, 지도 상의 방문 여행지에 스탬프를 남길 수 있습니다.
Nginx 리버스 프록시 및 정적 파일 서빙
Nginx를 통해 클라이언트 요청을 Spring Boot 서버로 라우팅
정적 이미지 파일은 Spring Boot를 거치지 않고 Nginx가 직접 제공하도록 구성
JWT 토큰 기반 인증 구현
JWT 방식을 사용하여 무상태 인증 구현
Access Token과 Refresh Token으로 보안성과 사용자 편의성 확보
Swagger API 문서 자동화
Swagger를 통해 RESTful API 명세 자동 생성 및 테스트 환경 제공
GitHub Projects의 칸반 보드를 활용한 팀 진행 상황 공유 및 일정 관리
자격증
정보처리기사
한국산업인력공단
Aug. 2025
TOEIC Speaking Advanced Low
ETS
Jan. 2026