[프로젝트] 동네방네

Kyungmin·2024년 5월 17일
0

Spring

목록 보기
18/39

약 6주간 FE 2명, BE 4명, 디자이너 1명으로 팀을 구성하여 프로젝트를 진행하였다. 나는 백엔드 파트와 팀장을 맡아 프로젝트를 진행하였다.

프로젝트 설명

동네 방네”는 줄어든 동네에 대한 애정, 주민들과의 유대감을 증대시키기 위한 서비스입니다.
동네방네는 "동네를 꾸며간다” 에 중점을 두었습니다. 요즘은 인스타 피드, 싸이월드 같이 본인의 무언가를 꾸미고 싶어하는 트렌드입니다. 이를 이용하여 자신의 동네에 주민 들만 알 수 있는 히든 맛집, 카페, 사진 스팟 등을 지도에 드랍하여 본인 동네가 점점 꾸며지는 모습을 볼 수 있고 소통을 통해본인 동네의 애정, 주민들과의 유대감을 키울 수 있습니다. 다른 지역 동네들과 비교를 통해 경쟁할 수 도 있습니다.

📎 링크

⭐️ GITHUB
⭐️ 브로셔

📝 프로젝트 개요

개발 기간 : 2024.03.26 ~ 2024.05.06 (약 6주)
파트 : 백엔드 (Spring)

🛠️ 맡은 기능 및 개선

  • 게시물 CRUD
  • 북마크 CRUD
  • 댓글 조회
  • 이메일 인증 구현

🤔 구현한 기능 왜 했어!?

1. QueryDSL

  • 게시물 관련 기능 및 동네소식 파트에서 QueryDSL 을 사용하게 되었다. 프로젝트상 여러가지 조건들을 필요로 하는 경우가 많았는데, 다양한 조건에 따라 데이터를 유연하게 동적으로 처리할 수 있도록 해야했다. 따라서 QueryDSL 을 사용하였다.

2. ElasticSearch

  • 메인페이지에서 게시물 내용을 바탕으로하는 검색기능을 구현하였다. JPA 로도 검색기능을 구현할 수 있지만 JPA 는 구조화된 데이터에 대한 검색에 강점을 가진다. 따라서 텍스트 분석 기능이 제한적이다. 하지만 ES 는 전문검색에 특화된 검색엔진이므로 다양한 검색 기능을 제공하기 때문에 ES 를 선택하였다.

3. Redis

  • 이메일 인증을 할 때 Redis 를 사용하였다. 그 이유는 Redis 는 인메모리 데이터 저장소로 읽기 및 쓰기가 매우 빠르다. 따라서 이메일 인증을 위해 생성되는 일회용 토큰의 경우, 일정기간 이후 만료되는 단기간 데이터이므로 Redis 의 TTL 기능을 이용하여 효율적을 관리하기 위해서 사용하였다.

4. Thumbnailator

  • 지도 페이지의 로딩 속도를 개선하기 위해서 이미지 리사이징 작업이 필요했고, 때문에 Thumbnailator 라이브러리를 사용하였다. Thumbnailator 를 선택한 이유는 그것이 이미지 처리에 있어 강력하고 사용하기 쉬운 도구이기 때문이다. 특히, 고성능의 이미지 리사이즈 기능을 제공하며, API가 직관적이어서 개발자가 쉽게 접근하고 사용할 수 있었다. 이 라이브러리는 이미지의 품질을 손상시키지 않으면서 크기를 조정할 수 있어, 웹 성능 최적화에 매우 유용하다고 판단하였다.

👍 아쉬운 점

  • 지도 페이지 로딩 문제를 해결하기 위해 작업을 시작한게 프로젝트 마감 일주일이 안남았을 때였다. 어떻게 보면 다른 기능들을 구현하느라 어쩔 수 없었던 부분도 있었지만 다시한번 생각해보면 시간분배를 더 잘했으면 시간적으로 여유있게 작업할 수 있었을 거라는 아쉬움도 남는다.
    Thumbnailator 라이브러리를 사용하여 이미지를 약 99% 이상 리사이징 하는데 성공하여 로딩 속도를 확실하게 개선하였지만, 더 좋은 방법을 찾아보고 적용해보고 싶다는 생각이 있다.
    하지만 이를 경험으로 삼아 후에 더 발전된 모습으로 프로젝트를 진행해봐야겠다.

👨🏻‍💻 마무리

  • 프로젝트를 진행하면서 처음으로 유저 피드백도 받아보면서 개발자로 성장하는데 조금 더 넓은 시야를 갖게 되었다. 또한 팀원이 되었을 때와 팀장이 되었을 때 해야할 일에 대해서 다는 아니어도 많은 것을 배운 프로젝트였다고 생각한다. 온라인이었지만 6주동안 매일 하루종일 열심히 프로젝트에 참여해준 팀원들에게 감사하며 마무리 ✌️
profile
Backend Developer

0개의 댓글

관련 채용 정보