Project/ClassFlix

[ClassFlix] EP 14. 리팩토링과 성능최적화 - 3

  1. 리뷰수정기능개발 
  2. 리뷰삭제기능개발 
  3. 회원가입창에서 footer 크기조정 
  4. 리뷰등록 디자인 (입력부분가로로나열, 등록버튼 모양) 
  5. 사진등록기능
  6. 리팩토링
  7. 디자인다듬기
  8. 느낀점, 발전할점, 추가할점 정리하기

 

 

 

 

 

이슈

 

리팩토링 하기전에 어플리케이션을 한번 복잡하게 돌려보았습니다.

 

리뷰관련 2가지 이슈가 발생했습니다.

  1. 리뷰의 개수가 많아지면 리뷰삭제가 작동하지 않는다.
  2. 리뷰의 개수가 많아지면 리뷰수정,삭제시 강의에 별점반영이 안된다.

 

 

리뷰삭제 이슈 해결

리뷰삭제 작동문제는 JQuery에서 form 객체를 못읽는 문제가 있어서 Javascript의 getElementById로 폼객체를 가져와 submit하도록 수정했더니 정상동작했습니다.

 

 

 

리뷰 수정, 삭제시 별점반영 안되는 이슈 해결

성능문제를 위해 강의의 별점을 수정할 때 모든 리뷰를 더하고 리뷰개수로 나누지 않고, 추가되는 리뷰에 대한 계산만 실행했습니다.

그러나 개수가 적을때 별점이 정확하게 계산하는 것이 불가능했고 이에 대해서 성능과 정확도, 동작에 대한 타협점을 리뷰 100개로 정했습니다.

 

리뷰가 100개보다 적을땐 추가, 삭제, 수정시 그냥 모든 리뷰의 별점을 더하고 리뷰수로 나누고, 100개 이상일 경우에만 기존의 로직을 시행했습니다.

 

 

 

 

 

  1. 리뷰수정기능개발 
  2. 리뷰삭제기능개발 
  3. 회원가입창에서 footer 크기조정 
  4. 리뷰등록 디자인 (입력부분가로로나열, 등록버튼 모양) 
  5. 사진등록기능 
  6. 리팩토링 
  7. 디자인다듬기
  8. 느낀점, 발전할점, 추가할점 정리하기

 

 

 

 

회원등록폼이나 view design 수정은 심심할때마다 틈틈히 유지보수 하기로 결정했습니다.

 

 

  1. 리뷰수정기능개발 
  2. 리뷰삭제기능개발 
  3. 회원가입창에서 footer 크기조정 
  4. 리뷰등록 디자인 (입력부분가로로나열, 등록버튼 모양) 
  5. 사진등록기능 
  6. 리팩토링 
  7. 디자인다듬기
  8. 느낀점, 발전할점, 추가할점 정리하기

 

 

 

 

 

 

 

느낀점

 

처음으로 스스로 프로젝트를 기획하고 혼자서 프로젝트의 시작과 끝을 마무리 지어보았습니다.

 

제가 최종적으로 만들고자 하는 강의추천 서비스는 배달음식 먹고싶을때 배달의 민족을 찾는 것처럼, 듣고싶은 강의가 있을때 제 서비스를 먼저 찾게 하는 서비스입니다.

 

지금까지 진행한 프로젝트는 실제 제가 생각하는 강의추천서비스에는 한참 못미치는 프로젝트였지만, 진행해보면서 느끼는 것들이 많았습니다.

 

처음에 아무리 요구사항을 정리하고 시작했다고 해도 결국엔 중간중간 요구사항이 수정되었고, 개발을 하면서도 강의추천서비스 자체에 대한 방향도 자꾸 바뀌었습니다.

 

디자인이나 클라이언트 부분도 역시 전문가가 필요하다는 것을 깨달았습니다.

 

다음 프로젝트는 리뷰 기능이 빠지고 진짜 모든 강의를 모아놓은 사이트를 개발하는 것입니다. 실제 클라이언트 개발자와 restful api로 개발할 것입니다. 그 전에 다음 프로젝트에 대한 기획을 확실하게 해놓아서 최대한 요구사항이 바뀌지 않도록 통제하려고 합니다. 클라이언트 개발자와 협업할 것이기 때문에 웹 디자인도 제가 했던 것 보다는 훨씬 보기 좋아질 것이라고 기대합니다.

 

저는 그저 따라치는 프로젝트를 하지 않기 위해 강의에서 배우지 않은 기능들을 넣어보았습니다.

게시판의 댓글과 비슷한 리뷰기능, 사진이 업로드되고 바로 반영될 수 있도록 하는 기능 등이 있었습니다.

특히 사진업로드 기능은 구현하는데 3일, 테스트 코드짜는데 3일 걸렸습니다. 그래도 구현해내어서 재밌었고 다음에 쿠키와 세션을 도입해서 바로바로 반영될 수 있도록 구현하는 것을 기대하고있습니다.

 

이 프로젝트는 끝이 아닙니다.

 

  1. Spring Data JPA 리팩토링
  2. queryDSL 이용한 검색기능 도입
  3. Java8 문법으로 for문들 리팩토링
  4. 쿠키와 세션을 도입한 실제 회원가입기능
  5. 사용자와 관리자페이지 구분
  6. 강의삭제기능(연관된 리뷰들까지 삭제)
  7. 유투브 미리보기 강의 보여주기기능
  8. ...

아직 구현할 것이 남아있습니다.

실제 다음 프로젝트 하기전까지 할 수 있으면 좋겠지만 할 수 있는 것까지 해보고 다음프로젝트때 도입해야할 것들도 있을 것 같습니다.

 

 

이제 바로 다음 목표는

  1. 6월 둘째주 전까지 다음 프로젝트의 기획이 완료되어야합니다.
  2. Spring Data JPA 강의, querydsl강의도 시작해야합니다.
  3. 백기선님 Java스터디도 시작해야합니다.

사실 프로젝트를 마무리하는 듯한 느낌의 느낀점을 작성하는 것도 아직 해야할 것이 많기 때문에 프로젝트는 천천히 유지보수 하는것으로 하고 다시 학습에 몰두해야 하기 때문입니다.

 

 

그럼 이만