T자형을 넘은
바코드형 barcode
백엔드 개발자 박세연


새로운 기술에 대한 갈증이 있지만
무엇보다 기술 구조에 있어 효율적인 기술인지 끊임없이 고민하고
노력하는 자세로 넓은 시야를 가지며 실전에 책임을 다하겠습니다.

profile

대학 성과

평균학점
4.09
최근 학기(2-1)
4.38
자격증 취득
3개
수상
2회
1학년 - R · CS · Java · WEB · RDB · SQL
  • R 기반 데이터 분석
  • 자료구조 · 알고리즘
  • Java 이해, 클라이언트 · 서버 웹 프로그래밍(JSP, Servlet, MVC)
  • OracleDB, SQL 기초 및 심화
  • 네트워크 / Linux / C
2학년 - Spring, Python · DataScience · AI
  • Spring Framework 이해, Restful API
  • Python 활용 데이터 수집·분석
  • 머신러닝/딥러닝, LLM, OpenCV 등
  • 개별 학습 및 적용(React/SpringBoot/Flask)
  • AI 적용 프로젝트 구현
스스로 학습
ReactReact React NativeReact Native ExpoExpo AWSAWS RDS, S3 MySQLMySQL FlaskFlask Swagger UI 블록체인
학습 중 · 관심
보안 C#C# AWSAWS SAA KafkaKafka RedisRedis KubernetesKubernetes DockerDocker

취득 자격증
  • 2025.06 정보처리산업기사 한국산업인력공단
  • 2024.09 SQL 개발자(SQLD) 한국데이터산업진흥원
  • 2024.09 데이터분석 준전문가(ADsP) 한국데이터산업진흥원
수상 내역
  • 2024 아이디어 경진대회 부문 - 동상 한국실천공학교육학회
  • 2024 제 8회 벤처창업 아이템 경진대회 - 장려상 한국폴리텍대학

정보

대학
한국폴리텍대학 성남캠퍼스
전공
인공지능소프트웨어과
GitHub
tpdus751

기술 스택

Languages

JavaJava PythonPython JavaScriptJavaScript CC RR

Familiar

Backend

Spring Spring Boot JPA JSP / Servlet RESTful API JUnit MyBatis

Frontend / App

HTML CSS React jQuery

Data / AI & Crawling

Machine Learning Deep Learning OpenAI LLM (GPT API) OpenCV NLP Selenium BeautifulSoup

Database

MySQL OracleDB SQL

Infra / Collaboration

AWSAWS RDS AWSAWS S3 Git GitHub Slack Notion

Tried

Backend / App

Flask React Native

Cloud / Infra

AWSAWS Docker Linux Linux

Architecture & Tools

Postman WebSocket LM Studio

프로젝트

Finday - 오픈뱅킹 웹 시뮬레이터

개인 · 2025.05 ~ 2025.08

Finday 서버·가상 KFTC 게이트웨이·가상 은행 서버 간의 HTTP API로 연동하여
계좌/카드 조회, 이체, 결제, 거래내역을 시뮬레이션.
로그인 및 기타 인증 과정에서, JWT + 얼굴인증(Flask/DeepFace) 2단계 검증.

단일 서버에서 오픈 뱅킹 시뮬레이션 구성의 한계
해결 · Finday 서버와 가상 은행/가상 KFTC 게이트웨이를 분리, API 계약 중심으로 통신.
결과 · 기능/책임 경계 명확화, 변경 영향도 감소.
이체 중 출금 실패 시, 입금 불일치 위험
해결 · 게이트웨이 서버에서 수동 트랜잭션 제어(롤백) 로직 구현.
결과 · 도중 실패 시 원자성 보장(출금/입금 불일치 방지).
연동 파라미터/응답 포맷 혼선
해결 · Swagger UI로 스키마/에러코드 문서화, 샘플 요청/응답 제공.
결과 · 개발자 경험 개선, 디버깅/연동 속도 향상.
다중 은행 계좌 조회의 느린 응답
해결 · 순차 호출을 parallelStream() 병렬 호출로 전환, 지연 은행은 빈 리스트 대체.
결과 · 전체 조회 응답 단축, 지연 격리로 안정성 향상.
JWT만으로는 본인확인 한계
해결 · 얼굴인식 2단계 인증(Flask+DeepFace) 도입.
결과 · 접근 통제 강화, 민감 기능(이체·결제) 보안성 증대.
React face-api Spring Boot JPA MySQL REST API Swagger UI Flask · DeepFace AWS S3, RDS Monolith + Integration

