𝙆𝙊𝙏𝙇𝙄𝙉 최종 프로젝트 마무리

2024. 8. 22. 15:53TIL

부트캠프 진행기간: 04/15~08/22

최종 프로젝트 진행기간: 07/12~08/22

 

팀명: Sober

팀 프로젝트명: WACHU

팀 프로젝트 소개: 와인 데이터를 종합해서 내가 선호하는 와인과 비슷한 와인을 추천해주는 서비스.

서비스 목표: 와인을 잘 모르는 사람, 와인을 좋아하는 사람 모두 자신에게 맞는 와인을 손쉽게 찾을 수 있도록 하고 와인 에 대한 정보들을 서로 공유하면서 새로운 정보를 알아갈 수 있는 그런 서비스를 목표로 하고 있습니다.

최종 프로젝트

https://sober-wachu.com/

 

Wachu

 

sober-wachu.com

 

GitHub

https://github.com/spartaKotlinTeamSober/wachu_server

 

GitHub - spartaKotlinTeamSober/wachu_server: 내일배움캠프 와인 추천 서비스 서버

내일배움캠프 와인 추천 서비스 서버. Contribute to spartaKotlinTeamSober/wachu_server development by creating an account on GitHub.

github.com

 

 

브로셔

https://www.notion.so/mobzz/c4932db0c8d94c4a8b117d154f9d14ed

 

와추 브로셔 | Notion

♠️ 아키텍쳐

mobzz.notion.site

 

 

 

 

최종 프로젝트에서 내가 맡은 기능

 

회원가입/로그인

  • 사용자가 로그인에 성공했을때 사용자의 user_id와 role의 정보를 담고 있는 JWT토큰을 발급 

소셜 로그인

  • 네이버와 카카오 소셜로그인을 구현하여 네이버와 카카오의 이메일 정보를 제공받아 사용자의 접근성을 증가시킴 (최 종 배포 단계에서는 네이버의 비즈앱 심사 문제로 인해서 카카오 소셜로그인만 가능하도록 설정함)

JWT 토큰 및 Refresth 토큰

  • XSS공격으로 인한 토큰 탈취 문제가 발생할 수 있기때문에 엑세스 토큰의 만료기간을 짧게(1시간)으로 설정하고 Refresh 토큰을 HttpOnly쿠키에 저장하도록 하였으며 CSRF 공격에 한해서는 기본적으로 LAX 설정으로 되어있지만 소셜 로그인에서는 SAMESITE 설정을 NONE으로 설정하고 HTTPS를 통해서만 쿠키가 전송이 되도록 secure(true) 설정을 하였음

멤버 도메인 CRUD

  • 기본적인 로그인,회원가입 CRUD 작성

와인 도메인 CRUD

  • 와인 리스트 조회, 2개의 와인 비교, 프로모션 와인 리스트 조회 CRUD 작성 

와인 검색+ 필터링 기능

  • 가격,산도,당도,타닌,타입 등의 값들을 인자로 받아 LIKE문으로 해당값에 맞는 와인을 검색

와인 프로모션 기능

  • 프로모션 와인의 엔티티 분리 및 admin 권한의 와인 프로모션 리스트 추가 기능

와인 프로모션 캐시 적용

  • 와인 프로모션 특성상 잦은 조회를 고려하여 Redis 캐시 적용 (프로모션 특성상 캐시의 유효기간을 30일로 적용, 프로모션이 추가되거나 삭제 될시 기존 캐시를 제거하여 데이터의 정합성 문제를 해결)

모니터링

  • EFK스택과 CloudWatch를 Grafana 툴을 이용하여 모니터링 (현재 서비스에서는 EFK 스택은 굳이 고려하지 않아도 된다고 판단하여 AWS의 CloudWatch만 사용하였으며 로드 벨런서, CPU, I/O 에대한 특정 수치가 초과할시 SLACK에 경고 알림이 발생하도록 구현)

 

최종프로젝트를 마무리하며

최종 프로젝트를 진행하면서 협업 부분에서는 이전까지와는 다르게 체계적으로 역할분담, 기능 구현이 이루어진 것같아서 매우 만족을 하였다. Github에서 우리가 진행해야한 issues들을 정리해 놓고 그러한 issues들을 하나 하나 해치워 나가는 방식이 조금씩 프로젝트가 완성이 되가고 있구나 라는 점을 상기시켜주었기 때문에 큰 불안함을 가지지 않았던 것 같다.

또한 각자가 맡은 부분에 대한 역할분담이 확실히 정해져있고 남아 있는 기능이 무엇이 있는지를 시각적으로도 확인할 수 있어 내가 이제 뭘해야 하지? 라는 고민의 시간이 필요가 없었던 것이 매우 좋았다.

역할 분담으로 각자 다른 기능을 맡았기 때문에 다른 팀원이 한 기능에 대해서는 잘 모르고 지나가거나 정책정 고민에 대해서 소통이 필요할 때 5분기록 보드를 활용해서 우리가 지금 어떤 기능에 대해서 고민하고 있고 해당 기능은 어떤 식으로 구현을 하였는지 등을 공유하였다.

5분기록보드를 활용하여 우리가 프로젝트를 하면서 어떤 점을 고민했는지 또 어떤 기능을 구현했는지 등을 틈틈이 기록했기 때문에 시간이 지나고 나서도 우리가 고민한 내용, 기능에 대해서 확인할 수 있었다.

그리고 SLACK을 통해서 다른사람들로부터 유저 피드백도 받아보면서 개발자의 입장이 아닌 서비스 이용객의 입장에서 우리의 서비스를 어떻게 바라보았는지를 알 수 있어서 너무 좋았다.

 

기능 구현에 몰두해서 프로젝트를 만들었는데 막상 사용자가 이용을 할때는 백엔드의 기능 뿐만 아니라 편의성 부분이나, 시각적인 부분, PC에서 접속했을때와 모바일로 접속했을 때의 비율 문제 등 사소하지만 사용자의 편의성에 크게 영향을 끼치는 그러한 영역들에 대한 부분에 대해서 피드백을 많이 받았다. 성능 문제에 대한 피드백이나, 추천 로직이나 프로모션 페이지 로딩이 발생할때 로딩 바 등에 대해서 피드백을 수용하여 적용하였다.

최종 프로젝트를 진행하면서 내가 무엇이 부족하고 어떤 점을 보완해야하는지에 대해 더 알 수 있는 프로젝트였다.

CS에 대한 지식이 많이 부족하다고 느꼈고 DB,SQL에서도 공부해야할 필요성을 느꼈다. 앞으로의 방향성은 CS, SQL을 공부하는것으로 목표를 잡고 공부를 할 예정이다.

'TIL' 카테고리의 다른 글

앞으로의 방향  (2) 2024.10.10
𝙎𝙌𝙇 (3)  (0) 2024.08.23
𝙎𝙌𝙇 (2)  (0) 2024.08.21
정규화 ,͎ 반정규화  (0) 2024.08.20
𝙎𝙌𝙇 (1)  (0) 2024.08.19