내일배움캠프 Spring 6기의 최종 프로젝트가 요번 주에 시작되었다.
우리 팀은 팀장인 나를 포함하여 다른 팀보다 1, 2명 많은 6명으로 구성되었다. 팀원 중 한 분이 요번 주 토요일에 결혼하시고 2주 동안 신혼여행을 가셨기 때문에 실질적으로 다른 팀과 인원 차이는 크게 다르지 않기는 하다.
- 프로젝트 주제: 우리 지금 만나(아 당장 만나)
- 프로젝트 요약: 프로젝트 한줄 요약 사용자가 쉽고 안전하게 소모임을 생성하고, 활발한 커뮤니티를 형성할 수 있도록 직관적인 사용자 경험과 신뢰 기반의 환경을 제공
같은 동네주민들끼리 특정 목적을 위해 소모임을 만들어 모이고 그 안에서 멤버들끼리 또 일정을 만들어 같이 만나 특정 활동을 공유할 수 있는 당근마켓의 동네생활의 모임
에서 아이디어를 많이 얻었다.
- 회원 가입 및 로그인
- 프로필 설정 : 사용자 관심사, 지역, MBTI, 이미지 등 프로필 정도 설정 및 수정
- 소모임 생성 : 사용자가 주제를 설정하고 소모임을 직접 생성할 수 있는 기능
- 소모임 참여 : 사용자가 소모임에 신청 및 참여할 수 있는 기능
- 소모임 참여 신청 수락, 거절
- 일정 생성
- 일정 참여 신청 수락, 거절
- 강제퇴장
- 소모임 검색(인덱싱)
- 인덱싱 : 검색 시 성능을 향상하기 위해 소모임의 주요 검색 필드(제목, 주제, 지역 등)에 대해 데이터베이스 인덱스를 적용.
- 동시성 제어 : 여러 사용자가 동시에 검색할 때, 캐시를 사용하여 데이터베이스 접근을 줄여 동시성 문제를 해결
- 소모임 관리
- 캐싱 : 자주 접근하는 소모임 정보(멤버 리스트, 게시글 목록 등)는 캐시에 저장하여 빠르게 조회 가능하도록 설정.
- 소모임 매칭(메시지(이벤트) 브로커, 동시성 제어)
- 캐싱 : 소모임 매칭 작업에서 추천 소모임 목록을 캐시에 저장하여 매칭 속도를 개선.
- 인덱싱 : 매칭 알고리즘에서 사용하는 주요 필드(사용자의 관심사, 지역 등)를 인덱싱하여 매칭 결과를 빠르게 제공.
- 매칭 요청이 다수 발생할 경우 큐 기반 처리를 통해 동시성을 관리하고, 여러 매칭 작업이 동시에 일어나더라도 서버 부하를 줄이며 안정적으로 처리할 수 있음.
- 캐싱 시스템 도입
- 자주 조회되거나 수정이 적은 데이터(소모임 리스트, 인기 소모임, 매칭 결과 등)를 캐시하여, 데이터베이스 부하를 줄이고 빠른 응답을 제공
- 데이터베이스 인덱싱
- 검색, 매칭, 관리 작업에서 성능을 개선하기 위해 소모임의
title
,location
같은 필드에 인덱싱을 적용하여 데이터베이스 조회 성능을 최적화.- 동시성 제어 및 락킹 전략
- 여러 사용자가 동시에 소모임 정보나 매칭 데이터를 수정할 경우 충돌을 방지하고, 중요한 수정 작업이 일어날 때는 데이터의 일관성을 보장할 수 있도록 락킹 메커니즘을 적용.
- 메세지 큐
- RabbitMQ, Kafka 등의 메시지 큐 시스템
- 매칭 작업이나 대규모 데이터 처리가 필요한 경우 메시지 큐를 사용해 요청을 비동기적으로 처리하고 서버 부하를 분산하며 락킹 전략으로 동시성 문제를 해결
- 여러 사용자가 동시에 매칭 요청을 보낼 때 성능 저하를 방지할 수 있음.
- 광고(수익 창출)
- 광고 제거(구독제: 수익 창출)
- 매칭 시스템(일대일 또는 다대다)(1순위)
- 날씨에 따라 추천되는 모임(노출도)
- 클래스(수업을 원하는 유저가 제안서를 업로드하면 튜터가 수업받고 싶은 유저를 선택해 매칭되는 방식)
ERD는 현재 필수 기능과 관련된 테이블만 추가되어 있어서 차후 프로젝트를 개발해나가면서 더 추가될 예정이다.
(크기가 작아서 잘 안 보일시 마우스 왼쪽 클릭 후 '새 탭에서 이미지 보기'로 확대하여 보시기를 권장합니다.)