DEVELOPER · 박준유

“쟤한테 가봐!”의 “쟤”가
되고 싶은 개발자
박준유입니다!

팀에서 문제가 생겼을 때,
믿고 찾아갈 수 있는 개발자가 되고 싶은 박준유입니다.

GitHub
BACKEND · DATA · AIFORM FOLLOWS LOGIC
LANGUAGES
Java · TypeScript · Python
FRAMEWORKS
Spring Boot · FastAPI · React
DATABASES
MySQL · PostgreSQL · Redis
TOOLS & INFRA
Git · Docker · Linux (Ubuntu)

EDUCATION & ACHIEVEMENTS

Background

학력·교육, 동아리 활동, 병역, 수상 및 자격 취득 기록

2017 — 2026

학력·교육과 함께 쌓아온 기록

  • 학력·교육
  • 군복무
  • 동아리
  • 수상
  • 자격·어학

연결선은 기록 시점 · 막대와 아이콘에 마우스를 올리거나 선택해 상세 확인

학력·교육

2026.01.18 —

삼성청년 SW·AI 아카데미 (SSAFY)

Web Java 전공반 · 1학기 교육 이수

삼성 SW 역량테스트 B형(Professional) 취득 · 2026.03.28

Java 기반 풀스택 웹 개발과 AI 활용 교육. 자료구조·알고리즘, 객체지향 프로그래밍, Spring Boot·MyBatis REST API, Vue.js, SQL·데이터베이스 모델링 학습

생성형 AI·프롬프트 엔지니어링, AI 코딩 도구, LangChain·AI Agent·MCP 기반 서비스 개발 학습

2020.03.02
— 2026.02.23

충북대학교 · 소프트웨어 전공

졸업 · 전체 학점 4.1 / 4.5 · 전공 학점 4.12 / 4.5 · 총 140학점 이수

2017.03.02
— 2020.01.31

남대전고등학교

인문 계열 · 졸업

동아리 활동

2023
— 2026.02.23

충북대학교 학술동아리 CUVIC

2023년부터 대학 졸업까지 활동

2024년 회장 역임

AI·비정형 데이터 처리 및 C/C++, Python, Java 등 다양한 언어의 개발 경험 공유

기술 세미나·스터디·행사 기획·주최 및 동아리 운영. 부원 간 지식 공유와 협업 장려

졸업생·재학생 간 교류와 친목 활동을 통한 부원들의 학과 적응 및 진로 탐색 지원

2024 충북대학교 소프트웨어학부 최우수 학술동아리 선정

수상

2026.06.26

SSAFY 성적 우수상

삼성전자 주식회사

Web Java 전공반 1학기 CS·Java·Web/Framework·AI·DB 이론 및 실습 과정 우수 성적 이수

2025.11.13

소프트웨어학부 캡스톤 디자인 우수상

충북대학교

“멀티모달 기반 졸음 탐지 시스템: 학습 능률 향상 지원 솔루션”으로 수상. Galaxy Watch 7의 HRV와 웹캠 안면 랜드마크를 결합한 AI 모델 구축

자격·어학

정보처리기사

한국산업인력공단 · 2025.12.24

SQLD

한국데이터산업진흥원 · 2026.06.19

삼성 SW 역량테스트 B형

삼성전자 · 2026.03.28

Professional

OPIc · 영어

ACTFL · 2026.02.21

Intermediate Mid 2

병역

복무
육군 · 현역병 · 보병
계급·제대
병장 · 만기제대
복무 기간
2021.01.25 — 2022.07.24
SELECTED WORK / 01 BACKEND & REALTIME

2026.06 — 현재

IDEA2STRATEGY

블록 기반 주식 가상 트레이딩 봇

01 — TRADING BOT SAAS

투자 아이디어를,
검증 가능한 전략으로.

코드를 작성하지 않고 매수·매도 조건을 블록으로 조합하는 주식 가상 트레이딩 봇 SaaS입니다. 과거 시세로 백테스트하고, 서버가 읽는 시장 데이터로 가상 거래를 실행해 실제 자금 없이 전략의 동작을 확인합니다.

담당·기여
백엔드 · 시장 데이터 파이프라인 · 실시간 통신
프로젝트
진행 중 · 2026.06 — 현재
Java 21 Spring Boot Python 3.12 FastAPI React TypeScript PostgreSQL Redis AWS Docker Terraform Flyway
프로젝트 GitHub

