[Spring] 팀프로젝트 DB관리

Minhyeok·2024년 6월 5일
post-thumbnail

팀 프로젝트에서 Spring과 MySQL을 사용할때 효율적으로 협업하는 방법

1. 각자의 로컬 데이터베이스 사용

  • 서버별 프로파일 사용 : Spring에서는 application.properties나 application.yml 파일을 통해 프로파일을 설정할 수 있습니다. 각 팀원이 로컬 환경에서 사용할 데이터베이스를 설정하고, 공통 프로젝트에서는 서로 다른 설정 파일을 사용하는 방법입니다.
# application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/dev_db
spring.datasource.username=dev_user
spring.datasource.password=dev_pass

# application-prod.properties
spring.datasource.url=jdbc:mysql://localhost:3306/prod_db
spring.datasource.username=prod_user
spring.datasource.password=prod_pass

그런 다음, 각 개발자가 자신의 프로파일을 설정해서 사용하면 된다.

// VM options에 추가
-Dspring.profiles.active=dev

2. 공통 데이터베이스 사용

  • 데이터베이스 스키마 분리 : 각 팀원이 다른 스키마를 사용하도록 설정할 수 있습니다. 이렇게 하면 서로 다른 테이블을 사용하면서도 하나의 데이터베이스 인스턴스를 공유할 수 있습니다.
spring.datasource.url=jdbc:mysql://localhost:3306/common_db
spring.datasource.username=common_user
spring.datasource.password=common_pass
spring.jpa.properties.hibernate.default_schema=your_schema

각자 your_schema 부분을 자신에게 맞게 설정합니다.

3. 마이그레이션 도구 사용

  • Flyway 또는 Liquibase 사용: 데이터베이스 스키마를 버전 관리하는 도구를 사용하면, 스키마 변경 사항을 쉽게 관리할 수 있습니다. 모든 스키마 변경 사항은 SQL 파일로 관리되고, 프로젝트에 포함되어 팀원들이 동일한 스키마를 사용하도록 할 수 있습니다.
-- V1__create_user_table.sql
CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL
);

-- V2__add_email_to_user.sql
ALTER TABLE users ADD COLUMN email VARCHAR(255);

4. Docker를 활용한 개발 환경 통일

  • Docker Compose 사용: Docker를 사용하여 동일한 환경을 팀원 모두가 사용할 수 있게 합니다. docker-compose.yml 파일을 사용해 데이터베이스와 애플리케이션을 동일한 환경에서 실행할 수 있습니다.
version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: project_db
  app:
    image: your_spring_app_image
    ports:
      - "8080:8080"
    depends_on:
      - db
profile
민혁스

0개의 댓글