Hyun's Wonderwall

[Mooney] 졸업프로젝트 스타트 - 백엔드 ERD 설계 본문

Study/Java, Spring

[Mooney] 졸업프로젝트 스타트 - 백엔드 ERD 설계

Hyun_! 2024. 11. 26. 23:59
2024-2학기 이화여자대학교 컴퓨터공학과 졸업프로젝트 '캡스톤디자인과창업프로젝트A (01)' 스타트를 진행하며 작성한 글입니다.

 

3학년 2학기째인 이번 학기에 졸업 프로젝트를 시작했습니다. 저는 현재까지 백엔드 개발, UI/UX 디자인을 주로 담당하였는데, 방학 때는 AI도 조금 더 참여하게 될 것 같습니다.

 

 

Mooney(무니)는 개인 일정 및 소비 특성 기반 밀착 관리 가계부 서비스로, 예산 설정과 지출 관리에 어려움을 겪는 사회 초년생을 타깃으로 합니다.

팀원들 모두 다양한 이유로 지출 관리와 금융 습관 형성에 대한 니즈를 가지고 있었기에 이와 같은 서비스를 기획하게 되었습니다. 저 같은 경우 평소 예산을 아예 수립하지 않아서 돈 관리가 잘 되지 않는 편이었는데, 서비스 기획을 위해 자료 조사를 진행하며 스스로의 소비 특성을 파악하고 예산을 관리하는 것이 정말 중요하다는 것을 깨닫게 되었습니다. 이 프로젝트 경험이 저의 지출 관리 능력 향상에 도움이 될 것 같습니다😄



개발 기술 스택은 아래와 같습니다. 

  • Front-End(App) : Flutter
  • Back-End : SpringBoot 3.3.4, Java 21, JWT 0.11.5, AWS VPC, AWS EC2(Ubuntu), Nginx 1.24.0, Docker 27.1.2, Docker Compose 2.29.2, GitHub Actions
  • Database : AWS RDS(MySQL 8.0.35), Redis 7.4.0
  • AI API : OpenAI GPT API(GPT-4o mini)
  • 캘린더 API : Google Calendar API(v3)
  • 푸시 알림 : Firebase Cloud Messaging(HTTP v1)

 

스타트 최종 발표를 준비하면서는 아래와 같이 주요 기능과 와이어프레임을 구상했습니다. 



 

서비스에서 제공해야 하는 요건은 크게 다음과 같이 생각해 볼 수 있었습니다.

 

- 기본적인 가계부 기능들을 제공해야 한다.

- 첫 가입 시 예산 수립을 도와야 한다. (고정 수입, 지출 등을 받고 카테고리별 예산 설정 등)

- SMS와 일정을 바탕으로 지출 내역을 수집해서 애플리케이션 로컬에 저장해야 한다.

- 하루 소비를 돌아볼 때, 에이전트가 피드백을 제공해야 한다.

- 내일 일정을 불러오고, 그를 바탕으로 데일리 예산을 수립해야 한다.

- 매월 말일에 소비를 돌아볼 수 있는 리포트와 피드백을 제공해야 한다.

- 사용자의 요구사항을 반영해서 에이전트가 다음달 예산을 수립해야 한다.

- 짜여진 예산에 대해 구체적인 설명을 확인할 수 있어야 한다.

 

백엔드 파트로서의 도전 요소는 DB 설계 최적화, 스케줄링 설계, API 호출 시점 최적화, 그리고 데이터를 활용해 GPT 프롬프트에 삽입하는 부분에 있다고 느낍니다. 가장 자원을 효과적으로 사용하는 방법에 대해서 고민하는 시간을 가지게 될 것 같습니다.

스타트 발표의 주요 기능 구현을 위해 ERD를 아래와 같이 설계했습니다.

 

 

그다음 Spring Boot로 데모 API를 개발하고 서버를 배포하여 클라이언트와 연동을 진행했습니다.

API 문서화에는 swagger를 사용했습니다.