PRODUCT WALKTHROUGH

주요 기능

전략 편집기확대
가격과 RSI 조건을 연결한 블록 기반 매수·매도 전략 편집기

매매 아이디어를 블록으로 조립합니다.

가격·RSI·평균선 등의 조건을 드래그해 연결합니다. 종목과 예산, 매수·매도 비율을 설정해 코드 없이 나만의 전략을 만듭니다.

전략 미리보기확대
편집기 옆 차트에 예상 매수·매도 지점을 표시한 전략 미리보기

어디서 사고팔지, 차트로 먼저 봅니다.

설정한 조건의 예상 매수·매도 지점을 차트에서 살펴봅니다. 일부 조건을 빠르게 계산한 미리보기로, 전략의 흐름을 확인한 뒤 백테스트로 이어갑니다.

봇 백테스트확대
전략과 NASDAQ-100, S&P 500의 누적 수익률을 비교하는 백테스트 차트

과거 데이터에서 전략을 검증합니다.

과거 시세로 전략을 실행하고 시장 지표와 누적 수익률을 비교합니다. 실행 결과와 거래 내역을 살펴보며 전략이 어떤 성과를 냈는지 확인합니다.

실시간 봇 모니터링확대
실행 중인 봇 목록과 AAPL 시세 차트, 포지션·주문·판단 기록 탭

실행 중인 봇의 움직임을 한눈에 봅니다.

실제 자금 없이 가상 거래를 실행하며 봇의 상태와 종목별 시세를 확인합니다. 포지션과 주문·판단 기록으로 전략의 동작을 따라갑니다.

월별 성과 분석확대
연도와 월별 수익률을 빨강·파랑으로 구분한 성과 히트맵

수익과 손실의 흐름을 월별로 읽습니다.

전체 수익률을 넘어, 월별 성과를 히트맵으로 비교합니다. 수익·손실이 발생한 기간과 최고·최저 성과를 살펴보며 전략의 특성을 파악합니다.

모의투자 대회
DEMO · 0:06
모의투자 대회 목록과 대회별 순위 화면

같은 출발선에서 전략을 겨룹니다.

동일한 시작 자금으로 모의투자 대회에 참여하고, 순위와 누적 수익률을 비교합니다. 영상은 대회 목록과 상세 정보를 살펴보는 데모입니다.

서비스 화면

SYSTEM ARCHITECTURE

시스템 아키텍처

웹 요청부터 전략 실행, 백테스트와 데이터 저장까지의 흐름입니다.

AWS 개발 환경 · 목표 구성 원본 .drawio
사용자와 외부 데이터가 AWS의 웹 진입 계층, 애플리케이션, 비동기 연산, 공용 저장소로 연결되는 IDEA2STRATEGY 시스템 구성도 크게 보기
실선은 요청·데이터·작업 흐름, 점선은 외부·제어 경로를 나타냅니다.

웹 서비스 진입

Route 53과 CloudFront를 거쳐 정적 화면은 Frontend S3로, API 요청은 Public ALB와 Backend API로 연결됩니다.

실시간 전략 처리

Market Gateway → Redis → Trading Worker → Bot Evaluation → Official Ledger로 이어지는 처리 흐름입니다.

비동기 연산과 저장

작업 큐로 백테스트와 데이터 파이프라인을 연결하고, PostgreSQL과 S3에 데이터·결과를 저장하는 구조입니다.

트러블 슈팅

01밀린 시세를 처리하고, 정상 평가로 복귀하기

문제

Redis Stream의 미처리 데이터가 많아지면 새 데이터를 읽지 않는 제어 때문에, 대기량을 줄여야 할 Worker가 읽기를 멈추는 문제가 있었습니다. 단독 Worker 환경에서는 봇이 스스로 복구되지 않을 수 있었습니다.

해결

  • Catch-up 모드에서는 밀린 시세를 계속 읽고 지표·보유 기간 등 전략 상태를 갱신하되, 오래된 시세로 주문하지 않도록 매수·매도 판단만 건너뛰었습니다.
  • 처리를 마친 메시지에 완료 표시를 남기고, 다음 처리 주기에 대기량을 다시 확인해 기준 이하가 되면 일반 평가를 재개했습니다.
  • 화면에 표시할 Tick과 확정 봉 기반 전략 평가 이벤트의 전달 경로를 분리했습니다.

