Skip to content

[캡스톤프로젝트] 17. 출발드림팀 BellyWelly-BE : 2023 창업경진대회 장려상, 2024 포스터세션 최우수상 수상작

Notifications You must be signed in to change notification settings

BellyWelly/BellyWelly-BE

Repository files navigation

BellyWelly-BE

[캡스톤디자인과창업프로젝트] 17. 출발드림팀
BellyWelly 백엔드 레포지토리

image

🌐 배포 주소

배포된 서버 URL 주소: https://api.bellywelly.kro.kr


💡 프로젝트 개요

https://github.com/BellyWelly


💻 백엔드 기술 스택

java spring boot jwt spring security swagger
mysql hibernate
nginx docker github actions
EC2 RDS S3

🔧 설치 및 실행 방법

(1) 레포지토리 클론

git clone https://github.com/BellyWelly/BellyWelly-BE.git

(2) 설정 파일 작성

BellyWelly 프로젝트를 실행하기 위해서는 application.yml을 작성해야 합니다.
BellyWelly-BE/src/main/resources/ 에 application.yml을 생성하고, 아래 코드를 복사하여 붙여넣습니다.
마스킹된 부분은 본인의 실행 환경에 맞게 넣어줍니다.

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://{ ENDPOINT }:3306/{ DB_NAME }?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username: { USERNAME }
    password: { PASSWORD }
  jpa:
    generate-ddl: true
    hibernate:
      ddl-auto: update
    database: mysql
    database-platform: org.hibernate.dialect.MySQLDialect

server:
  error:
    include-message: always

kakao:
  client-id: { CLIENT_ID }
  client-secret: { CLIENT_SECRET }

jwt:
  secret: { SECRET_KEY }

aws:
  s3:
    access-key: { ACCESS_KEY }
    secret-key: { SECRET_KEY }
    region: { REGION }
    bucket: { BUCKET }

(3) 프로젝트 빌드

cd BellyWelly-BE
./gradlew build -x test

(4) JAR 실행

cd build/libs
java -jar bellywelly-0.0.1-SNAPSHOT.jar

백그라운드에서 실행하고 싶다면 아래 명령어를 입력합니다.

nohup java -jar bellywelly-0.0.1-SNAPSHOT.jar &

(5) 브라우저에서 접속

{IPv4}:8080/{path}

로컬에서 실행했다면 localhost:8080/home 과 같이 입력하여 접속할 수 있습니다.


⚙️ 시스템 아키텍쳐

image

백엔드는 Spring Boot를 사용하여 RESTful API를 개발하였고, 이를 Docker 컨테이너화하여 AWS EC2 상에서 애플리케이션을 실행하였습니다.
EC2에 Nginx를 설치하여 80번 포트로 들어오는 요청을 8080번 포트로 리다이렉트하며, HTTPS도 설정하였습니다.
서버의 DB로는 MySQL을 사용하고, 이를 RDS로 관리하였으며, RDS는 EC2와 연결하여 3306번 포트로 요청을 전달하였습니다.
서비스 내에서 사용자가 업로드하는 이미지는 AWS S3를 이용하여 관리하였습니다.

AWS Configuration

  • EC2: Ubuntu 22.04(arm64) t4g.small
  • RDS: db.t4g.micro MySQL Community

⚙️ 사용한 오픈소스

  • Java 17, Spring Boot 3.2.0으로 애플리케이션 개발
  • 데이터베이스로 MySQL 8 사용, ORM으로 Spring Data JPA, Hibernate 사용
  • Spring Security와 JWT 도입으로 보안 구축
  • Spring Cloud AWS S3 이용하여 S3에 이미지 업로드
  • Springdoc OpenAPI로 Swagger 생성하여 API 문서 배포
  • Github Actions, Docker를 이용한 CI/CD 구축
  • Nginx를 이용하여 웹서버 구축
  • Certbot을 이용하여 SSL 인증서 발급 후 HTTPS 연결

✏️ ERDiagram

image

  • member: 회원 정보를 담는 테이블
  • diet: 식단 기록 정보를 담는 테이블
  • diet_meal: diet와 meal의 중간 테이블
  • meal: 음식 정보를 담는 테이블
  • defecation: 배변 기록 정보를 담는 테이블
  • stress: 스트레스 기록 정보를 담는 테이블
  • report: 레포트 공통 정보를 담는 테이블
  • report_meal: 레포트 중 식단 분석 정보를 담는 테이블
  • report_defecation_stress: 레포트 중 배변/스트레스 분석 정보를 담는 테이블

📕 API 명세서

Swagger: https://api.bellywelly.kro.kr/swagger-ui/index.html

image


About

[캡스톤프로젝트] 17. 출발드림팀 BellyWelly-BE : 2023 창업경진대회 장려상, 2024 포스터세션 최우수상 수상작

Resources

Stars

Watchers

Forks