1. '오늘 뭐 먹지?'를 개발하게 된 계기
4학년 1학기 캡스톤디자인 프로젝트를 시작하기에 앞서 어떤 서비스를 만들지에 대해 고민했다. 현재 흔하게 존재하지 않으면서도, 사람들의 일상 속 고민을 덜어줄 수 있는 서비스를 제작하고 싶었다. 그러다 "메뉴 선정을 해결할 수 있는 서비스는 어떨까?"라는 생각이 스쳐갔다. 실제로 필자는 매일 하는 고민이기 때문이다.🤔 해당 아이디어를 팀원들에게 설명하기 위해 간단한 UI를 제작했다. 참고로 나는 디자인에는 정말 소질이 없다,, 팀원들이 이해할 수 있을 정도로만 제작했다는 점을 참고했으면 한다.
초기에 기획했던 서비스의 흐름은 채팅방 내에서 사용자들끼리 메뉴를 함께 고민하고, 투표를 하면 선정된 메뉴가 메인화면에 반영되는 것이었다. 이외에 메뉴 돌림판, 맛집 검색, 리뷰 작성, 레시피 등록 등의 기능을 구상했다. 팀원들에게 나의 아이디어를 계속 어필한 끝에 해당 서비스를 제작하기로 결정되었다.👏
2. '오늘 뭐 먹지?' 기능 구체화
하지만 주제제안서를 들고 교수님을 찾아뵈니 여러 서비스들에 있는 기능들을 합쳐놓은 것 같다는 피드백을 받았다. 또한 메뉴 선정에 대한 서비스인데 레시피 등록과 같은 기능은 연관성이 크게 없어보인다는 피드백도 받았다. 이후 기획했던 기능들을 다시 살펴보니 공감이 되어 고개를 끄덕이게 되었다. 따라서 차별화를 두기 위해 기능을 수정해야겠다는 생각이 들었다. 팀원들과의 회의를 통해 채팅 내에서는 메시지가 아닌 버튼을 통해 약속 등록/수정/삭제, 메뉴 투표 등록/수정/삭제만 할 수 있도록 결정했다. 또한 레시피 관련 기능을 삭제하고, 채팅에서 선정된 메뉴와 각 사용자들의 출발지를 토대로 리뷰/평점 기반 맛집 목록 및 경로를 반환하기로 결정했다.
3. 현재 프로젝트 상황
아래는 프로젝트 프로토타입의 일부이다. 2024년 03월 초부터 6월 초까지 약 3개월동안 진행되었다.
https://github.com/WhatShouldWeEatToday
오늘 뭐 먹지?
오늘 뭐 먹지? has 3 repositories available. Follow their code on GitHub.
github.com
기획했던 기능이 어느 정도 구현되었지만 아래와 같은 문제점이 있다.
현재 프로젝트 문제점
- 실사용자가 사용할만한 퀄리티인가?
- 구현되지 않은 기능이 존재함
- 구현된 기능도 불안정적임
- 유사한 서비스와의 경쟁력이 있는가?
- 주변 맛집 목록 및 경로 반환의 메리트가 크게 안 보임 → 기존 서비스들과 큰 차별화가 없음
- 서비스를 안정적으로 제공할 수 있는가?
- 프론트와 백엔드 간의 실시간 채팅 통신이 불안정 함
해당 서비스를 사용하는 사용자의 입장이 되어보았을 때, 의문점이 드는 부분이 많았다.
과연 일상 속 고민을 해결할 수 있는가?
일회성의 서비스가 되지 않겠는가?
사용하기에 편리한가?
해당 프로젝트는 초기 기획부터 시작했기에 애착이 있는 프로젝트다. 또한 새로운 프로젝트를 개발하기보다는 기존의 프로젝트를 개선하고, 런칭 및 유지보수까지 도전해본다면 나에게 좋은 경험과 자산이 될 것이라는 생각이 들었다. 따라서 이어서 개발 및 인프라 구축까지 도전해보려고 한다.
취업 준비를 하면서 부족함을 탓하며 외부적인 활동들(부트캠프, 연합동아리)에 더 초점을 맞췄던 것 같다. 물론 이러한 활동들도 나에게 좋은 경험이 되겠지만, 서류부터 면접까지 또 하나의 취준이 되는 것 같아 자꾸 망연자실하게 되었다. 따라서 나 자신에 초점을 맞추기로 했다. 나는 과연 성장했는가? 왜 프로그래밍을 하려고 하는가? 라는 질문을 계속해서 끊임없이 스스로 되물으며 이 시간들을 즐기고 싶다. 마인드셋을 하고나니 이번 프로젝트 개발이 더욱 기대가 된다. 앞으로 꾸준히 현 블로그에 트러블슈팅을 기록해보려 한다. 조금 더 동기부여가 되지 않을까 싶다. 함께 '오늘 뭐 먹지?'를 개발했던 팀원에게 'EatPick' 개발에 대한 동의도 구했다. 다행스럽게도 프론트를 맡았던 팀원 1명이 같이 하자는 제의를 먼저 주었다. 상반기 채용 직전인 2025년 2월까지 약 3개월 남짓의 시간동안 계획했던 일들을 모두 완료할 수 있길 바란다.
4. 'EatPick' 개발 도입기
우선 본격적인 개발에 들어가기에 앞서 기능 구현 전 선행 사항, 개선해야 할 기능, 새로 도입 할 기능, 인프라 구축, 서비스 런칭까지 섹션을 나눠 정리해보았다.
기능 구현 전 선행 사항
- 리팩토링
- 의미없는 주석 삭제
- 자바 컨벤션 및 클린 코드 반영
- 이후 단위테스트 및 통합테스트 작성
- 기능 목록 재설계
- ERD 재설계
- API 명세서 작성(기존 API 개선 및 API 추가) → Swagger 배포
개선해야 할 기능
- 채팅 연결 안정화
- 실시간 대화형 투표(메뉴, 시간, 장소를 정하기 위해 실시간 투표 기능 제공, 각 참여자가 옵션을 추가하거나 투표에 응답 가능하며, 자동으로 최종 선택 정리)
- 음식 선택 시 메인화면 반영 기능 구현
- 구미시가 아닌 서울시로 데이터 변경(데이터는 더 찾아봐야 함)
- 웹이 아닌 앱(안드로이드)으로 마이그레이션
새로 도입할 기능
- 개인화 추천 시스템
- 사용자가 이전에 선택한 메뉴/선호 지역/이용 시간대 등을 기반으로 맞춤형 맛집 추천 제공
- "매운 음식 좋아함", "채식주의자", "디저트 좋아함"과 같은 개인화 설정
- 리뷰 신뢰도 분석 및 필터링
- 주변 맛집 리뷰를 분석해 신뢰도 점수 제공(리뷰 작성 빈도, 후기 성실도, 중복 내용 제거 등 분석)
- "평균 별점이 높은 순" 외에도 "실제 사용자 피드백 기반 추천" 같은 옵션 추가
- 타임라인 기반 약속 관리 기능
- 채팅방 내에서 설정된 약속의 시간, 장소를 바탕으로 약속 타임라인 생성
- 바탕화면에 띄움
- 소셜 게임 기능
- 메뉴 선택을 위해 미니 게임(예: 돌림판, 주사위 게임)을 진행하며, 결과 공유 및 저장
- 다국어 지원 및 외국인 여행자 모드(해당 기능은 사용자가 어느 정도 확보될 경우 도입)
- 외국어 지원 추가
- 외국인 사용자를 위해 "한국에서 꼭 가봐야 할 음식점", "문화적 특색 고려한 추천" 기능 제공
인프라 구축
- CI/CD
- 무중단 배포
- 부하테스트
서비스 런칭
- 실사용자 피드백 받기
- 이후 지속적으로 개선
차별화 있는 서비스로 개선하기 위해 개인화 추천 시스템 및 리뷰 신뢰도 분석/필터링 기능을 도입하기로 결정했다. 해당 기능을 구현하기 위한 기술 스택은 아직 정하지 않았지만 아마도(?) Spring boot를 활용할 것 같다. 차근차근 한 단계씩 개선해나가보자!!
'Project > EatPick' 카테고리의 다른 글
[EatPick] 1. 프로젝트 생성 (1) | 2024.12.07 |
---|---|
[EatPick] 협업을 위한 Swagger 배포하기(1) (0) | 2024.11.28 |