본문 바로가기
DataBase

[Flyway] Flyway란?

by dbjh 2022. 7. 31.
반응형

출처: http://www.popit.kr/wp-content/uploads/2016/11/flyway-logo-tm.png

 

Flyway란?

DDL이든 DML이든 스키마 정의에 대한 변경이 일어나는데, 이를 미리 정해둔 규칙에 의해 자동으로 Database에 적용해주는 DataBase 형상관리 툴이다.

 

왜 필요한가?

DataBase 형상관리가 왜필요하지?라는 생각이 들 수도 있지만 매우 중요한 포인트이다. 실무에서는 실서버 및 개발환경이 나눠져 있고 개발 안에서도 dev, qa, staging 등 여러 환경으로 나뉜다. 실서버와 개발환경의 DB를 같이 사용하는건 말이 안되기에 당연히 각각의 DB를 사용할 것이다.

이 상태에서 실서버에서 이미 사용중인 아래와 같은 SELECT 쿼리가 있다고 해보자.

-- person 테이블에는 id, name 컬럼만 있다고 가정
SELECT id, name
FROM person
WHERE id = 1;

위 쿼리가 이미 정상동작하는 상태에서 요구조건 변경으로 A 개발자가 phone_number라는 컬럼을 실서버 아래와 같이 추가하였다.

-- phone_number 컬럼 추가
ALTER TABLE person ADD COLUMN phone_number varchar(30) NOT NULL;

-- phone_number 컬럼까지 추가하여 조회
SELECT id, name, phone_number
FROM person
WHERE id = 1;

 실서버에는 컬럼추가 DDL이 실행되어 테이블 구조도 변경된 상태이고 소스코드도 최신형상에 맞게 변경되었을 것이다.

하지만 B 개발자는 변경된 사항을 모르고 최신 소스코드를 그대로 qa환경에서 실행하려고 했고 Column 'phone_number' does not exist  가 발생하는 것을 확인할 것이다. 물론 개발자가 이를 확인하고 수동으로 DDL을 qa 환경에 적용하면 되지만 변경된 내용이 산더미 처럼 많다면? 이런 상황이 반복된다면? 당연히 리소스 낭비이며 위험 요소가 될 수도 있다. 그래서 이런 상황을 막고자, DB형상을 자동으로 migration 해주는 Flyway를 사용하는 것이다.

다음 글에서 Flyway 사용법에 대해서 알아보도록하자.

반응형

'DataBase' 카테고리의 다른 글

[Flyway] DB에 Flyway 적용하기  (0) 2022.07.31
[DataBase] SELECT 쿼리 실행 순서  (0) 2020.02.16

댓글