[캡스톤디자인과창업프로젝트] 17. 출발드림팀
BellyWelly 백엔드 레포지토리
배포된 서버 URL 주소: https://api.bellywelly.kro.kr
git clone https://github.com/BellyWelly/BellyWelly-BE.git
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 }
cd BellyWelly-BE
./gradlew build -x test
cd build/libs
java -jar bellywelly-0.0.1-SNAPSHOT.jar
백그라운드에서 실행하고 싶다면 아래 명령어를 입력합니다.
nohup java -jar bellywelly-0.0.1-SNAPSHOT.jar &
{IPv4}:8080/{path}
로컬에서 실행했다면 localhost:8080/home
과 같이 입력하여 접속할 수 있습니다.
백엔드는 Spring Boot를 사용하여 RESTful API를 개발하였고, 이를 Docker 컨테이너화하여 AWS EC2 상에서 애플리케이션을 실행하였습니다.
EC2에 Nginx를 설치하여 80번 포트로 들어오는 요청을 8080번 포트로 리다이렉트하며, HTTPS도 설정하였습니다.
서버의 DB로는 MySQL을 사용하고, 이를 RDS로 관리하였으며, RDS는 EC2와 연결하여 3306번 포트로 요청을 전달하였습니다.
서비스 내에서 사용자가 업로드하는 이미지는 AWS S3를 이용하여 관리하였습니다.
- 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 연결
- member: 회원 정보를 담는 테이블
- diet: 식단 기록 정보를 담는 테이블
- diet_meal: diet와 meal의 중간 테이블
- meal: 음식 정보를 담는 테이블
- defecation: 배변 기록 정보를 담는 테이블
- stress: 스트레스 기록 정보를 담는 테이블
- report: 레포트 공통 정보를 담는 테이블
- report_meal: 레포트 중 식단 분석 정보를 담는 테이블
- report_defecation_stress: 레포트 중 배변/스트레스 분석 정보를 담는 테이블
Swagger: https://api.bellywelly.kro.kr/swagger-ui/index.html