
Full-Stack Developer
신영재 Yeongjae Shin
LLM 기반 서비스 설계부터 프론트엔드·백엔드 구현까지, AI 시대의 풀스택을 지향합니다.
학부 3학년에 실리콘밸리에서 창업 프로젝트를 진행하던 중, 멘토에게 "어떻게 돈을 벌 것인가" 라는 질문을 받았습니다. 이 질문은 결국 "이 서비스가 어떤 가치를 가지는가" 를 묻는 것이었고, 이후 개발의 모든 의사결정에서 이 관점이 기준이 되었습니다.
[비즈니스 도메인을 이해하는 개발자]
비즈니스의 문제를 기술로 해석하고, 문제를 정의합니다. 처음 접하는 도메인이더라도 비즈니스와 요구 사항을 먼저 이해하고, 필요한 개발을 합니다.
[사용자 중심의 개발자]
사용자 입장에서 서비스를 생각하고, 가치 있는 서비스를 만드는 것을 중요하게 생각합니다. 사용자와 가장 가까운 영역의 서비스를 고민하고 개선하기 위해 프론트엔드 개발에 집중하고 있습니다.
[아키텍쳐를 설계하는 개발자]
다른 분야의 팀원과 같은 언어로 소통하고 함께 의사 결정을 내릴 수 있는 개발자를 지향합니다. 이를 위해 웹 풀스택, 인프라, ML, 데이터, AI 등 여러 분야의 기술을 적극적으로 학습하고 프로젝트에 활용해왔습니다.
2019.03 - 2025.02
경북대학교 컴퓨터학부 졸업
2024.01 - 2024.02
LG Soft India(인도 뱅갈루루)ML Engineer, Data Analytics
LG전자 연구소 현장실습, ML 에어컨 자동제어 시스템 데이터 분석 및 ML 모델 성능 테스팅
2024.07~2024.08
주식회사 모키프론트엔드 개발
스타트업 현장실습, 키오스크 매출분석 보고서 웹 프론트엔드 개발 및 초기 버전 배포
2026.01~현재
pitchUS풀스택 개발
창업 프로젝트, MVP 버전 웹 프론트엔드 개발 및 백오피스 기능 풀스택 개발
Frontend
Backend
Database & Infra
Etc
Projects
Projects
스타트업의 미국 투자 유치를 위한 SV스타일 Pitch Deck 생성 서비스
슬라이드 프리뷰→결제→열람 플로우 프론트엔드 개발
LLM Cost Tracker 백오피스 풀스택 개발


핵심 성과
- SSE 스트리밍 도입으로 슬라이드 생성 대기 시간 체감 UX 개선 (동기 로딩 대비 첫 슬라이드 노출까지 대기 시간 제거)
- LLM Cost Tracker 자체 개발 → 단계별 비용 가시화로 팀 내 LLM 호출 비용 모니터링 체계 구축
- 결제 연동 버그 2건 직접 발견·원인 특정 → 서비스 안정성 기여
주요 개발 내용
SSE 스트리밍 기반 실시간 슬라이드 렌더링
LLM으로 슬라이드가 생성되는 동안 동기적 로딩이 아닌, 스트리밍 비동기 처리와 상태 관리를 통한 UX 개선
- 생성되는 슬라이드를 SSE로 클라이언트가 실시간으로 받아 렌더링하는 hook 개발
- 여러 단계에서 활용되는 SSE 유틸 함수를 제네릭 타입으로 설계
- 스트리밍 status에 따라 Zustand 상태 관리 및 로딩 hook 동작 연동
- 로딩 메세지 출력을 위한 메세지 queue 설계
Zustand 기반 상태관리 설계
다단계로 이뤄진 deck 생성 플로우에 필요한 상태값을 유지하기 위한 Zustand 상태 관리 설계
- 단계를 앞뒤로 이동해도 선택값과 서버 데이터가 유지되도록 구조 개선
- 슬라이드 데이터, 결제 상태, 스트림 연결 상태를 하나의 스토어에서 관리해 일관된 상태 관리
- 팀원이 개발한 로직과 자연스럽게 호환되도록 상태값 및 타입 재정비
단일 책임 원칙 기반 훅 설계
페이지 로직이 복잡해지면서 컴포넌트에 과도한 역할이 몰리는 문제 해결
- 역할별로 훅을 분리해 각 훅이 하나의 책임만 담당하도록 구조화
- 로직 추가·수정 시 영향 범위가 명확해져 유지보수성 향상
결제 플로우 연동 (Stripe)
Stripe 세션 연동해 결제 완료 후 잠긴 슬라이드가 열리는 플로우를 구현
백오피스 서비스 개발 - LLM Cost Tracker
팀 운영 차원에서 LLM API 비용이 얼마나 발생하는지 파악이 안 된다는 문제를 인지해 독자적인 개발 진행
DB 설계
- 기존 DB 테이블을 분석해 LLM 호출 로그를 단계(type)별로 저장하는 테이블 구조 설계
API 설계·구현
- 프레젠테이션 생성 단계에서 DB 커넥션을 최소화한 LLM 호출 로그 집계 로직 추가
- 생성 단계(type)별 비용 세분화 및 비용 조회 API 설계
프론트엔드 구현
- 전체 프레젠테이션 목록 테이블 (총 비용, prompt/completion 토큰, 생성일)
- 드릴다운 상세 뷰 (단계별 비용 분석)
- OpenRouter API 연동을 통한 남은 크레딧 출력 UI
문제 발견 및 해결 주도
직접 서비스를 사용자 입장에서 반복 테스트하며 발생한 문제에 대해 프론트 문제인지 백엔드 문제인지 분석 후 원인을 특정해서 해결을 요청
- 결제는 완료됐는데 슬라이드 잠금이 해제되지 않는 문제를 발견 → Stripe webhook 수신 후 DB 상태값이 업데이트되지 않는 문제 식별
- 슬라이드 재생성 idempotency 문제 확인 → 재현 조건을 확인하고 수정 요청
Projects
LG전자 산학협력 프로젝트, WebOS를 활용한 소상공인을 위한 개인화 키오스크 웹앱 개발
키오스크 백엔드 개발 및 얼굴 인식 로직 구현
팀장 역할 수행 및 프로젝트 운영 총괄


