Skip to content

jinsu868/MealPick

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

실시간 음식 랭킹, 음식 저장 및 공유 SNS 서비스

프로젝트 소개

실시간으로 다른 사람이 어떤 음식을 먹고 있는지, 그리고 내가 먹은 음식을 다른 사람과 공유할 수 있습니다. 팔로우/팔로잉 기능을 제공하며 다른 사람과 채팅이 가능합니다.

시스템 아키텍처

2025-03-09_14-19-43

기여한 부분

음식 랭킹 기능 구현

rank

실시간으로 다른 사람이 어떤 음식을 많이 먹고 있는지 확인할 수 있습니다. WebSocket과 Redis의 SortedSet 자료형을 활용하여 실시간 태그 랭킹 정보를 보여줍니다.

게시글 생성 시 태그 음식 갱신

2025-03-08_19-09-05

코드

2025-03-08_18-09-39

처음에는 subscriber에서 각각 조회해서 응답해주는 구조였는데 publisher에서 한 번 조회해서 넘겨주는 방식으로 변경했습니다.

실시간 채팅 기능 구현

WebSocket 기술을 활용하여 실시간 채팅 기능을 구현했습니다.

전체 플로우

2025-03-08_20-29-27

코드

2025-03-08_20-26-43

현재 Consumer에서 Relay 전파를 할 때 별도의 스레드 풀을 생성하고 각 스레드에 RestTemplate으로 동기 I/O 방식으로 처리하고 있습니다. 이 경우 요청의 개수가 많아지면 스레드가 부족해지고 처리가 지연될 수 있습니다.

추후 개선 방안) WebClient를 사용하여 I/O Multiplexing으로 처리하면 더 적은 스레드 수로 처리량을 높일 수 있습니다.

채팅 관련 아키텍처 고민은 아래 링크에서 확인할 수 있습니다. #3

프로젝트 기술 스택

Backend

기술 스택






Frontend

  • DataBinding, MVVM
  • Tailwind React Redux WebSocket PWA
  • Firebase Analytics FCM, Kakao sdk

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages