1. 프로젝트 개요
본 프로젝트는 공공데이터 API를 활용해 금융위원회·거래소 지수 정보를 실시간 수집하고, Spring Boot 기반의 경량·고속 API 연동 도구로 최적화된 성능을 제공합니다. 나아가 직관적 대시보드에서 KOSPI·KOSDAQ·글로벌 인덱스 등 주요 지수의 실시간 변동을 그래프와 숫자로 시각화하고, 사용자 맞춤 알림 기능을 지원합니다.
2. 담당한 작업
자동연동 설정 관리
- {지수}와 {활성화} 정보를 가지고 모든 속성을 통해 지수를 비활성화하여 자동 연동 설정을 등록할 수 있다.
- {지수}와 {활성화}로 자동 연동 설정 목록을 조회할 수 있으며, 정렬 및 페이지네이션을 구현하여 목록을 커서를 내려서 조회할 수 있게 한다. 이 때, 목록에서 {활성화/비활성화} 전환이 가능해야한다.
- 활성화된 지수의 지수 데이터는 스케줄러를 통해 1일마다 주기적으로 업데이트되어야 하고, 연동할 {대상 날짜}는 마지막 자동 연동 작업 날짜부터 가장 최신 날짜까지로 한다.
3. 기술적 성과
Spring Scheduler라는 기술을 사용하여 만약에 공공데이터 API에서 새로운 지수가 등록이 되었거나 아니면 사용자가 새로운 지수를 등록하면 지수 목록에 등록된 지수가 나타나도록 구현하고 지수 목록에서 활성화버튼을 누르면 활성화된 해당 지수들의 데이터가 데이터베이스에 저장되도록 하는 기능을 구현하였다.
4. 문제점 및 해결 과정
Scheduler라는 기술의 개념을 처음 접하였었고 repository를 통해 DB에 집어넣은 데이터들이 전부 조회되지 않는 문제가 발생하였다. 정해진 시간에 특정 작업을 수행하는 Scheduler를 이해하기 위해 웹서칭, 유튜브 강의 시청, ChatGPT 등으로 조사를 진행하였고 DB에 데이터가 들어가지 않는 것은 우리가 원하는 테이블 명과 DB에서 만들어진 테이블 명이 다르다는 것을 발견하여 이를 해결하기 위해 테이블을 삭제 후 재 생성해보았으나 이전과 같이 우리가 원하는 것과는 다른 테이블 명이 생성되는 것을 알았고 이후 데이터베이스 자체를 삭제 후 DB를 재생성하여 테이블을 넣었을 때 우리가 원하는 테이블 명과 매칭이 되는 테이블명이 DB에서 생성되는 것을 확인하였습니다. 이후 데이터를 넣었을 때 데이터가 DB에 제대로 들어가는것을 확인하였습니다.
5. 협업 및 피드백
- 느낀점
- 매일 아침, 점심, 저녁으로 미팅을 통해 진행 상황과 남은 진행 상황, 이슈 들을 공유하니 막혔던 이슈를 빠르게 해결할 수 있었고 서로의 진행상황을 확인하게 되면서 저의 진행 속도에 대해 쉽게 파악할 수 있었습니다.
- 배운 점
- Git의 브랜치 전략 외에 PUSH, PR, Git을 통한 리뷰 등 Git 하나로 협업에 필요한 다양한 작업을 할 수 있다는 것을 배웠습니다.
- Spring Scheduler의 사용법(Scheduler의 속성인 fixedDelay와 fixedRate)에 대해 자세하게 이해할 수 있었습니다.
- 피드백
- 코드 컨벤션 문서를 조금 더 보수적으로 구체화시켜서 리뷰할 때 컨벤션문서의 기준에 충족하는가도 보았으면 좋았을거 같습니다.
- 이번 상황에서 발생한 문제들을 블로그 등에 기록해 두면 다음 프로젝트 개발 상황에서 도움이 될거 같습니다.
6. 코드 품질 및 최적화
비즈니스 도메인 별로 indexinfo, indexdata, integration 등 기능별 패키지를 구분해, 관련 클래스가 한곳에 모이도록 설계했다.
MapStruct를 활용해 매핑 계층을 분리하여 별도 매퍼 인터페이스로 분리했다. 로직이 서비스 코드에 섞이지 않아 가독성이 올라갔고 변경 시 한 곳만 수정할 수 있도록 했다.
복잡한 로직엔 간략한 설명을 추가하여 다른 팀원들이 제대로 이해할 수 있도록 만들었다.
7. 향후 개선 사항 및 제안
stream 등을 사용하여 코드의 가독성을 높이고 자동 연동된 지수 목록에서 사용자가 등록한 지수들이 목록의 최상단에 위치하여 보기 쉽도록 개선하고자 합니다.
리뷰 체크리스트(코딩 스타일, 예외 처리, 성능 고려사항 등)를 문서화하여 리뷰 품질을 일정하게 유지하고, 팀원들도 빠르게 적응하도록 돕도록 하고자 합니다.