핵심 성과
- numpy 벡터 연산 최적화로 얼굴 인식 로그인 매칭 성능 개선
- 에자일 방법론 도입 및 기능 명세 문서화로 팀 협업 프로세스 체계화
주요 개발 내용
키오스크 웹앱 백엔드 개발
deepface 기반 얼굴 인식 기능을 핵심으로 하는 키오스크 백엔드 구축
- 얼굴 인식 연동을 고려한 ERD 설계 및 Django REST API 구현
- deepface 라이브러리 기반 사용자 식별·로그인 로직 개발
- LG전자 WebOS 환경에서 통합 테스트 및 검증
얼굴 인식 로그인 성능 개선
고차원 벡터 매칭 과정에서 DB 순회 비용이 커 응답 속도가 저하되는 문제 발생
- numpy 벡터 연산으로 거리 계산 로직을 최적화하여 매칭 성능 개선
팀장 역할 수행
프로젝트 운영 총괄 및 애자일 방법론 도입을 통한 팀 협업 체계화
- 주간 회의 진행 및 일정 조율, 이슈 관리 등 프로젝트 운영 총괄
- Notion을 활용한 스프린트 관리 / 작업 분배 / 설계 문서화
이슈 사항
협업 방식 개선 및 팀원 의사소통 조율
간단한 기능을 설계하는 과정에서 팀원들이 생각하는 로직이 다름을 인지했습니다.
팀원들이 바라보는 방향을 한 곳으로 맞추기 위해 프로젝트 기능 명세 문서화를 적극 추진했습니다. 또한 에자일 방법론을 도입하여 각 스프린트 별 팀원들의 역할 분배와 개발 현황을 공유해 팀원 별 역할을 효율적으로 분배할 수 있었습니다.
Projects
SKT 산학협력 프로젝트, UAM 버티포트 내 리소스(이착륙 패드·게이트·지상 이동 경로) 최적화 서비스 개발
MILP 기반 리소스 최적화 알고리즘 설계
팀장 역할 수행 및 논문 작성


핵심 성과
- 한국정보기술학회 대학생 논문경진대회 우수논문상(동상) 수상
- MILP 모델 설계 → 버티포트 리소스 스케줄링 최적해 도출 검증
- 일단위 일정 관리 체계 구축, 팀 내 갈등 조율 후 프로젝트 성공적 마무리
주요 개발 내용
선형계획법 기반 리소스 최적화 알고리즘 설계
항공·UAM 도메인 요구사항 분석 후 UAM 이착륙 프로세스를 추상화하여 최적화 모델 설계
- 항공·UAM 도메인 요구사항 분석 후 UAM 이착륙 프로세스 추상화
- Python PuLP 라이브러리를 활용한 혼합정수선형계획(MILP) 모델 성능 테스트
학술 논문 작성 및 수상
프로젝트 결과를 학술 논문으로 정리하여 학회에 투고
- 「혼합 정수 선형 계획법을 활용한 단일 버티포트 내 UAM 리소스 최적화」 논문 작성
- 한국정보기술학회 대학생 논문경진대회 우수논문상(동상) 수상
팀장 역할 수행
프로젝트 운영 총괄 및 기술적 의사결정 지원
- 주간 회의 진행, 일정 관리, 산출물 정리 등 프로젝트 운영 총괄
- 팀 내 개발·알고리즘 연구 전반 참여 및 기술적 의사결정 지원
이슈 사항
협업 간 의견 차이 조율
촉박한 일정 중 기능 설계 간 의견 차이 발생해 갈등이 생겼습니다.
멘토님께서 우려를 표하신 것이었으므로, 요구 사항 설계의 중요성과 프로젝트의 가치가 우선이 되어야함을 강조했고, 일단위의 구체적인 일정을 잡고 프로젝트를 재검토할 계획을 세워 설득했습니다.
이 과정을 거쳐 논문을 작성할만한 가치 있는 프로젝트를 완료할 수 있었습니다.
Internship
Internship
키오스크 매출 분석 및 백오피스 웹 서비스 MVP 개발 및 배포
매출 분석 웹 서비스 프론트엔드 단독 개발 및 배포
전역 상태 캐싱 설계 및 다국어(한/영) 지원


