Skip to content
손여산 edited this page Nov 7, 2024 · 5 revisions

📽️ 프로젝트 개요

💡 아이디어명

프로덕트 이름: 술프링 부트

📝 아이디어 계기

  • 기획 배경:

    • 초기 팀원들의 관심사가 없음으로 인해 긍정적인 다양한 아이디어가 속출
    • 첫번째 개인 상태에 따른 건강한 식품 플랫폼
    • 두번째 비건 단계에 따른 대체 육류 소개 플랫폼
    • 세번째 퍼스널 컬러를 추천하고, 그에 맞는 상품 리스트를 추천하는 플랫폼
    • 네번째 왜 사람만 소개팅을 진행할까? 반려견, 반려묘도 소개팅하는 플랫폼
    • 다섯 번째 칵테일 레시피를 보여주고, 특정 알고리즘을 통해 추천하는 플랫폼
    • 단순히 정보를 나열해 주는 것이 아닌, 배운 내용과 새로운 API를 결합한다.
  • 아이디어에 따른 제한사항:

    • 개인 의학 정보는 활용이 현재 어려운 상황이다.
    • 전부 고기를 좋아하기에 흥미를 유발하지 않는다.
    • 추천 상품에 대한 범위가 너무 넓다.
    • 한국 서비스에 적용하기에는 유교적인 문제가 따른다.
  • 칵테일 서비스 플랫폼 선정 이유:

    • 자료의 접근이 용이하다.
    • 레시피를 이미지로 보여줘야 하기 때문에 AWS 활용성이 높아진다.
    • 강의에서 배운 내용들을 잘 활용할 수 있다.
    • 현재 제공하고 있는 유사한 서비스가 적다.
    • 다양한 API와 접목할 수 있다.

📄 아이디어 설명

설명:

  • 이 서비스는 건전한 음주 문화 조성, 개인의 취향 존중, 그리고 칵테일에 대한 정보 제공을 통해 음주 경험을 향상시키는 것을 목표로 한다.
    또한, 주류 및 음료 업계 종사자들에게도 유용한 정보와 마케팅 플랫폼을 제공할 수 있다.

  • 주요 기능

  1. 칵테일 레시피 조회 및 입력:
    • 기존의 칵테일 레시피를 상세히 조회할 수 있다.
    • 사용자가 직접 창작한 레시피를 입력하고 공유할 수 있다.
  2. 사용자 정보 기반 칵테일 추천:
    • 현재 위치, 날씨, 계절 등을 고려한 맞춤형 칵테일 추천 서비스를 제공한다.
    • 향후 MBTI, 퍼스널컬러 등을 활용한 추천 기능도 계획 중
  3. 커뮤니티 기능:
    • 좋아요, 팔로우 기능을 통해 사용자 간 상호작용을 촉진할 수 있다.
    • 사용자들이 레시피를 공유하고 평가할 수 있는 플랫폼을 제공할 수 있다.
  4. 상세 검색 기능:
    • 재료, 술잔 종류, 칵테일 타입 등 다양한 카테고리로 칵테일을 검색할 수 있다.
  5. 사용자 친화적 인터페이스:
    • 직관적인 UI/UX를 제공한다.
  6. 기술적 특징:
    • Amazon S3를 활용한 이미지 저장
    • MongoDB와 MySQL을 활용한 데이터 관리
    • 네이버 데이터랩 API를 활용한 인기 칵테일 분석
    • 위치 기반 서비스와 날씨 API 활용

🚀 기대 효과

설명:

  1. 사용자 편의성 증대:

    • 기본 레시피 조회 기능을 통해 사용자는 다양한 레시피를 쉽게 검색하고 찾을 수 있다.
    • 커스텀 레시피 입력 기능을 통해 사용자는 자신의 고유한 레시피를 저장하고 관리할 수 있다.
    • 좋아요 및 팔로우 서비스를 통해 사용자는 선호하는 레시피와 사용자를 손쉽게 추적하고, 즐겨 찾는 콘텐츠에 빠르게 접근할 수 있다.
  2. 커뮤니티 활성화:

    • 사용자들이 자신만의 커스텀 레시피를 공유함으로써 커뮤니티 내에서 활발한 정보 교류를 기대할 수 있다.
    • 팔로우 기능을 통해 사용자 간의 네트워킹이 촉진되며, 관심 분야가 유사한 사용자들 간의 소통이 강화될 수 있다.
  3. 개인화된 경험 제공:

    • 좋아요 기능을 통해 사용자의 취향을 분석하여 맞춤형 레시피 추천이 가능해질 수 도 있다.
    • 사용자별로 맞춤화된 레시피 피드를 제공하여 더 높은 만족도를 유도할 수 도 있다.
  4. 컨텐츠 품질 향상:

    • 좋아요 수와 팔로워 수를 기반으로 레시피의 인기도를 평가할 수 있어, 품질 높은 레시피가 더욱 많이 노출된다.

🛠️ 기술 스택

🎨 프론트엔드

  • Thymeleaf: React 등의 프론트엔드 라이브러리를 적용할 시간이 부족하고, 스프링 MVC와의 결합성이 좋아서 채택한다.

