기획부터 배포까지 서비스 전체를 설계하고, 도메인 데이터를 코드로 연결하는 풀스택 개발자입니다.
3개의 집중형 부트캠프와 10개 이상의 팀 프로젝트를 거치며, 단순 구현을 넘어 서비스 구조를 설계하고 문제를 수치로 해결하는 개발자로 성장했습니다. 프론트엔드 감각 위에 백엔드·인프라 경험을 더해, 기획부터 배포까지 서비스 전 사이클을 혼자서도 완성할 수 있습니다.
주식 장 마감 시간을 폴링 로직에 반영해 일일 API 60% 감소. 생명과학 복수전공 기반 도메인 연결 사고.
버블팝업·아마겟돈·EatIt 3개 프로젝트에서 FE와 BE를 동시 담당. 데이터 흐름 전체를 설계.
버블팝업에서 3가지 구조 문제를 정의하고 서버 권한형 온디맨드 방안 제안·채택. 인프라 팀과 아키텍처 협업.
EatIt에서 기획→FE→BE→AWS EC2(Nginx, HTTPS, DNS) 전 과정 단독 완성.
Three.js↔React, Unity↔React, GeoJSON↔게임좌표 등 경계 문제 반복 해결.
복수전공생 커뮤니티 직접 생성, 학과 대표·학생회 차장 등 없으면 만드는 사고방식.
이달의 동료상은 팀원들이 직접 선정한 수상으로, 협업 방식을 가장 잘 보여주는 증거입니다. 학습 결과를 대회·발표·문서화로 마무리해 성과로 연결해왔습니다.
실제 뉴스 데이터 기반 트렌드 분석이 게임 플레이에 영향을 주는 실시간 팝업스토어 경영 시뮬레이션 · SSAFY 빅데이터 분산 도메인 우수상
React 19 · TypeScript · Three.js · Spring Boot · Redis · HDFS · Spark · KoNLPy · AWS EC2/S3 · GitLab CI/CD





| 타이밍 | 서버가 하는 일 |
|---|---|
| 영업 준비 | hourlySchedule·시드·이벤트 스케줄 전달. Redis 초기값 저장. |
| 액션 발생 | 마지막 저장~현재까지 구간 계산. 유입률/판매가 변경. Redis 스냅샷 추가. |
| 재접속 | Redis 이력으로 현재 시점까지 온디맨드 계산 → 완벽 복원. |
| 영업 마감 | 최종 구간 계산. 정산. MySQL 저장. Kafka 발행. |


손님 구매량(0~3개)을 그때그때 Math.random()으로 결정하면 서버 검증 불가 + 재접속 복원 불가. 시즌 시작 전 서버가 유저별 시드 배정. 서버·FE가 같은 시드를 순서대로 소모 → 어느 쪽에서 계산해도 동일한 결과. SSE 없이도 클라이언트가 이벤트 스케줄을 들고 있다가 시각이 되면 서버에 직접 요청.
유입률·판매가·유동인구배수가 바뀌는 순간마다 스냅샷을 Redis에 누적. 이 이력만 있으면 어느 시점에서든 잔액·재고를 독립 재계산 가능.
게임 내 손님 수가 계속 0으로 산출됨. 매출이 발생하지 않아 게임 정상 진행 불가.
Spark ETL이 유동인구 원본 데이터를 0~20 score로 정규화했는데, BE 손님 수 계산식은 수천 단위의 실제 수치를 전제로 설계됨. 두 시스템의 scale이 불일치.
10초 틱 로그에 customerCount·cash·totalStock 추가해 원인 추적. Spark score 범위(0~20) 기준으로 손님 수 계산식 전면 재설계. 손님 수 0 → 정상 범위 산출, 매출 정상 발생.
20~30대 초보 투자자를 위한 투자 성향 기반 맞춤 학습 + 모의투자 금융 학습 플랫폼
React 18 · TypeScript · lightweight-charts · Spring Boot 3 · JPA · Redis · FastAPI


lightweight-charts 기반 주식 시세 시각화. 컴포넌트별 폴링 주기 분리 — 실시간 1초, 내종목 7초, 차트 6분.
평일 09:00~15:30 체크 함수. 장 마감 후 폴링 자동 중단 → 일일 ~50,000건 → ~20,000건(60%↓). 도메인 규칙이 코드를 설명.
클릭 즉시 UI 반영, 서버 실패 시 rollback. UX 지연 없음.
닉네임·성향 변경 시 window.dispatchEvent. 전역 상태 대신 느슨한 결합 선택.
Private(로그인), Public(비로그인), Survey(성향 미완료). 서비스 접근 제어 전 체계 설계.
성향 분석 AI를 BE 경유하는 프록시 구조. 클라이언트가 FastAPI 직접 호출 안 함.


챕터별 진행 내역 조회 시 JPA N+1 발생. 전체 진행 내역을 한 번에 조회 후 Map 변환, 루프에서 O(1) 조회.
| 항목 | Before | After |
|---|---|---|
| DB 쿼리 수 | ~100회 (챕터 수 비례) | 2회 (고정) |
user_id + chapter_id 복합키. 소규모에서 가시성 우선 → 내부 static class 선택. prevCompleted 플래그 기반 순차 잠금 해제 — 파생 상태를 저장하지 않고 매 요청마다 실시간 계산. "파생 데이터는 계산이 정합성에 유리하다" 체득.
빈번한 카운터 → Redis. 영구 기록 → DB. AchievementIdCode 상수 클래스로 하드코딩 제거. 행동 시점에만 체크하는 이벤트 기반 설계.
Python 기반 AI를 독립 서비스로 운영. Spring Boot BE를 경유하는 프록시 구조 → 아키텍처 일관성 유지.


SSAFY 교육생에게 식단 관리와 CS 학습을 게이미피케이션으로 연결해 학습 지속성을 높이는 서비스
Vue.js 3 · TypeScript · Pinia / Spring Boot · MyBatis / AWS EC2 · Nginx · Let's Encrypt


식단 등록 안 하면 HP가 줄고, HP가 낮을수록 XP도 줄어드는 구조. 학습보다 식단 등록을 먼저 유도하는 게임 루프.
식단 삭제 시 HP를 얼마나 되돌릴 것인가. 등록 당시 실제로 회복된 양을 저장해야 정합성 보장.
"source of truth를 동작 시점의 실제값으로 채워야 한다" — 이 설계에서 체득한 원칙.
로그인 후 모든 API에서 403 반환. 서비스 전체 사용 불가.
HTTP → HTTPS 전환 후 브라우저 SameSite/Secure 정책으로 세션 쿠키 자동 차단. Spring Boot 기본 설정이 HTTPS 환경을 인식하지 못해 Secure 플래그 없이 쿠키 발행.
application.properties에 secure=true, same-site=none, forward-headers-strategy=native 추가. Nginx 프록시 헤더가 Spring에 전달되도록 설정. 전체 API 403 → 정상 응답.
DID 기반 병원 통합 출입증 모바일 앱 · React Native (Bare) · Zustand · FCM · Credo
LG CNS AM Inspire Camp 1기 최종 프로젝트 대상(1위)


useNativeDriver:true 설정으로 Native Thread 분리. rotateY interpolate 범위(0→180도) 명확히 지정.기획부터 배포까지 서비스 전체를 설계하고, 도메인 데이터를 서비스 로직에 연결하는 풀스택 개발자입니다. FE-BE 경계를 직접 설계하고, 어려운 문제를 수치로 풀어내며, 구조적 문제를 팀에 제안할 수 있는 개발자입니다.