Releases
v0.1.0
0.1.0 (2025년 1월 16일)
성능 개선
배치처리를 통한 서버초기화 성능개선
서버 초기화 시 주식데이터를 업데이트 하는 과정에서 수천 개의 쿼리가 실행되는 문제 발생,
배치 처리로 최적화
하여 서버 시작 시간을 90% 단축.
쿼리 튜닝
주식 조회수 기반 상위 N개 조회 쿼리 발생시 Full Table Scan을 하는 문제 발생,
order by 기준인 views 컬럼에 인덱스를 추가하여 index full scan으로 개선
추가 개선 예정
동시성점검
주식 조회수 증가 로직에서 manager.increment에 동시성 이슈가 있는지 test
UPDATE stock SET views = views + 1 WHERE id = ? 문은 원자적
으로 실행되므로 동시성 문제가 발생하지 않음
코드 품질 개선
ocp 원칙 적용
기존 주식 정렬 알고리즘에 동일한 코드가 반복되는 문제 발생,
주식 정렬 로직에 전략 패턴 적용
OCP 준수: 새로운 정렬 방식 추가 시 기존 코드 수정 없이 새로운 전략 클래스만 추가
request logger
개발시 어떤 요청이 들어오고 문제가 생겼는지 알기 힘들었던 문제발생,
모든 요청 정보를 로깅함으로써 로직파악에 도움, 디버깅 시간 절약
orm logger query plan
실행계획을 보려면 워크벤치등의 SQL 툴을 사용해야하는 불편함발생,
TypeORM 쿼리 실행 시 SQL 쿼리와 실행 계획을 가독성 있게 로깅
하는 CustomQueryLogger 구현
nGrinder 메인페이지 API 부하테스트 스크립트 추가
nGrinder를 사용해 부하테스트를 진행해보았습니다. 기존 프로젝트에서는 제한된 시간내에 프로젝트의 완성이 목표였다보니 부하테스트를 진행한 흔적이 없어, 부하테스를 진행해 현재 서버가 어느정도의 부하까지를 견딜 수 있는지 확인해 보았습니다.
메인페이지 입장에서 사용되는 API인 주식 정보, 코스닥, 코스피 정보, 유저 정보들로만 테스트를 진행해보았습니다.
가상 유저 99명으로 설정 후 3분동안 요청을 보냈을때 안정적으로 요청을 처리하는것을 확인할 수 있었습니다. 총 64,376
번의 테스트 에서 1
번의 에러만 발생했습니다.
배포 개선
main 브랜치에 대한 CI/CD 추가
기존에 사용하던 github workflow는 dev-be, dev-fe 브랜치에 대한 CI/CD 작업이었습니다.
현재 리팩토링 팀에서는 dev 브랜치를 개발 통합용 브랜치로 활용하고 있고, 배포의 경우 main 브랜치를 기준으로 이루어지기 때문에 main 브랜치에 대한 CI/CD workflow를 추가했습니다.
오류 수정
배포 환경에서 웹 소캣 연결 실패 문제 해결
기존 웹 소캣 연결의 경우 URL이 하드코딩 되어 있던 문제가 있었습니다.
URL을 설정 파일로 분리하여(VITE_WS_URL) 로컬 환경 및 배포 환경 모두에서 동작할 수 있도록 수정했습니다.
URL을 변경했음에도 배포 환경에서 웹 소캣 연결이 실패하는 현상이 발생했습니다.
배포 환경에서 프론트엔드 코드를 서빙하던 nginx 서버의 설정 파일에 웹 소캣 경로에 대한 설정을 추가하여 연결 실패 문제를 해결했습니다.
에러발생시 서버가 죽는 현상 수정
로깅용 인터셉터에서 error를 재발행해서 발생하는 문제
error를 조회, 출력만하도록 수정
FE에서도 Error router 추가하여 에러발생시 error페이지 렌더링
하도록 수정
구글 로그인 오류 해결
기존 구글 로그인의 경우 로컬 개발 환경에서는 제대로 동작하지 않는 문제가 있었습니다.
하드코딩 되어 있던 URL을 설정 파일로 분리(VITE_BASE_URL)하여 로컬 환경 및 배포 환경 모두에서 제대로 동작할 수 있게 수정했습니다.
You can’t perform that action at this time.