심층 기술 분석 (Deep Tech Dive)/Spring Boot 심층 분석

Spring Boot 프로젝트의 데이터베이스 선택과 AWS 호스팅 설정: MySQL

코린이ch 2024. 10. 13. 21:04

1. 서론

Spring Boot 프로젝트를 시작할 때 중요한 결정 사항 중 하나는 적절한 데이터베이스와 호스팅 환경을 선택하는 것입니다. 이 글에서는 대학생 캡스톤 프로젝트를 위한 데이터베이스 선택 과정, AWS 호스팅 환경 설정, 그리고 Spring Boot에 MySQL을 연동하는 방법을 상세히 알아보겠습니다.


2. 데이터베이스 선택 과정

2.1 프로젝트 요구사항 분석

  • 프로젝트 규모: 캡스톤 프로젝트
  • 예상 사용자 수: 배포 및 운영 계획 단계
  • 개발 팀 경험: 제한적
  • 호스팅 환경: AWS (Amazon Web Services)

2.2 주요 데이터베이스 옵션 비교

  1. MySQL
    • 장점:
      • 무료 오픈소스
      • 광범위한 커뮤니티 지원
      • AWS RDS에서 완벽 지원
    • 단점:
      • 대규모 데이터 처리시 성능 저하 가능성
  2. PostgreSQL
    • 장점:
      • 고급 기능 (예: JSON 지원)
      • 복잡한 쿼리 처리에 강점
    • 단점:
      • MySQL에 비해 약간 더 복잡한 설정
  3. Oracle Database
    • 장점:
      • 엔터프라이즈급 성능과 보안
    • 단점:
      • 높은 비용
      • 복잡한 라이선스 정책
  4. MongoDB (NoSQL 옵션)
    • 장점:
      • 유연한 스키마
      • 대용량 데이터 처리에 강점
    • 단점:
      • 관계형 데이터 모델링에 제한

2.3 MySQL 선택 이유

  • JPA/Hibernate와의 우수한 호환성
  • AWS RDS에서의 쉬운 관리
  • 충분한 성능과 확장성
  • 무료 사용 가능 (Community Edition)

3. AWS 호스팅 환경 설정

3.1 AWS 선택 이유

  • 광범위한 서비스 제공
  • 유연한 확장성
  • Free Tier를 통한 비용 효율성
  • 업계 표준 기술 학습 기회

3.2 AWS 설정 단계

  1. AWS 계정 생성
  2. RDS에서 MySQL 인스턴스 생성
    • Free Tier 옵션 선택
    • 데이터베이스 이름, 마스터 사용자 설정
  3. EC2 인스턴스 생성
    • Amazon Linux 2 AMI 선택
    • t2.micro 인스턴스 유형 (Free Tier 적격)
  4. 보안 그룹 설정
    • EC2에서 RDS로의 연결 허용
    • 애플리케이션 포트(예: 8080) 개방

4. Spring Boot 프로젝트에 MySQL 연동하기

4.1 프로젝트 의존성 추가

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'mysql:mysql-connector-java'
}

4.2 application.properties 설정

spring.datasource.url=jdbc:mysql://<RDS-ENDPOINT>:3306/<DB-NAME>
spring.datasource.username=<USERNAME>
spring.datasource.password=<PASSWORD>
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.jpa.hibernate.ddl-auto=update

5. EC2에 Spring Boot 애플리케이션 배포

  1. JAR 파일 빌드: ./gradlew build
  2. EC2 인스턴스에 JAR 파일 전송 (SCP 사용)
  3. EC2에서 JAR 실행:
     
java -jar your-application.jar

6. 결론

MySQL과 AWS를 조합한 이 설정은 학습과 개발에 적합하면서도 실제 배포와 확장에 활용할 수 있는 균형 잡힌 선택입니다. Spring Boot와의 원활한 통합, AWS의 다양한 서비스, 그리고 MySQL의 안정성을 고려할 때,  이상적인 솔루션이라고 할 수 있습니다.

이 설정을 바탕으로, JPA와 Hibernate를 활용한 데이터 모델링과 CRUD 작업을 효율적으로 수행할 수 있으며, 프로젝트의 성장에 따라 AWS의 다양한 서비스를 추가로 활용할 수 있습니다.