반응형
프로젝트 설명
- 취향에 맞는 술 정보와 모임을 한 번에 공유하는 SNS
프로젝트를 통해 배운 점
- JPA + Spring Data Jpa
- Entity <-> DTO 변환 이유
- DTO는 데이터 전송을 위한 것 Entity에서 유저에게 공개되면 안되는 데이터(Created_At 등)을 제외하고 보내주자
- 용도에 따라 DTO는 수십가지로 나뉘어질 수 있으나
- Builder패턴 적용, ModelMapper, MapStructure 등의 방법이 있고 이번 프로젝트에선 Builder, ModelMapper 사용(ModelMapper는 속도가 다소 떨어진다는 단점이 있었다)
- SSE 알림 구현
- FCM(Firebase Cloud Message)도 있었으나, '알림 클릭 시 특정 URL로 이동'과 같은 Custom Event를 등록할 수 없어서 Java의 Emitter 클래스를 사용하는 방식으로 채용
- SSE도 HTTP 메세지지만, TCP/IP 방식 위에서 실행 된다고 한다. 고로 Polling 보단 속도, 오버헤드가 적고, WebSocket은 양방향인 방면 SSE는 서버 -> 클라이언트에게만 알림을 주면 되므로 효율적
- WebSocket 채팅구현
- 관통 프로젝트 때 WebSocket채팅을 구현했지만 방생성 등은 고려하지 않음 + RDB에 직접 삽입하는 방식으로 했는데 비효율적이라 MongoDB같은 NoSQL에 메세지는 삽입 삭제 하는 형태로 반영
- 개인 채팅방을 만들 때, MemberId1, MemberId2를 가진 방이 있는지 체크
-> 없으면 생성
-> 있으면 접속 과 같은 로직을 구현하기 위해 DB를 많이 수정했다... 자세한 스토리는 추후
- For문이 아닌 Stream 사용해보기
- 알잘딱깔센하게 쓰는 것은 아니지만 filter(), map(), collect()는 사용할 수 있다!
- Optional을 익히다
- if와 null을 이용한 예외처리 -> Optional의 isPresent(), get() -> orElseThrow(), orElse() 등 코드를 리팩토링 하면서 Optional에 익숙해지고자 함
- @ModelAttribute VS @RequestBody 구분
- Json, XML vs FormData
- @Component vs @Configuration 구분
- 다시 한 번 느낀 기획의 중요성
- 어느 순간 부터 폭포수가 아닌 에자일로 변화면서 계속 기획이 바뀜... 다들 머릿속에 그리는 이미지가 얼추 맞았다! 해서 개발에 돌입하는것이 아닌, 머릿속에 그리는 이미지가 정확해야한다!! 는 것을 배웠다. 물론 노션을 통해 협업했지만.. 마음이 급해서 그랬을까
- 리팩토링과 코드리뷰의 중요성
- 이번 프로젝트에서 이렇게 많은 것을 배울 수 있엇던 이유는 함께 팀을한 YK가 있었기 때문.. 적극적인 코드리뷰 넘 고마웠어
- (다른 팀의 후기)Redis를 사용할 때 비밀번호를 반드시 설정하자
- 비밀번호 미 설정시, 크롤링 봇이 돌면서 데이터를 전부 다 삭제하는 경우가 있다고 한다. 주의 또, 주의
배운것 요약(인성)
- 배운 것은 많지만 이뤄낸 것은 없어 아쉬웠다..(수상 못함ㅠ)
- 편하게 이뤄내려는 마인드 버리기 어렵게 가자 (고통 == 성장)
- 서비스 홍보할 때 insta나 웹페이지 적극 활용해보기
반응형