/2021-jujeol-jujeol

술 알고 마시자! 알고 마시면 더 맛있는 술! 당신을 위한 술을 추천해드립니다.

Primary LanguageJava

술 알고 마시자! 술 추천 및 리뷰 서비스 주절주절


🍻 Intro

jujeol_og_image

react spring-boot typescript mysql

술 알고 마시자! 알고 마시면 더 맛있는 술!
당신을 위한 술을 추천해드립니다.

편의점에서 처음 보는 술을 봤을때, 어떤맛인지 궁금할 땐?
아 오늘 와인이 마시고 싶은데, 내 취향에 맞는 와인이 궁금할 땐?

바로, 주절주절

🚀 Demo

💖 맞춤 술 추천 (로그인O) 👍 베스트 추천 (로그인X) 🌟 일괄 평가
유저_맞춤_술_추천 베스트_추천 일괄_평가
🧐 상세페이지 👩‍💻 선호도 입력과 리뷰 작성 🧑‍💻 리뷰 수정
상세페이지 선호도_입력과_리뷰_작성 리뷰_수정
👯 로그인 (카카오 소셜 로그인) 💁 닉네임, 소개 수정 💆 리뷰와 선호도 관리
로그인(카카오_소셜_로그인) 닉네임_소개_수정 리뷰와_선호도_관리
🍓 카테고리 검색 🔎 키워드로 검색 🥂 전체보기
카테고리_검색 키워드로_검색 전체보기


👑 Recommendation Algorithm

recommend_algorithm

주절주절은 직접 구현한 협업 필터링 알고리즘으로 사용자 맞춤형 서비스를 제공해요.

주절주절은 초기에 사용자 기반의 알고리즘을 구성했어요. 이는 한 사용자가 많은 선호도를 남겨야 유의미한 알고리즘이죠.
하지만 슬로프 원 알고리즘을 이용해 아이템 기반 필터링 방식으로 변경하여 선호도를 적게 남기더라도 즉시 기능을 누릴 수 있게 되었답니다!

⚡️ Skills

더 많은 기술 이야기는 조잘조잘에서 확인하세요.

Front-end

react type_script react_query emotion react_testing_library

  • React 로 사용자와의 상호작용이 많은 웹 페이지를 효율적으로 구현하고 관리했어요.
  • Typescript 를 사용해 빌드 시에 오류를 미리 찾아, 코드 안정성을 높였어요. 또한 동료와의 커뮤니케이션이 원활해졌어요.
  • React Query 를 비동기 관련 로직과 상태를 관리했어요. API 응답 데이터를 캐싱함으로써 서버 통신 비용을 줄였어요.
  • Emotion 으로 자바스크립트로 스타일을 관리했어요. 반복되는 스타일 컴포넌트를 재활용하고, 상태에 따른 스타일 변경에 용이해요.
  • React Testing Libray 로 테스트 코드를 작성했어요. 자신감있는 리팩토링을 통해 완성도 높은 코드를 짤 수 있어요.

Back-end

spring_boot hybernate query_dsl flyway spring_rest_docs

  • Springboot 로 웹 어플리케이션 서버를 구축했어요.
  • Spring Data JPA(Hibernate) 로 객체 지향 데이터 로직을 작성했어요.
  • QueryDSL 로 컴파일 시점에 SQL 오류를 감지해요. 더 가독성 높은 코드를 작성할 수 있어요.
  • Flyway 로 데이터베이스 버전 관리를 하고 있어요.
  • RestDocs 로 작성한 API 문서를 통해 클라이언트와 원활하게 소통해요.

Infra Structure

aws_ec2 docker

  • AWS EC2Docker 를 사용해 서버를 구축했어요.

CI/CD

jenkins sonarqube github_actions

  • Jenkins 로 백엔드 코드의 지속적 배포와 무중단 배포를 진행해요.
  • SonarQube 백엔드 코드의 퀄리티를 분석해 더 양질의 코드를 위해 노력해요.
  • Github Actions 로 코드 퀄리티와 테스트를 검사해요. 프론트엔드 코드의 지속적 배포를 진행해요.

DB

mysql elastic_search

  • 데이터 베이스는 MySQL을 사용해요.
  • ElasticSearch 로 검색 데이터베이스를 분리했어요. Full-text 검색으로 더 정확한 결과를 얻을 수 있어요.

Network

aws_cloud_front nginx

  • CloudFront 를 활용해 CDN 환경을 구성했어요.
  • Nginx 를 리버스 프록시와 로드 밸런서로 활용하고 있어요.

Monitoring & Testing

prometheus grafana ngrinder

  • Prometheus 로 서버의 상태를 확인해요.
  • Grafana 가 Prometheus 로 확인한 결과를 시각화 시켜줘요.
  • nGrinder 로 웹 어플리케이션 서버 요청과 데이터베이스에 대한 부하 테스트를 진행해요.


🌈 Members

서니 티케 웨지 소롱 피카 크로플 나봄
_ _ _ _ _ _ _
🍷 프론트엔드 🍾 프론트엔드 🍺 백엔드 🥃 백엔드 🍸 백엔드 🍹 백엔드 🍶 백엔드