관리 메뉴

여름 언덕에서 배운 것

flyway 란? 본문

여름 언덕에서 배운 것/👩‍💻 CS

flyway 란?

잔뜩 2023. 10. 6. 10:57

https://sweeeetgoguma.tistory.com/entry/Flyway-%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0

 

 

Flyway & DB Migration 을 적용시켜 보자

스프링 프로젝트를 진행하면서 나는 DB 테이블을 한 번에 다 생성하고 시작하는 것이 아닌 필요한 것을 만들어가면서 진행하고 있었다. 그러고 Front를 만들지 않기 때문에 DB data를 직접 mysql을 열

sweeeetgoguma.tistory.com

 

** 스키마 : DB 내에 어떤구조로 데이터가 저장 되었는지를 나타내는 구조

 

예시


### 상황

개발자 '지민'은 온라인 쇼핑몰 프로젝트를 진행하고 있습니다. 초기에는 상품 정보만 저장하는 `products` 테이블이 데이터베이스에 있었습니다.

### 1단계: `products` 테이블 생성 (V1)
지민은 `V1__Create_products_table.sql`이라는 파일을 만들고, 이 파일에 다음의 SQL 명령어를 넣습니다:

CREATE TABLE products (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    price DECIMAL(10, 2)
);


### 2단계: 리뷰 기능 추가 (V2)
몇 주 후, 상품 리뷰 기능이 필요하다는 요청이 들어옵니다. 지민은 새로운 `reviews` 테이블을 만들어야 합니다.
그래서 `V2__Create_reviews_table.sql` 파일을 만들고 다음 내용을 넣습니다:

CREATE TABLE reviews (
    id INT PRIMARY KEY,
    product_id INT,
    comment TEXT,
    rating INT,
    FOREIGN KEY (product_id) REFERENCES products(id)
);


### Flyway 사용
이제 지민은 로컬에서 개발을 할 때, Flyway 명령어를 사용해 데이터베이스 스키마를 최신 상태로 유지할 수 있습니다:

```bash
flyway migrate
```


Flyway는 `V1__Create_products_table.sql`과 `V2__Create_reviews_table.sql`을 순서대로 실행하여 데이터베이스를 업데이트합니다.

### 협업

지민의 동료 '유나'도 이 프로젝트에 참여합니다. 유나는 지민의 코드를 받아서 자신의 로컬 환경에서 작업을 시작하려고 합니다. 그런데 유나의 데이터베이스는 아직 초기 상태입니다. 여기서 Flyway의 장점이 발휘됩니다.

유나는 단순히:

flyway migrate


이 명령어를 실행만 하면, 그녀의 로컬 데이터베이스도 지민의 최신 스키마로 업데이트됩니다.

### 결론
이 예시를 통해 Flyway는 다음과 같은 이점을 제공한다는 것을 알 수 있습니다:

1. 데이터베이스의 변경 이력을 명확하게 버전으로 관리할 수 있습니다.
2. 코드를 공유하거나 협업할 때, 각 개발자의 로컬 환경의 데이터베이스 상태를 쉽게 일치시킬 수 있습니다.
3. 데이터베이스 변경사항을 순차적으로 적용하므로, 데이터베이스의 상태를 예측 가능하게 만들어 줍니다.

즉, Flyway는 데이터베이스 스키마 변경을 안정적이고 일관성 있게 관리하는 데 큰 도움을 줍니다.

728x90

'여름 언덕에서 배운 것 > 👩‍💻 CS' 카테고리의 다른 글

Enum 클래스  (0) 2023.10.09
객체 지향의 특징  (1) 2023.10.09
Nexus Repository(넥서스 리포지토리)란?  (1) 2023.10.05
젠킨스란?  (1) 2023.10.04
MobaXterm 어떤 프로그램인지  (0) 2023.10.04