결과와 검증

Redis·PostgreSQL을 연결한 통합 테스트에서 Catch-up 이후 일반 평가 재개, 주문 요청 기록 생성, 처리 중 메시지 해소를 확인했습니다.

02빈번한 시세를 여러 사용자의 차트로 전달하기

문제

체결 시세를 매번 그대로 전달하면 브라우저가 받는 메시지가 늘어납니다. 전송 횟수를 조절하면서 가격 범위와 거래량을 보존하고, 외부 시세 인증정보와 연결은 서버에서 관리해야 했습니다.

해결

  • Market Gateway에서 종목별 Tick을 250ms 동안 모아 처음·최고·최저·마지막 가격과 거래량(OHLCV)을 계산했습니다.
  • Redis Pub/Sub → Backend WebSocket으로 해당 종목을 구독한 사용자에게 전달했습니다. 과거 차트는 REST로 조회하고, 실시간 정보는 진행 중인 표시용 봉에 반영했습니다.
  • 로그인 사용자에게 30초 동안 유효한 일회용 Ticket을 발급하고, 연결에 사용하면 즉시 삭제했습니다.

결과와 검증

Tick 병합 후 가격·거래량 보존, Ticket 재사용 차단, 연결 종료 후 새 Ticket을 이용한 재연결과 표시용 봉 갱신을 테스트했습니다.

03장기 시세 파일을 분할하고 데이터 버전을 고정하기

문제

새 시세가 들어올 때 종목별 약 10년치 파일을 읽고 합쳐 전체를 다시 저장했습니다. 일부만 바뀌어도 장기 데이터를 처리해야 했고, 백테스트에 사용한 버전을 구분하기 어려웠습니다.

해결

  • 기간별로 데이터를 나누고 instrument_id의 해시값으로 종목을 그룹에 배정했습니다. 그룹이 커지면 파일을 추가로 분리했습니다.
  • 시세는 S3의 Parquet 파일로 저장하고, PostgreSQL에는 Manifest와 파일 위치·버전·사용 가능 상태를 기록했습니다.
  • 파일을 덮어쓰지 않고 새 버전을 저장했습니다. 백테스트는 검증이 끝난 Manifest만 조회하고, 지정된 버전과 체크섬이 일치하는 파일만 사용합니다.

결과와 검증

새 버전 저장 후 기존 파일 보존, 일부 수집에 실패한 데이터의 공개 방지, 기록된 내용과 다른 파일의 백테스트 사용 거부를 확인했습니다.

SELECTED WORK / 02 MULTIMODAL AI

2024.09 — 2025.11

멀티모달 기반
졸음 감지 시스템

웹캠·웨어러블 데이터 기반 학습 지원 서비스

WEBCAMFace WEARABLEHRV
FEATURE FUSION 01 — 05

02 — MULTIMODAL AI

놓친 집중의 순간을,
복습의 단서로.

온라인 강의를 수강하는 사용자의 웹캠 안면 랜드마크와 Galaxy Watch 7의 HRV 데이터를 결합합니다. 졸음 정도를 기록해 강의를 다시 볼 때 참고할 수 있도록 만든 학습 지원 서비스입니다.

담당·기여
기기 연동 · 스트리밍 수집 · AI 모델 파이프라인
수상
충북대학교 캡스톤 디자인 우수상 · 2025.11.13
FastAPI MySQL PyTorch React Firebase Docker MediaPipe ST-GCN TCN Bi-LSTM
150프레임 데이터 배치 저장 단위
5분 30fps 기준 파일 분할 주기
1~5단계 멀티모달 졸음 정도 산출

모델 파이프라인

얼굴 특징

웹캠 → MediaPipe → ST-GCN → TCN → Temporal Aggregation

생체 특징

Raw PPG → 전처리·HRV 추출 → PCA → T²·SPE 특징

특징 융합

MLP·1×1 Conv → Bi-LSTM → 졸음 정도 1~5단계

트러블 슈팅

01로그인 없이 웨어러블과 사용자를 연결하기

문제

웨어러블에서 별도 로그인을 생략하면서, 익명 기기의 요청을 웹 사용자의 세션에 연결해야 했습니다.

해결

  • 인증 코드와 세션 ID를 1:1로 매핑하는 auth_code_index를 만들어 전체 세션 순회 대신 코드로 세션을 직접 조회했습니다.
  • 인증용 색인과 실제 데이터 세션을 분리하고, 연동이 끝난 직후 색인을 삭제했습니다.

