본문 바로가기

AND8

[신투 프디아] 시원섭섭한 최종 프로젝트 회고✏️ 드디어 프디아 최종 프로젝트가 막을 내렸다.잊기 전에 프로젝트를 진행하며 신경썼던 부분에 대해 기록해 놓으려 한다✏️ 프로젝트 개요 🔔우리 프로젝트는 사용자가 설정한 주식 지표값들을 조합하여 의미 있는 알림을 주는 앱이다.기존 서비스들은 단순히 하나의 지표에 대한 알림만 제공하는데 우리의 차별점은 세부적인 커스텀 조합이 가능하다는 점이다. 기획을 진행하며... 💭프로젝트 내내 우리팀은 사용자 입장에서의 고민을 정말 많이 했다.어떤 지표값들을 넣을건지, 카테고리를 어떻게 나눌 것인지, 프리셋에 어떤 지표들을 넣는 게 맞는건지, 차트에 몇 분봉 단위로 보여줄지 같은 고민도 많이 하고, 그에 따라 디자인적으로도 오래 고민하고 수정을 거듭했다. 무엇보다 많~은 지표값들을 어떻게 복잡하지않게 보여줄건지가.. 2025. 10. 27.
[신투 프디아] 맞춤 조건에 맞는 기업 찾기! 이 글은 알파코에서 진행되는 [신한투자증권] 프로디지털아카데미 과정 중, 김송아 강사님과 함께하는 '파이널 프로젝트'를 기반으로 작성되었습니다 조건 탐지 로직은 이번 프로젝트의 핵심 기능 중 하나이다.주식 데이터가 실시간으로 들어오면, 각 사용자의 알림 조건이 충족되는지 평가하고 필요할 때 즉시 알림을 보내야 한다.그래서 이걸 완전 자동화하려고 스케줄러 기반의 조건 탐지 시스템을 구현했다. 스케줄러 흐름현재는 @Scheduled(cron = "0 * * * * *")으로 매분 실행되며 아래 과정을 순차적으로 수행한다. 조건형 알림 전체 조회현재 감시 중인 조건형 알림만 가져온다.해당 알림이 감시 중인 종목 리스트 조회각 알림이 어떤 종목을 모니터링 중인지 확인한다.종목별 조건 평가Redis에서 종목 .. 2025. 10. 17.
[신투 프디아] 실시간성과 안정성의 균형 맞추기 (Redis, MySQL) 이 글은 알파코에서 진행되는 [신한투자증권] 프로디지털아카데미 과정 중, 김송아 강사님과 함께하는 '파이널 프로젝트'를 기반으로 작성되었습니다 그동안의 프로젝트엔 모든 데이터를 MySQL에 넣고 조회하는 구조였다.그런데 조건 탐지 로직이 매분 단위로 20개 종목 * 42개 조건을 검증해야 하는 상황이었기 때문에 DB 쿼리가 감당이 안됐다. 조회 속도가 밀리면 실시간 알림의 의미가 없어지기 때문이다. 그래서 Redis를 도입했다.자주 바뀌는 데이터는 Redis, 하루에 한 번 바뀌는 데이터는 MySQL이라는 원칙을 만들었다. Redis를 도입한 이유Redis는 사실 속도 때문만이 아니라 역할 분리를 위해 도입했다.1분마다 바뀌는 데이터는 캐시로서 빠르게 갱신1일 단위 데이터는 하루 한 번만 MySQ.. 2025. 10. 17.
[신투 프디아] 조건 탐지의 시작 - 44개의 지표를 코드로 옮기다 이 글은 알파코에서 진행되는 [신한투자증권] 프로디지털아카데미 과정 중, 김송아 강사님과 함께하는 '파이널 프로젝트'를 기반으로 작성되었습니다우리 프로젝트의 키포인트는 같은 카테고리끼리는 or, 각각의 카테고리 끼리는 and로 처리돼서 울리는 것이다.42개(시가, 종가 알림 제외)의 조건들을 모두 if-else로 다 처리하는 건 본능적으로 아니라고 느껴졌다.. 그래서 모든 조건을 컴포넌트 단위로 분리했다.인터페이스를 통해 공통 형태를 묶고, 각 조건은 어노테이션으로 매핑되게 하여 팩토리가 자동으로 등록하고 찾아주는 구조이다. 덕분에 BOLLINGER_LOWER_TOUCH 같은 조건이 들어오면 자동으로 해당 evaluator(조건탐지기)가 선택돼서 실행된다. 구조를 이렇게 짠 이유1. 조건 추가.. 2025. 10. 17.
[신투 프디아] 파이널 프로젝트 - 금융 데이터 가져오기! 이 글은 알파코에서 진행되는 [신한투자증권] 프로디지털아카데미 과정 중, 김송아 강사님과 함께하는 '파이널 프로젝트'를 기반으로 작성되었습니다 본격적인 백엔드 개발에 들어갔다! 필요한 지표값 정리우리 프로젝트에서 다루게 될 주요 지표값들을 정리했다.데이터는 한국투자증권 API를 활용하여 app key, app secret, token을 통해 가져왔다. 1분마다 필요한 데이터현재가누적 거래량전날 종가 거래량 대비 백분율(%)시가 대비 변동액(원)시가 대비 변동액(%)52주 최고가 대비 변동액(%)52주 최저가 대비 변동액(%)이 중에서 직접 계산이 필요한 항목(밑줄)을 제외하면, 현재가와 누적 거래량만 API로 주기적으로 가져오면 된다. 👉 사용 API:/uapi/domestic-stock/.. 2025. 10. 2.
[신투 프디아] 파이널 프로젝트 - 백엔드 패키지 설계 의도(with. DDD) 이 글은 알파코에서 진행되는 [신한투자증권] 프로디지털아카데미 과정 중, 김송아 강사님과 함께하는 '파이널 프로젝트'를 기반으로 작성되었습니다 💭 회고 – 백엔드 패키지 DDD 설계이번 프로젝트에서는 백엔드 아키텍처 설계를 맡으며 DDD(Domain-Driven Design) 방식으로 설계했다.처음에는 익숙한 controller/service/repository 형태로만 나눠도 된다고 생각했지만 알림/유저/데이터 수집 등 도메인이 다양하게 얽히면서 책임 구분이 필요하다고 느꼈다. 모듈 단위 설계우리는 처음부터 MSA를 염두에 두고, 서비스의 성격에 맞게 모듈을 나눴다.Sprint Boot ├─ alert-module ├─ data-process-module ├─ trade-module └─ use.. 2025. 9. 26.