핵심 성과
- 프론트엔드 단독 개발로 MVP 버전 완성 및 Netlify 배포
- 전역 상태 캐싱 구조 도입으로 중복 API 호출 제거
- i18n 다국어(한/영) 지원 및 박람회 시연용 인터랙션 UI 구현
주요 개발 내용
매출 분석 UI/UX 개발
일간/주간/월간 단위로 매출 데이터를 시각화하는 분석 대시보드 구축
- 기간 단위별 매출 분석 페이지 구조 설계 및 차트 UI 구현
- Redux-store 기반 전역 상태 관리로 API 비동기 요청 및 데이터 흐름 일원화
성능 개선
화면 전환마다 동일 API를 재호출하는 비효율 구조를 개선
- 전역 상태 캐싱 도입 → 중복 API 호출 제거
- 공통 UI 컴포넌트 추출 → 재사용성 및 유지보수성 향상
기타 개발
박람회 시연 및 글로벌 서비스를 위한 부가 기능 개발
- UI 애니메이션 개발 → Framer-motion 기반 인터랙션
- 글로벌 서비스 기능 개발 → i18n 기반 다국어(한/영) 기능
- 관리자 페이지 기능 개발 → 사진 등 메뉴 정보 업로드 기능
- 배포 및 운영 → Netlify를 활용한 MVP 버전 배포
고려 사항
유지보수성, 확장성, UI/UX 관점에서의 설계 고려
유지보수성 & 확장성
- 기능 확장에 유리한 컴포넌트 구조
기업 활용처 - 박람회 시연
- 직관적인 API 요청 피드백 화면
- 모달 구성으로 단계적 로직 구성
UI/UX
- 전역 상태 및 커스텀 훅을 통한 주간/일간/월간 일관된 상태관리
- 사용성 강화 → 스크롤시 Fade-in 애니메이션 구성
이슈 사항
중복 API 요청 리팩토링
일별/주별/월별 화면 전환 시 매번 동일한 API를 재요청하는 구조
- 날짜별·단위별 결과를 전역 상태에 캐싱하고, Key 기반 화면 전환으로 리팩토링하여 해결
화면 전환 시 사용자 데이터 초기화 문제
부모 → 자식 → 부모 이동 시 부모 컴포넌트가 재렌더링되며 로컬 상태가 초기화
- 사용자 데이터를 Redux-store 전역 상태로 이동하여 화면 전환에도 상태 유지
Internship
인도 뱅갈루루 LG전자 연구소 현장실습, 사용자 행동 데이터 및 ML 기반 자동 에어컨 제어 모델 개발
대규모 사용자 데이터 EDA 및 클렌징 파이프라인 구축
ML 모델 성능 비교 평가 및 인사이트 프레젠테이션 수행


핵심 성과
- 약 70만 건 규모 사용자 데이터 EDA 수행 및 데이터 클렌징 파이프라인 구축
- ML 모델 성능 비교 평가 (MAE, RMSE 기준) → 최적 모델 선정 근거 제시
- 분석 인사이트 기반 프레젠테이션 수행, 글로벌 R&D 환경 협업 경험
주요 개발 내용
대규모 사용자 데이터 분석 및 전처리
약 70만 건 규모의 에어컨 사용 로그에서 의미 있는 패턴을 도출하기 위한 데이터 정제 및 탐색
- pandas 기반 이상치 제거·결측치 처리·데이터 구조화 파이프라인 구축
- seaborn/matplotlib 활용 통계 분석 및 시각화 자료 제작 → 멘토 리뷰에 활용
ML 모델 실험 및 성능 검증
Azure ML Studio를 활용한 회귀 기반 예측 모델 실험 및 성능 지표 비교 평가
- Microsoft Azure ML Studio 모델 실험
- 회귀 기반 예측 모델들의 MAE, RMSE 등 주요 지표 분석 및 비교 평가
글로벌 협업 및 연구소 R&D 경험
인도 현지 R&D 팀과의 협업 및 기술 세션 참여
- 사내 멘토링 및 기술 세션 참여
이슈 사항
데이터 분석과 ML에 대한 이해 및 검증
초기 EDA 단계에서 어떤 지표를 중심으로 데이터를 해석해야 하는지, 시각화 결과가 모델 개선과 어떻게 연결되는지를 명확히 정의하지 못하는 어려움이 있었습니다.
여러 가설과 시각화 샘플을 정리하여 인도 현지 개발 멘토에게 피드백을 요청했고, 반복적인 검증 과정을 통해 outlier 파악 및 데이터 샘플을 개선을 위한 데이터 분석을 할 수 있었습니다. 또한 데이터 시각화 과정에서 얻은 인사이트를 활용해 프레젠테이션을 수행했습니다.