결과와 검증

코드 기반 직접 조회로 연동 경로를 단순화했습니다. 프로젝트 기록에서 평균 1초 이내의 페어링을 확인했습니다.

0230fps 이상의 안면 데이터를 안정적으로 기록하기

문제

매 프레임마다 디스크에 쓰면 I/O가 잦아지고, 장시간 수집한 데이터를 하나의 파일에 저장하면 파일이 계속 커집니다.

해결

  • 프레임을 메모리 버퍼에 모은 뒤 150프레임 단위로 배치 저장했습니다. 30fps 기준 약 5초 분량입니다.
  • 60개 배치마다 새 파일을 만들어 약 5분 단위로 기록을 분리했습니다.
  • WebSocket 연결이 종료되면 finally 구문에서 남은 버퍼를 저장하도록 했습니다.

결과와 검증

매 프레임 저장 대비 배치 쓰기 횟수를 약 1/150로 줄이는 구조를 적용했습니다. 파일을 분할해 장시간 수집 데이터의 크기와 관리 범위를 나눴습니다.

03얼굴과 생체 신호를 결합해 졸음을 단계로 표현하기

문제

단일 모달리티에 의존하거나 졸음을 이진 분류하는 방식에서 나아가, 웹캠과 웨어러블로 수집한 신호를 함께 활용하고자 했습니다.

해결

  • 얼굴: MediaPipe 안면 랜드마크를 전처리한 뒤 ST-GCN·TCN과 Temporal Aggregation으로 시공간 특징을 추출했습니다.
  • 생체 신호: Raw PPG를 전처리해 HRV 특징을 구하고, PCA와 T²·SPE 통계 특징으로 신체 상태를 표현했습니다.
  • 융합: MLP·1×1 Conv로 특징 공간을 정렬하고 Bi-LSTM으로 시간적 관계를 반영해 졸음 정도를 1~5단계로 산출했습니다.

결과와 검증

HRV 또는 얼굴 특징만 사용한 모델과 비교해, 두 입력을 결합한 모델의 탐지 성능 향상을 확인했습니다.

SELECTED WORK / 03 FRONTEND & DATA

2024.11 · 개인 프로젝트

CRYPTO
TRACKER

암호화폐 가격 분석 페이지

SERVER STATE Query Cache 가격 데이터 · 갱신 · 캐싱
CLIENT STATE Recoil 선택한 코인 · 다크 모드

03 — REACT SPA

자주 바뀌는 데이터,
흔들리지 않는 화면.

API로 암호화폐 가격 정보를 수집·시각화하는 개인 프로젝트입니다. 서버 데이터와 클라이언트 전역 상태의 역할을 나눠, 데이터 갱신과 화면 상태를 관리했습니다.

담당·기여
개인 프로젝트 · 프론트엔드 개발
구현 초점
비동기 데이터 처리 · 캐싱 · 전역 상태 분리
React TypeScript TanStack Query Recoil

상태 관리 구조

TanStack Query

가격 API 응답을 캐싱하고, 기존 데이터를 보여주면서 최신 데이터를 갱신하는 Stale-while-revalidate 전략을 적용했습니다.

Recoil

다크 모드와 선택된 코인 등 클라이언트 공유 상태를 관리해 Prop Drilling을 줄였습니다.

트러블 슈팅

01서버 데이터와 화면 상태의 책임 나누기

문제

빈번한 가격 API 요청과 전역 상태 변화를 한 흐름에서 다루면 갱신 로직이 복잡해집니다. 서버 응답과 화면 설정을 각각의 목적에 맞게 관리해야 했습니다.

해결

  • TanStack Query로 요청·캐싱·백그라운드 갱신을 관리했습니다.
  • Recoil로 화면 전반에서 공유되는 다크 모드·선택 코인 상태를 관리했습니다.
  • 서버 상태와 클라이언트 상태를 분리해 데이터 흐름을 단순하게 구성했습니다.

결과와 검증

캐싱과 상태 분리를 적용하며 비동기 데이터 처리와 상태 관리 라이브러리 활용 경험을 쌓았습니다.

CONTACT · 박준유

함께 풀어갈 문제를
기다립니다.

프로젝트와 개발 경험에 대해 더 이야기하고 싶다면 편하게 연락해 주세요.