로그인 과정 / Swagger UI / 시스템 흐름 다이어그램

내돈내픽 - ML 기반 가격·위치·취향(15) 맞춤 음식점 추천 앱

팀장 · 2025.04 ~ 2025.07

음식점 리뷰 크롤링 → 음식점 점수화 -> 사용자 음식점 리뷰 분석 → 사용자 점수화 → 모델 학습용 데이터 구성 → 모델 학습 → 파라미터 조정 → 추천까지 전 과정을 직접 설계·구현한 E2E 파이프라인.
추천 기능 외, 거리 기반 근처 음식점 확인, 음식점 검색, 예산 기능, 채팅 기능을 도입한 종합 서비스 제공.
채팅 기능에 감성분석 모델을 적용하여, 사용자 채팅에 대한 긍정 음식점 순위 확인.

팀장(기획·설계·통합) Backend Frontend Flask PPT 정리
공공데이터만으로는 부족한 학습 샘플
해결 · 네이버/카카오 등 리뷰 크롤링으로 원천 데이터 확보 → konlpy(OKT)로 형태소화, 15개 취향           태그(예: spicy/cleanliness/value_for_money …)별 1~5점 ‘사전’ 정의·매칭.
          유사도 ≥ 0.7만 반영, 평균 점수는 SQLAlchemy로 DB 저장.
결과 · 학습에 필요한 구조화 점수 데이터를 안정적으로 축적(약 4300개의 음식점 취향 점수화).
리뷰 노이즈(비음식/광고/짧은 글)로 품질 저하
해결 · OpenAI(GPT-4o)를 사용해 음식점 관련 리뷰만 선별(다른 도메인 포함)
          → 길이 기준 상위 30개 리뷰를 취합해 15개 항목의 선호도 점수(1.0~5.0)를 JSON으로
              산출하는 프롬프트 설계.
결과 · 노이즈 감소와 일관된 스코어링으로 학습 데이터 품질 향상.
사용자–매장 매칭 기준 정의와 검증
해결 · 사용자 점수와 매장 점수의 절댓값 차이를 특징으로 구성 → RandomForest로 80/20 검증
         (파라미터 탐색·실험 로그 정리).
결과 · 분류 정확도 69.5%(macro F1 ≈ 0.68, precision ≈ 0.69, recall ≈ 0.68)로 기본 모델
         유효성 확인, 이후 서비스 추천 로직에 적용.
거리 계산·검색 지연
해결 · DB의 위경도로 HaversineService 레이어에서 계산, Pagination/무한스크롤 도입.
결과 · 외부 API 의존 제거, 검색 응답 체감 속도 개선·쿼리 부하 완화.
팀원별 환경 차이로 통합 난항
해결 · Git 브랜치 전략 및 AWS RDS 공유로 환경 표준화.
결과 · 마이그레이션 비용 없이 공용 DB로 개발 일관성 확보.
채팅에 AI 접목
해결 · 채팅 내 /음식점명 질의에만 감성 분석을 적용해 월간 긍정 랭킹 시각화.
결과 · 추천 신뢰 보완 및 사용자 참여 증대.
Spring Boot JPA MySQL React Native Flask Machine Learning AWS RDS REST API OpenAI API konlpy(OKT)

사용자 맞춤 음식점 추천 (대표 영상)

kcElectra 모델 기반 감성분석을 활용한 성남시 음식점 분석 시각화 웹

개인 · 2025.06

네이버/카카오 리뷰 36만 건을 직접 수집·정제하고, beomi/KcELECTRA-base-v2022 모델을
파인튜닝하여 Macro-F1 0.70의 성능을 달성하였으며, 부정/중립/긍정 3클래스 감성 분류를 수행 및 Streamlit 대시보드로 시각화했습니다. 리뷰 기반 장점/개선점 자동 요약은 GPT-4o API로 제공하여
지역 사용자와 식당 운영자 모두에게 인사이트 제공하는 프로젝트입니다.

