쫑쫑이의 블로그

프로젝트 개인 회고 본문

공부/회고

프로젝트 개인 회고

쫑쫑2 2023. 2. 11. 23:48

프로젝트를 마치고 팀원들과 KPT 회고를 간단하게 진행하였고,

지금 할 회고는 팀 회고가 아닌 개인적인 회고이다

프로젝트 진행하면서 개인적으로 좋았던 부분, 문제가 있었던 부분, 고쳐야할 부분을 정리해보고자 한다

 

 

Keep

  • Geometry 타입 사용
    • Point 타입을 활용하여 지도에서 현위치 주변 음식점 검색 기능을 개발하였다. 사용자로부터 현위치 정보와, 지도 레벨에 따른 반경 값을 받아와서 반경보다 작은 값들을 받아오는 SQL문 작성으로 간단하게 해결할 수 있었다. 다른 팀 프로젝트에서 이 과정을 직접 계산한 코드를 봤는데... 아찔했다.
    • Point 타입만 사용하였지만 기술 발표를 준비하는 과정에서 다른 타입들과 함수들에 대해 공부하면서 가장 많이 배운 분야인 것 같다. 
    • 추가적으로 지도를 사용한 다른 팀들 기술 발표를 보면서 다양한 활용 방안을 생각해 볼 수 있는 계기가 됐다. 여행 추천 경로를 보여주는 서비스로 예를 들어보면 프론트엔드에서 서버로부터 위도와 경도 좌표를 받아와 직접 선으로 연결한 팀을 볼 수 있었다. 처음부터 LineString 타입으로 데이터를 담아서 추천 경로를 보여주고, 경로 길이도 DB에서 계산해서 보여줄 수 있지 않을까? 라는 생각을 해봤다.
  • Spring Webflux
    • Spring MVC가 아닌 비동기로 처리하는 Webflux를 사용했다. 비동기, 논 블로킹 방식으로 대용량 처리를 위해 서비스간 호출이 많은 마이크로 서비스 환경에 적합하다. 하지만 우리 프로젝트는 모놀리틱 서비스이므로 사용에 적절하지 않지만, 비동기적 처리를 위한 목적이 아니라 함수형으로 만드는 것만으로도 많은 공부가 됐다. 완벽하게 함수형 프로그래밍으로 했다곤 말할 순 없지만 확실히 많은 공부가 됐다.
  • 공공데이터 사용
    • 데이터 처리 과정에서 꽤나 많은 시간이 걸렸다. 공공데이터에서는 중부원점 TM 좌표계를 사용하고, 카카오맵 API에서는 WGS84 좌표계를 사용하여 좌표계 변환을 위해 좌표계 변환 라이브러리 proj4를 사용했으나 200m 정도 오차를 보여 카카오맵 API에 비동기처리하여 하루 30만개씩 68만개의 음식점 좌표를 변경했다. 약 5천개의 좌표만 있고, 주소와 우편번호가 없는 음식점도 좌표 기준으로 정보를 받아와 처리해줬다.
    • 좌표계와 관련된 공부를 많이 하게 됐다. (중부원점, 서부원점, 동부원점 등등)
  • PR 전에 코드리뷰
    • merge 하려면 다른 2명이 Approve를 해야만 가능하게 했다. 코드를 구현하면서 만났던 문제점, 해결과정 등을 공유하며 어떤 방식으로 돌아가는지 100% 이해했다면 거짓말이고 90%이상 이해하고 같이 문제 해결을 위해 노력했다는게 의미 있었던 것 같다
  • 스크럼 미팅
    • 매일 아침 짧게 스크럼 미팅을 했다. 프로젝트 초기 기획 단계에서는 의미가 없었지만, 팀원들이 높은 집중도를 보여줘서 모두 프로젝트가 어떻게 진행되고 있는지 이해도가 높아서 성공적으로 한 느낌이다. 중간에 멘토님이 사회자를 번갈아가면서 해보라고 조언을 주셔서 사다리타기 방식로 정했다. 팀원들의 참여를 유도하는 방법으로 꽤나 괜찮았던 방법이었던 것 같다. 

 

Problem

  • 조인
    • 팀원 모두 Dataclient 공식문서대로 했는데 바인딩이 안됐다. 문제점이 어딘지 파악 못해 임시방편으로 처리하여 블로킹 된다.
    • 팀원들이 맡은 파트 중 팔로우, 답글에 문제가 있고, 내가 맡은 파트는 평점에 문제가 있다.
  • 검색
    • 키워드로 음식점을 검색할 때 SQL문으로 주소, 이름, 카테고리에 키워드를 포함하고 있는지 체크 후 결과값을 클라이언트에 보내주기 때문에 시간이 오래걸린다. 음식점 데이터 5만개까지는 괜찮은데 10만개 이상 데이터에 요청보내면 이전 검색 값이 클라이언트로 전달된다. 포스트맨으로 요청 보낼 때는 정상적인 값이 온다. 프로젝트 마무리 시점에서 발견된 에러라서 문제점이 어딘지 파악 하지 못했다. 페이지네이션이 가장 의심이 간다.
    • 총 데이터가 68만개인데 검색 시간이 최소 2초정도로 오래걸리고, 히트율이 많이 떨어진다.
  • 배포
    • 배포를 일주일 남겨두고 진행했는데 https 인증서를 aws에서 승인 안해주고 프론트도 vercel을 사용하여 배포했다.

 

Try

  • 조인 문제 해결
  • 사용자 정보 받아오기 Annotation으로 변경하기
  • 코드 품질 향상 시키기
  • Elastic Search로 검색 역직렬화하기 (+ ELK 스택 모두 사용하기)
  • 도커 컨테이너로 서버, MySQL, Elastic Search 등 배포하기
  • 테스트
  • slack 알림 연동 spring boot에서 로그백 어팬더로 일정레벨 이상 에러 받아보기
  • 블로킹 체크 
  • CI / CD - Jenkins 사용 예정