Skip to content

0.1.0 (2025년 1월 16일)

Compare
Choose a tag to compare
@DongHoonYu96 DongHoonYu96 released this 16 Jan 08:44
· 56 commits to dev since this release
acddb84

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)하여 로컬 환경 및 배포 환경 모두에서 제대로 동작할 수 있게 수정했습니다.