Streamlit 배포 시 실시간 음식점 리뷰 크롤링의 한계
해결 · 사전 크롤링 후 CSV로 저장해 조회 시 즉시 활용.
결과 · 사용자가 음식점 입력 → 대기 시간 크게 감소.
LSTM 모델의 중립/부정 재현율 저하
해결 · 한국어 특화 beomi/KcELECTRA-base-v2022 파인튜닝(클래스 불균형 대응 포함).
결과 · F1(부정) 0.56→0.80, F1(중립) 0.28→0.66, Macro-F1 0.59→0.73로 균형 성능 확보.
산출물 · 대시보드 & 인사이트
결과 · 확률 상위 리뷰 하이라이트, 워드클라우드/파이차트, GPT-요약(장점·개선점) 제공으로
          지역 사용자·식당 운영자 모두가 참고 가능한 인사이트를 얻도록 구성.
Python Streamlit Selenium KcELECTRA OpenAI API WordCloud

시연 영상 / 최종 감성분석 모델 성능 지표

InceptionResNetV2 전이학습을 통한 25개 이미지 클래스 분류

개인 · 2025.06

InceptionResNetV2 전이학습을 활용하여, 직접 수집한 총 25개의 일상 사물 및 자동차 이미지를 분류하는 이미지 분류 모델 구축, 검증 정확도 97% 이상 달성

왜 InceptionResNetV2인가? (모델 선택 근거)
25개 클래스가 크기·형태가 다양해 멀티스케일 특징안정적 수렴이 핵심.
Inception(병렬 커널)+ResNet(스킵 연결)을 결합한 InceptionResNetV2를 채택.
멀티스케일: 1×1/3×3/5×5 병렬로 작은 디테일부터 큰 실루엣까지 포착.
안정 수렴: Residual로 기울기 소실 완화 → 전이학습 시 빠르고 안정.
효율: 성능 대비 파라미터·추론 비용이 과도하게 크지 않음.
결과 · 초기 수렴 안정·과적합 완화로 검증 정확도 97% 달성, 지표 변동폭 감소.
사전학습 Top층 클래스 수 불일치·과적합 우려
해결 · include_top=false로 제거 후 GAP→Dropout→Dense(1024)→Dropout→Dense(25) 커스텀 헤드.
결과 · 클래스 적합·일반화 개선.
학습 정확도에 비해 낮은 검증 정확도, 다양한 요인의 하이퍼파라미터 최적화 도출 어려움
해결 · 약 10개 노트북으로 Dropout 비율·LR·Dense 구조 실험·로그 비교.
결과 · 과적합 완화(검증 정확도 97% 달성), 지표 안정화.
TensorFlow InceptionResNetV2 Python

Accuracy-Loss 그래프 / 예측 결과 화면

블록체인 실습 — Java를 활용한 블록, 트랜잭션, 해시, 전자서명, PoW

개인 · 2025.01

Java를 활용하여 블록, 트랜잭션, 해시, 작업증명(PoW) 등의 블록체인 구조를 직접 구현한 시뮬레이션
프로젝트로, 암호화폐의 핵심 기술인 블록체인의 원리를 실습을 통해 체득하기 위한 목적

체인 연결·해시 설계
해결 · previousBlockHash 참조, 트랜잭션을 포함해 해시 생성.
결과 · 변경 감지·무결성 확보.
SHA-256 구현 난점
해결 · MessageDigest API 활용.
결과 · 안정적 해시 생성.
PoW 채굴 조건 만족 로직 필요
해결 · mine() 함수 구현하여 nonce 증가 반복으로 목표 해시(예: 0000*) 찾기.
결과 · 채굴 성공 시점 감지, 난이도 기반 채굴 시뮬레이션 확장 가능.
Java SHA-256 Java Security API PoW

체인 생성 / 변조 시연

QuizBank — IT 문제 등록·공유·모의시험 응시 웹 사이트

개인 · 2024.11 ~ 2024.12