💻 백엔드

  • Spring Security: 인증, 권한 관리, 데이터 보호 등 인가, 보호 관리를 위해 채택한다.
  • SpringBoot: 스프링 부트는 대중적이면서도 확장성이 좋아 이후 고도화 단계까지 고려해서 채택한다.
  • SpringBatch: API와 같은 데이터 처리와 주기적인 작업 수행을 고려해 채택한다.
  • JPA: 객체지향적인 데이터 접근을 위해 채택한다.
  • Redis: 키-값 구조의 토큰을 저장하는데 적합하고, 사용자 인증, 인가 토큰에 대한 접근성을 위해 채택한다.
  • MySQL: 오픈소스이면서 호환성 및 유연성이 좋고, 대량의 데이터를 처리하는 성능이 뛰어나기 때문에 채택한다.
  • MongoDB: 구조가 다양하고 대량의 데이터를 효율적으로 처리하기에 적합한 능력이 있기 때문에 채택한다.
  • JWT(JSON Web Tokens): Spring Security를 활용하기 위한 수단으로 사용한다.
  • OAuth 2.0: 소셜 로그인을 구현하고 보안을 강화하기 위해 채택한다.
  • Docker: 다른 가상환경 기술에 비해 가볍고 빠르고, 개발 및 배포 환경을 쉽게 구축할 수 있기 때문에 채택한다.
  • Gradle: 유연한 의존성 관리, 빠른 빌드속도, 스크립트의 가독성이 좋기 때문에 사용한다.

📲 CI/CD 및 배포

  • GitHub: 버전 관리 및 기능 개발 협업을 위해 채택한다.
  • GitHub Actions: 각자의 기능을 Repository에 저장하고, 코드 변경 사항에 대한 빌드 및 테스트를 자동화한다.
    또한 빌드 결과 및 주요 이벤트에 대한 Discord 알림을 설정하여 팀 커뮤니케이션을 강화한다.
  • Jenkins: CI/CD 파이프라인의 핵심 도구로 사용한다.
    GitHub과 연동하여 코드 변경 사항을 감지하고, 자동화된 빌드, 테스트, 그리고 최종적으로 프로덕션 환경으로의 배포를 담당한다.
  • AWS(Amazon Web Services): 클라우드 컴퓨팅 플랫폼으로, 서버 배포 및 이미지 저장소로 활용한다.
  • GCP(Google Cloud Platform): 추가적인 클라우드 서비스 및 API 활용을 위해 사용한다.

⌨️ 개발 도구

  • IntelliJ IDEA: Spring Boot Project, Java, Html, CSS, JavaScript 파일 작성한다.
  • Visual Studio Code: md, sql, docker.yml 등 파일 작성한다.
  • Python IDLE: 수집한 css, json과 같은 데이터셋을 전처리하기 위해 사용한다.

📮 협업 도구

  • Slack: 실시간 회의록 작성 및 내용을 공유한다.
  • Discord: 팀원들과의 실시간 음성대화 및 파일전송 기능을 활용한다.
  • Notion: 비지니스 로직 및 아키텍쳐 설계를 공유한다.

📅 개발 일정

  • 1주차: 자기소개 및 팀명 규칙 설정, 아이디어, 개인 역할 배정, 현업 툴 선정
  • 2주차: 개인별 업무 분담 및 스터디 진행, 개인 및 공통 기능 토론, 발표 자료 제작
  • 3주차: 공통 기능 개발 및 아이디어 보완 예정
  • 4주차: 개인 기능 개발 및 아이디어 보완 예정
  • 5주차: 개인 기능 고도화 방안 토론 및 개발, 배포
  • 6주차: 프로젝트 회고 및 배포

👥 업무 분담

  • 신효승(PM): JWT 인증 회원 로그인, 초기 개발 환경설정, CI&CD
  • 손여산(PS): 사용자 레시피, 공통 응답 처리
  • 강신웅(CR): 회원 정보 관리, 이미지 공통 처리, API 응용 및 설계
  • 김영훈(CM): Kaggle 데이터 분석, 기본 레시피
  • 신지항(SM): API 응용 및 설계

📏 그라운드 룰

  • 네이밍 규칙:
    • Class: PascalCase
    • Variable: camelCase
    • Constant: UPPER_CASE
  • 들여쓰기: 4 Space
  • Git 브랜치 전략: GitHub-Flow
  • 커밋 메시지 규칙: commit 컨벤션 Page 참고

📚 문서 관리

  • 관리 방법 1: 기술문서는 노션에 정리하여 기록해둔다.
  • 관리 방법 2: 보고서 작성 방법
    • Slack에 todo와 project 회의록 등을 우선 작성
    • Slack에 기록된 문서와 GitHub의 project BackLog, 디스코드와 같은 팀 커뮤니티 소통 내역을 취합해 노션에 정리하여 보고서를 작성한다.
    • 완성된 보고서를 제출하고 기록해둔다.

📋 관련 페이지

💡 관련 링크

Clone this wiki locally