134
1
부
기초
되더라도 구현하기가 복잡할 뿐 아니라 보다 좁은 범위에 적용된 데이터베이스 트랜잭션에 기
대했던 것과 같은 보장도 제공하지 않는다.
6
.
4
절 ‘사가 패턴’에서 살펴볼 때 여러 마이크로서비스에 걸쳐 상태 변화를 관리해주는 분산 트
랜잭션에 대한 대안 (그리고 선호하는 ) 메커니즘이 있지만, 더 복잡하다. 데이터 무결성과 마
찬가지로, 합당한 이유로 데이터베이스를 분리하면 일련의 새로운 문제에 직면하게 될 것이란
사실을 받아들여야 한다.
3.7.43.7.4
도구 도구
데이터베이스 변경은 여러 가지 이유로 어려운 작업인데, 그중 하나는 쉽게 변경할 수 있는 도
구가 제한돼 있다는 점이다. 코드를 사용하면,
IDE
에 리팩터링 도구가 내장돼 있으며 변경 중
인 시스템이 기본적으로 무상태
stateless
라는 추가적인 이점도 있다. 반면에 데이터베이스를 사용
하면, 변경하려는 대상이 상태를 갖고 있고 리팩터링에 적합한 도구도 부족하다.
관계형 데이터베이스의 스키마 변경 프로세스를 관리하는 많은 도구가 있지만, 대부분은 동일
한 패턴을 따른다. 각 스키마 변경 사항은 버전 제어되는 델타 스크립트에서 정의된다. 이러한
스크립트는 멱등적
idempotent
방식으로 엄격한 순서에 의해 실행된다. 레일즈 마이그레이션도 이
와 같은 방식으로 작동하는데, 필자가 수년 전에 제작을 도왔던 도구인
DBDeploy
(
http
://
dbdeploy
.
com
/
)와 유사한 방식이다.
최근 들어 필자는 이러한 도구가 아직 없는 사람들에게는 동일한 결과를 얻도록 플라이웨이 ...