20240112 (금) 뉴스피드프로젝트 개발 마루리 및 발표 대본 작성

2024. 1. 12. 21:13TIL

오늘은 뉴스피드 프로젝트의 개발을 마무리 짓고 발표대본을 작성했다.

발표는 내가 맡아서 할것이다.

아래는 발표 대본이다.

 

 

안녕하세요 B05조 발표를 맡은 이시원 입니다.
저희 조는 간단하게 내 게시물을 포함한 모든 게시물을 볼수있는 공간 만들기를 목표로 코딩을 했고,
스텝2까지 만드는것을 목표로 했습니다.
필수 구현 기능으로 뉴스피드 메인페이지 조회, 피드 게시글 상세페이지 조회, 수정과 삭제
댓글 CRUD 기능이 있고
이후엔 추가 구현으로 회원가입, 로그인, 로그아웃, 인가기능, 프로필관리, 좋아요 기능을 구현하고자 했습니다.
(가볍게 와이어프레임, ERD를 보여주며)
여기는 저희가 개발과정에서 만든 와이어프레임과 ERD 입니다.
그러면 직접 시연해보겠습니다.
(시연은 시간관계상 필수구현보다는 추가구현 기능쪽으로)
일단 저희가 회원가입기능을 만들었다고 소개드렸는데요.
보시는 바와 같이 사인업 api를 통해서 email과 nickname, password를 입력하면 
비밀번호는 암호화를 해서 반환해주고있습니다.
이제 여기 적힌 이메일과 회원가입시 적은 비밀번호를 입력해서 로그인을 하면
토큰이 생성되는데 이 토큰을 오른쪽위  Authorize 에 입력해주면 로그인이 완료됩니다.
만약에 이 로그인이 완료되지 않았다면 포스트기능과 댓글 기능이 이런식으로 막히게 됩니다.
아까 받았던 토큰을 Authorize 에 입력해준다면 같은 작업을 해도 정상적으로 작동이 되는것을 확인할수 있습니다.
이제 여기다가 댓글을 하나 달아볼건데요 (댓글 달기) 이것도 정상적으로 작동이 되는것을 볼수 있고
(게시글 목록 조회)
또 제가 작성한 게시글이나 댓글이 아니면 수정과 삭제가 불가능합니다.
(다른 테스트 게시글 삭제 시도후 예외처리 확인 후에 내가 작성한 게시글 삭제)
이후엔 좋아요 기능을 설명하겠습니다.
제가 작성한 게시글에는 이런식으로 좋아요가 달리지 않고 다른 게시글에만 좋아요가 가능합니다
(좋아요 조회로 게시글 좋아요 갯수를 보여주기)
그리고 좋아요를 취소하게된다면 좋아요 갯수도 바뀌는것을 볼수 있습니다.
------이어서 코딩하다가 어려웠던 점------
저희는 깃허브를 최대한 이용해봤는데
깃허브를 이용해서 협업을 하다가 생긴 이슈들을 적어 봤습니다.
먼저 ModelNotFoundException postId 타입 에러입니다.
깃헙을 이용해 코드를 병합하고서 테스트해보는 중 ModelNotFoundException객체 생성에 에러가 있었습니다.
ModelNotFoundException의 id 인자는 Long으로 되어 있고,
일부 Service에서 객체 생성 시에는 Int형으로 넘겨주어서 일어나는 에러로 보였습니다.
일반적으로 id의 경우 범위가 42억인 Int형으로는 부족할 수 있기 때문에 Long으로 많이 쓰이는데,
저희 프로젝트에서는 Int로도 충분할 거라 판단해 Int로 id를 생성했었습니다.
이에 대해 id를 Int나 Long 중 하나로 통일 할 필요가 있었는데
결과적으로는 저희의 프로젝트 규모상으로도, ERD 상으로도 Int가 맞을것 같아서 결국 Id값은 Int로 통일하기로 하였습니다.
두번째로는 JWT Token에서 userId get하는 방식이 있습니다.
시연때 보여드린 것처럼 저희는 로그인한 유저가 남긴 게시글이나 댓글에는 자동으로 userId가 남도록 코딩하였는데,
처음 작성한 코드에서 JWT 토큰에는 userId 값이 남아있지 않던게 문제였습니다.
그래서 생각한 해결법이
첫번째 security.core.userdetails의User 객체가 아닌 User 도메인의 User클래스로 바로 받아올 수 있게 수정.
두번째 userdetails의User 객체를 그대로 사용하고 프로퍼티 중 하나에 userId 값을 입력.
세번째 현재 코드를 유지하고 받아온 객체의 email을 이용해 userId 값을 db에서 조회.
가 나왔습니다.
팀원끼리 의견을 나눠본 결과
첫번째 방식의 경우 스프링 시큐리티에서 저런 기능을 제공하는지 알아봐야 하고 또, 개발 복잡성이 늘어날 것 같고,
세번째 방식은 db조회가 한번 더 이뤄져야 하는게 단점일 것 같아서
저희는 두번째 방식인 프로퍼티 중 하나에 userId 값을 입력하는 방식을 선택했습니다.
-----팀원 소개 및 소감-----
이어서 팀원 소개 및 소감입니다.
변무훈 - 댓글 생성, 삭제, 수정, 조회
소감 : 혼자서만 할 수 없는 팀프로젝트의 중요성을 깨달았습니다!
윤승환 - 프로필 수정, 조회, 좋아요 기능, 좋아요 취소 기능
소감 : kotlin spring은 처음이라 어려울 것 같았는데, 좋은 팀원들과 함께해서 많이 배우면서 할 수 있었습니다!
류영우 - 회원가입, 이메일 인증, 로그인, 로그아웃
소감 : 팀 프로젝트를 하면서 새로운 내용을 많이 배웠습니다.
이시원 - 게시글 생성, 삭제, 수정, 조회
소감 : 좋은분들께 새로운 코드들을 배울수 있어서 감사했습니다!

 

생각보다 시연부분이 시간을 많이 잡아먹어서 소감부분은 가볍게 1분정도를 넘기지 않을정도로 해야한다.

 

오늘의 한마디 : 다음주 월요일이면 발표인데 잘해봐야겠다.