airteltour / standard-codeigniter

표준 프로젝트가 모두 라라벨로 이전됨에 따라 현 레포는 무의미 하다고 판단하여 아카이빙합니다
MIT License
0 stars 2 forks source link

데이터 베이스 마이그레이션에 관한 논의 #17

Open kkame opened 6 years ago

kkame commented 6 years ago

어떤 툴을 사용할 것인가?

  1. CI 내장 마이그레이션
  2. 외부 라이브러리
judee commented 6 years ago

CI 내장 마이그레이션 써도 상관은 없는데 서로의 개발환경에서 어떻게 데이터베이스 동기화를 맞출건지 정하는게 좋을 거 같습니다.

natz92 commented 6 years ago

동감합니다. 서로의 개발환경에서 작업중 마이그레이션 버전이 충돌나면 수작업으로 맞춰주느라 시간이 소요되다보니 동기화 방법을 찾아봐야 할 것 같습니다.

CharmingLip commented 6 years ago

디비 마이그레이션 중에 예상치 못한 오류가 발생할 경우 툴만으론 롤백이 제대로 동작하지 않는데, 이런 경우를 어떻게 해결할지도 의논하는 게 좋을 거 같습니다.

kkame commented 6 years ago

마이그레이션 충돌

롤백문제

CharmingLip commented 6 years ago

충돌: 마이그레이션 파일명 충돌 같은 경우엔 doctine/migrations 라이브러리 같은 경우 현재 시간을 기준으로 파일명을 생성하기 때문에, 중복될 학률이 지극히 낮습니다. 더 나은 라이브러리를 쓰는 것도 방안이지 않을까요?

롤백:

  1. 마이그레이션을 한 파일에서 여러 쿼리를 등록한 경우, 쿼리 중간에 오류가 나면 수동으로 해당 파일을 실행시켜서 롤백을 해줘야 하는데, 현재 롤백 커맨드도 쿼리가 무조건 성공한다는 가정으로 쓰여져 있어서, 중간에 실패한 작업 롤백 쿼리에서 걸립니다. 쿼리에 exist 유무를 넣어주는 식으로 직접 디비 수정할 일을 최소한으로 만들어야하지 않을까요?

  2. 마이그레이션 툴(doctrine)에서 자체적으로 트랜잭션을 지원하지 않는데, 그렇다고 현재 마이그레이션 파일에 트랜잭션 쿼리를 넣어주지도 않고 있습니다. 트랜잭션 처리를 넣는 쪽으로 맞추면 어떨까요?

kkame commented 6 years ago

충돌:

롤백:

두개의 상황을 모두 고려했을 때

git pull이든 fetch든 소스를 갱신한 이후에는 무조건 주요한 부분에 대해서는 재검증 + 로컬에서 테스트 이후 commit 하는 수 밖에 없는 것 같음