2023년, 2학기, 공개SW프로젝트, 01분반, Idle팀, 3조
임주혁 | 이종혁 | 박주현 | 임현석 |
---|---|---|---|
2019112406 | 2019112421 | 2021113404 | 2019112058 |
[email protected] | [email protected] | [email protected] | [email protected] |
본 프로젝트는 2023-1학기의 ‘동국대 학생들끼리 먹고 싶은 음식을 같이 주문하여, 배달비 부담을 줄여주는 배달 음식 공동 구매 앱 DeliShare’을
바탕으로 주제를 선정하였다. 본 프로젝트의 주제를 살펴보면, 주요 기능은 동국대학교 주변의 음식점을 대상으로 하여, 유저가 선호하는 음식점을
위주로 사람을 3명씩 매칭하여 채팅방을 생성하고, 공동 구매를 할수 있도록 하는데 목표가 있다.
20대의 주 1회 이상 배달 음식 주문 비율은 약 69%에 달하는데 비해 최근 배달비는 지속적으로 상승하는 점을 문제로 삼고 문제해결을 목표로 한다.
프로젝트의 결과물을 통해 동국대 학생들의 배달비 부담을 줄일 수 있다.
-
권한 설정 Firebase Authentication을 사용하여 회원 가입과 로그인을 구현하였지만, 앱 내에서 특정 기능에 대한 권한을 부여하지 않았다. 이에 따라 JWT(JSON Web Token) 방식의 회원가입과 로그인을 구현하여, 토큰을 발급하고 인증하는 방식으로 앱 내에서 권한을 설정했다.
-
매칭 알고리즘 ver.1 개일-섀플리 알고리즘은 이미 많이 사용되는 안정적인 알고리즘이기에, 매칭 알고리즘 자체를 수정하기보다는 기존 프로젝트가 개일-섀플리 알고리즘을 통해 매칭을 수행하기 위한 조건을 맞추려는 목적의 선호도 테이블 생성하는 함수 부분은 기존 프로젝트에서 임의로 생성한 것이므로 이 부분을 수정하는 것이 합리적이라고 생각했고, 이에 따라 서로의 브랜드를 비교하기 위한 반복문을 교집합을 확인하는 방법으로 수정했다. 또 한, 선호도를 기반으로 매칭을 수행하는 matching 함수 부분에도 매칭하기 전 사용자들이 매칭 한 후 사용자들을 모으는 finishList에 포함되어있는지를 확인하는 부분에 finishList를 배열에서 Bloom Filter를 사용하면 효과적일 것이라고 생각하여 자료구조의 교체를 진행했다.
-
매칭 알고리즘 ver.2 위와 같은 선호도 테이블 생성 + 매칭과 같은 일련의 과정이 상당히 복잡하다고 생각하여 고안해낸 방법이다. 사용자들이 매칭을 시작하게 되면, 해당 사용자가 고른 브랜드 3개 전부 대기열을 생성하고, 그 대기열이 이미 생성되어 있으면, 그 대기열에 해당 사용자를 삽입하는 방식이다. 이에 특정 브랜드 큐에 3명이 삽입되면 3명을 pop 해내어 매칭을 완료하는 방식이다. 단순히 큐만 생성하고 사용자의 삽입과 삭제만을 구현하면 되기 때문에 아주 간단하고 속도의 향상도 기대할 수 있지만, 모든 브랜드에 대한 대기열의 생성으로 인해 많은 메모리 사용량도 예상했던 방식이다.
- Jmeter를 통해서 매칭 알고리즘이 있는 로직의 응답 시간을 비교한다.
- 매칭 알고리즘의 응답시간을 최소 응답 시간, 최대 응답 시간 그리고 평균 응답 시간을 N명에 대해서 측정한다.
단위: ms
N=1000 | 최대 응답 시간 | 최소 응답 시간 | 평균 응답 시간 |
---|---|---|---|
기존 | 3452 | 141 | 1757.113 |
개선 | 359 | 0 | 66 |
N=2000 | 최대 응답 시간 | 최소 응답 시간 | 평균 응답 시간 |
---|---|---|---|
기존 | 4234 | 161 | 1733.48 |
개선 | 442 | 0 | 90 |
N=3000 | 최대 응답 시간 | 최소 응답 시간 | 평균 응답 시간 |
---|---|---|---|
기존 | 3390 | 128 | 1744.265 |
개선 | 382 | 0 | 89 |
로그인
회원가입
카테고리 선택
매장 선택
매칭 로딩
매칭 성공
채팅
리뷰