시험 기간 중 학습과 프로젝트 구현을 병행하기 위해 설계된 문제은행 서비스. 사용자는 객관식·주관식 문제를 등록·공유하고, 과목별/전체 랜덤 모의시험에 응시할 수 있습니다. 카카오 로그인, 어려운 문제 확인, 시험 결과, 사용자 참여 이벤트, 크레딧 제공 기능 포함.

객관식 정답 암기 이슈
해결 · Service 레이어에서 보기 순서 랜덤화 처리.
결과 · 예측 가능성 ↓, 공정성 ↑.
댓글 CRUD 시 전체 새로고침 → 사용자 경험 저하
해결 · AJAX 기반 비동기 요청으로 댓글 영역만 갱신.
결과 · 불필요 렌더링 축소, UX 개선.
관리자 페이지 URL 조작 접근
해결 · 세션의 loginMemberVO에서 권한을 확인하여 getType() == "S" (관리자)만 통과.
         미인증/권한 부족은 로그인/403으로 리다이렉트.
결과 · 모든 관리자 화면에 대해 일반 사용자/비로그인 접근 차단, 단순 URL 조작 방어.
원글의 답글, 답글의 답글을 구현하는 것을 구현해야 함
해결
  • 스키마 추가 : originNo(그룹키), groupOrd(그룹 내 순서), groupLayer(깊이)
  • 원글: originNo=code, groupOrd=0, groupLayer=0
  • 답글 삽입 규칙: originNo=부모.originNo, groupOrd=부모.groupOrd+1,
                           groupLayer=부모+1 삽입 전 “밀어내기”
                           → "UPDATE...SET groupOrd = groupOrd + 1
                    WHERE originNo = ? AND groupOrd >= ?"
  • 목록 정렬: ORDER BY originNo DESC, groupOrd ASC
결과 · 대댓글이 많아도 계층 순서/들여쓰기가 안정적으로 유지되고, 조회/렌더링 규칙이 단순화됨.
JSP/JSTL/Servlet MyBatis OracleDB jQuery

QuizBank 시연 영상 / 아키텍처 / ERD

Java, Multi Thread, Socket 기반 채팅 프로그램

개인 · 2024.10

Java 기반의 소켓 통신멀티스레드 구조를 활용하여 구현한 실시간 채팅 프로그램으로,
닉네임 변경, 멘션, 이미지 전송, 사용자 목록 확인, 대화 로그 저장 등 다양한 채팅 기능을 명령어로 제공. 저수준 네트워크 통신과 예외 처리, 사용자 인터페이스 설계 등을 직접 구현.

다수 사용자를 지원하는 안정적인 채팅 서버 구현 목표
해결 · 서버 accept 루프 + 접속 당 전용 스레드, 소켓 생성, 공용 맵(Hashtable)으로
          사용자 닉네임을 key로 세션 관리.
결과 · 단일 서버에서 여러 사용자 실시간 채팅 안정 지원.
명령어 처리 로직의 복잡성 및 코드 가독성 저하
해결 · message.startWith("/명령어") 기반 라우팅 + 기능별 메서드 분리.
결과 · 가독성·유지보수성 향상, 명령 추가 시 영향 범위 축소.
특정 사용자에게만 메시지 전송(멘션)
해결 · /to 대상닉네임 메시지 파싱(StringTokenizer) 후 대상 세션에만 전송.
결과 · 1:1 비공개 메시지 제공, 방해 최소화.
파일 송수신 프로토콜 부재
해결 · 보낼 사용자는 /img 파일명으로 BufferedInputStream으로 이미지를 읽어들인 후 소켓에           발신 → 서버는 DataInputStream으로 읽어들인 후 /notify로 배포 안내 →
          타 사용자가 /download 파일명으로 요청 시 서버가 바이너리 스트림 전송.
결과 · 이미지 공유/다운로드가 안정적으로 동작.
서버 종료 시, 사용자 쓰레드가 종료되지 않음
해결 · connectClient()에서 데몬 스레드 처리 → thread.setDaemon(true)
결과 · 서버가 종료될 때 쓰레드도 같이 종료.
Java Socket Thread

명령어 확인 / 4명의 채팅 환경 / 채팅 화면