-
[Project Review]성능과 UX의 '혁명'을 위한 기술적 선택면접 준비/포트폴리오 2026. 2. 20. 18:50
이 프로젝트에서는 주식 데이터와 AI 모델을 결합하여 사용자에게 인사이트를 제공하는 웹사이트를 개발했습니다. 개발 과정에서 마주한 기술적 한계들과 이를 어떻게 엔지니어링 관점에서 해결했는지 공유합니다.
단순한 기능 구현을 넘어, '왜 이 기술이어야 했는가?'에 대한 고민을 담았습니다. 백엔드부터 프론트엔드까지, 제가 해결한 문제들과 핵심 기술 용어들을 정리합니다.
1. 프로젝트 개요
"단순한 기능 구현을 넘어, 엔지니어링 관점에서 성능 최적화를 고민하다."
- 프로젝트명: AI 기반 주식 기술적 지표 분석 및 채팅 서비스
- 핵심 역할: 백엔드 비동기 파이프라인 구축, 대량 데이터 적재 최적화, 프론트엔드 UX 개선
- Tech Stack: Java, Spring WebFlux, JPA, ta4j, JavaScript, FastAPI(AI)
2. 핵심 기술적 도전과 해결 (Technical Challenges)
① Spring WebFlux를 이용한 비동기 논블로킹 파이프라인
여러 외부 API(주가, 뉴스 등)를 동시에 호출할 때 발생하는 병목 현상을 해결하기 위해 Spring WebFlux를 도입했습니다.
- Problem: 동기(Blocking) 호출 시 하나의 API 응답이 올 때까지 스레드가 대기하여 전체 응답 속도가 저하됨.
- Solution: WebClient와 Mono.zip을 활용해 병렬 데이터 처리를 구현, 전체 API 응답 시간을 획기적으로 단축.
💡 Tech Dictionary: 논블로킹(Non-blocking)이란? 호출된 함수가 자신의 작업을 마칠 때까지 제어권을 갖고 있는 것이 아니라, 호출한 쪽에게 즉시 제어권을 넘겨주어 다른 작업을 계속할 수 있게 하는 방식입니다.
② 대량 데이터 적재 최적화 (JPA Batch Insert)
2,500개 이상의 종목 정보를 DB에 초기 구축할 때 발생하는 성능 저하 문제를 해결했습니다.
- Problem: 낱개 INSERT 쿼리 발생으로 인한 네트워크 오버헤드 및 커넥션 풀 고갈.
- Solution: hibernate.jdbc.batch_size 설정을 통한 Batch Insert 적용.
- Result: 데이터 적재 시간을 기존 대비 약 90% 단축.
💡 Tech Dictionary: Batch Insert 여러 개의 SQL 문을 하나의 묶음으로 처리하여 DB 서버로 전송하는 방식입니다. 네트워크 왕복 횟수를 줄여 성능을 높입니다.
③ AI 응답 지연을 극복하는 UX 전략 (Smart Polling & Optimistic UI)
AI 답변 생성 시 발생하는 수 초간의 대기 시간을 사용자 경험(UX) 관점에서 풀어냈습니다.
- Smart Polling: 서버 부하를 줄이기 위해 setTimeout 기반의 제어형 폴링 구현.
- Optimistic UI: "관심 종목 추가" 시 DB 응답을 기다리지 않고 UI를 먼저 업데이트하여 즉각적인 반응성 제공.
💡 Tech Dictionary: 낙관적 UI(Optimistic UI) 서버의 응답이 성공할 것이라고 '낙관적으로' 가정하고, 클라이언트에서 먼저 UI를 변경하는 기법입니다. 네트워크 지연을 사용자가 체감하지 못하게 합니다.
3. 기술적 깊이 더하기 (Deep Dive)
금융 데이터 연산의 서버 사이드 위임
복잡한 기술적 지표(RSI, MACD) 계산을 프론트엔드가 아닌 백엔드에서 수행하도록 설계했습니다.
- 이유: 클라이언트의 연산 부하를 줄이고, 데이터의 신뢰성을 중앙에서 통제하기 위함.
- 라이브러리: ta4j (Technical Analysis for Java)를 활용해 정확한 수치 산출.
4. 회고 및 성장 포인트
이번 프로젝트를 통해 **'올라운더 엔지니어'**로서 시스템 전체의 흐름을 읽는 법을 배웠습니다.
- 성공: 데이터 적재 속도 90% 개선 및 비동기 통신을 통한 서버 효율화.
- 아쉬움: 실시간성을 위해 폴링 대신 WebSocket이나 SSE를 도입했다면 리소스를 더 아낄 수 있었을 것이라는 배움.
- 향후 계획: 인프라 영역(CI/CD) 및 더 깊은 AI 모델 서빙 구조 설계로 확장할 예정입니다.
💡 추가로 공부하면 좋은 질문들 (면접 예상 질문)
- WebFlux를 썼을 때의 단점은 없었나요? (R2DBC 등 논블로킹 DB 드라이버 이슈, 디버깅의 어려움 등)
- Race Condition을 어떻게 제어했나요? (본문에 언급된 DataIntegrityViolationException 핸들링에 대한 구체적 사례 준비)
- Local Storage와 DB의 데이터 정합성은 어떻게 유지했나요? (Dual-Write 전략의 한계와 해결책)
'면접 준비 > 포트폴리오' 카테고리의 다른 글
[Deep Dive] Spring WebFlux와 Optimistic UI: 기술적 한계를 넘어선 성능 최적화 (0) 2026.02.26 [Project Review] 성능 최적화를 위한 백엔드 분투기 (0) 2026.02.22 [기술 딥다이브]성능 최적화의 핵심 개념 정리 (0) 2026.02.22