Skip to content

Hadam‐backend Wiki

JI YOUNG edited this page Jun 5, 2024 · 1 revision

🖼️ 나의 하루를 담다,
AI기반 일기 생성 서비스 하담

표지

✍🏻 프로젝트 개요

2023-2024 가천대학교 졸업작품 5조

바쁜 삶에서 일기를 매일매일 기록하기란 쉽지 않습니다.

이러한 어려움을 겪는 사람들을 위해, 하담은 간단한 키워드 입력으로 생성형 AI를 이용해 일기를 생성하고,

생성형 이미지를 통해 시각적으로도 하루의 기록을 담아주는 서비스입니다.


✨ 팀원 소개

박지영(ziiyouth)
🚀 Back-end Developer

📔 핵심 기능

소셜 로그인 기능

카카오톡 소셜 로그인을 통해 간편한 회원가입이 가능합니다.

개발핵심기능 1

일기 생성 기능

날짜, 시간, 장소, 사람, 감정, 경험을 키워드 형식으로 간편하게 입력받아 gpt 모델을 이용한 일기를 생성합니다.

개발핵심기능 2-1 개발핵심기능 2-2

일기에 어울리는 이미지 생성 기능

작성된 일기에 어울리는 생성형 이미지를 볼 수 있습니다.

개발핵심기능 2-3

날짜별 조회 기능

달 별 대표 일기를 메인 화면에서 슬라이드 형식으로, 일 별 일기를 원하는 정렬 순으로 검색하고 조회할 수 있습니다.

개발핵심기능 3

일기 재발견 기능

달력을 통해 N년 전 나의 하루를 돌아볼 수 있고, 현재 나의 감정을 통해 오늘과 비슷한 과거의 일기를 조회할 수 있습니다.

개발핵심기능 4-2

일기 좋아요 기능

모아보고 싶은 일기에 좋아요를 눌러 별도로 보관할 수 있습니다.

개발핵심기능 4-1

마이페이지 기능

자신의 정보를 설정할 수 있습니다.

개발핵심기능 5

🍪 기술 스택

🖥 Backend

역할 종류
Framework RED RED
Database RED
Database Service RED
Programming Language RED
API REST
Version Control Git GitHub
CICD

🖥 Common

역할 종류
협업 관리 RED
디자인 RED
소통

🦾 시스템 아키텍처

📂 폴더 구조

📂 src
┣ 📂 java.com.hadam.hadam
┃  ┣ 📂 domain
┃  ┃  ┣ 📂 sample
┃  ┃  ┃  ┣ 📂 controller
┃  ┃  ┃  ┣ 📂 domain
┃  ┃  ┃  ┣ 📂 dto
┃  ┃  ┃  ┃  ┣ 📂 request
┃  ┃  ┃  ┃  ┣ 📂 response
┃  ┃  ┃  ┣ 📂 service
┃  ┃  ┃  ┣ 📂 repository
┃  ┣ 📂 global
┃  ┃  ┣ 📂 common
┃  ┃  ┣ 📂 check
┃  ┃  ┣ 📂 error
┃  ┃  ┃  ┣ 📂 dto
┃  ┃  ┃  ┣ 📂 exception
┃  ┃  ┃  ┣ 📂 handler
┃  ┃  ┣ 📂 external
┣ 📂 resources
┃  ┣ application.yml
┣ HadamApplication.class

📂 아키텍처 구조

아키텍처

  • 안드로이드와 EC2 내에 올라간 서버가 Restful API를 통해 통신합니다.

  • 스프링과 fast api 서버가 같은 RDS에 접속하게 되며, mysql 기반의 DB를 사용합니다.

  • 일기 생성에 대한 request가 들어올때는 fast api 서버를 통해 모델이 작동하게 됩니다.

  • 일기의 글은 GPT를, 이미지는 Stable Diffusion을 통해 생성한 뒤 s3에 업로드하여 사용하게 됩니다.

  • 백엔드 서버는 자바17 기반의 스프링부트3을 이용해 개발했습니다.

  • 스프링 데이터 JPA를 사용해 객체-관계 매핑의 장점을 살리고 UI 디자인을 기반으로 한 ERD를 구상했습니다.

  • 이로 RESTful한 API를 개발하며 트랜잭션 관리로 DB 작업에 대한 일관성을 보장했습니다.

  • 깃허브 액션과 도커 컴포즈를 사용해 CICD를 구축하고 블루-그린 무중단 배포를 구현하였습니다.


📢 실행 방법

  1. git clone을 진행한다.
  2. resources 폴더에 application.yml을 추가한다.
  3. build/libs 디렉터리로 이동해 java -jar hadam-0.0.1-SNAPSHOT.jar 명령어를 실행한다.