두번째 협업으로 clone coding을 진행하였다.
클론코딩이란 실제 있는 서비스를 모방해서 기능들과 페이지를 직접 구현해보는 것을 클론코딩이라 한다.
우리는 트위터를 클론코딩하기로 했다. 프론트분들이 트위터에 대한 강의(노마드코더 니꼬쌤)가 있어 추천해주셨다.
백엔드에서 사실 기존 기능과 다르지 않기에 빠르게 구현했다. 더 많은 기능을 구현하고자 싶지만 프론트 단에서 부담감이 있기에 추가 기능을 진행하되, 프론트에 연결하지는 않고 또는 최대한 백엔드 성능 향상 위주의 기능들을 진행하기로 했다.
좋아요 기능, 소셜로그인 기능, 검색 기능을 추가 기능으로 잡았고 그 외 더 해보고 싶었던 에러 핸들러, 로깅 기능들을 진행했다.
먼저 좋아요 기능을 담당을 받았다.
DB의 게시글 테이블에 LikeCount 컬럼을 넣을 것이냐 말 것이냐로 고민을 했다.
LikeCount 컬럼을 넣을 시 좋아요 추가/삭제가 될 떄마다 좋아요 테이블 외에 게시글 테이블도 수정해줘야한다는 단점을 가지고 있다. 그러나 장점으로 게시글을 출력할 때, 좋아요를 카운트 할 때 likeCount컬럼이 없을 때보다 빠르다는 장점이 존재했다.
likeCount컬럼이 없을 경우 좋아요 추가/삭제할 때 좋아요 테이블에서만 추가/삭제가 되서 빠르지만, 게시글에 대해 출력할 때 좋아요 테이블 join과 좋아요 갯수를 체크해줄 Count 쿼리문을 진행시켜야되기 때문에 출력 시 오래 걸린다는 단점이 있다. 이는 데이터가 소량일 시 문제가 없지만 점차 데이터가 커질수록 느려진다는 단점이 존재한다. 또한 기능 추가(예를 들어 좋아요 순위별로 출력) 시 편리함을 위해 likeCount컬럼을 생성해 좋아요가 업데이트 될 때마다 likeCount컬럼에 업데이트하도록 수정했다.
에러 핸들러와 로깅 기능은 더 해보고 싶었기에,
에러 핸들러는 미들웨어를 만들어 모든 에러들이 미들웨어를 거쳐 response 하도록 진행했다. 모든 에러를 미들웨어 하나로 관리하므로 에러를 체크하고 로깅하는 것이 편하다. 또한 요즘 주에 200만회를 쓰고 있는 @hapi/boom 라이브러리를 사용하여 우리가 지정한 에러들을 커스텀하도록 했다. 실제 resepone에 보내지는 에러는 해킹의 위험을 방지하고자 간단하게 출력해줬고 실제 백엔드에서 볼 수 있는 에러를 자세하게 작성했다.
로깅은 morgan 라이브러리가 있지만 항해 99의 최종프로젝트에서 winston라이브러리를 많이 쓴 것을 참고하여 winston으로 진행해보았다. 처음에 morgan으로 로깅기능이 간단하게 구현되 있는 것을 winston lib으로 req에 대한 로깅, 에러에 대한 로깅을 뽑아 로컬에 저장하도록 진행했다. 모든 res를 출력하지 않아 완벽하다 할 순 없다.
최종 프로젝트에서는 실제 데이터가 저장되어 어떤 유저가 어떤 것을 썻고 언제 썼는지를 파악할 수 있는 로깅을 하여 데이터 분석을 쉽게 해줄 수 있게 해보고 싶다.
'항해99 > WIL' 카테고리의 다른 글
[항해 99] WIL 6주차 - 첫 협업(잘 못했던 점...) (0) | 2022.08.21 |
---|---|
[항해 99] WIL 5주차 (0) | 2022.08.14 |
[항해 99] WIL 4주차 - 주특기 숙련, 주특기 심 (후기) (0) | 2022.08.07 |
[항해 99] WIL 3주차 - 주특기 입문, 주특기 숙련 (후기) (0) | 2022.07.31 |
[항해 99] WIL 2주차 - 알고리즘, 주특기 입문 (후기) (0) | 2022.07.24 |
댓글