상황을 통해 예시를 들어보자
누군가에게 돈을 송금한다는 로직을 작성한다고 가정해보자.
그렇다면 발생해야되는 일을 간단히 적어보자면
- 보내는 사람의 계좌에서 돈을 꺼낸다.
- 받는 사람의 계좌에 돈을 넣는다.
정도 일 것이다.
그래서 돈을 송금하는 상황이 발생했을 때
송금이 제대로 성공하면 모두 승인되고 데이터베이스에 반영되겠지만
송금 도중에 뭔가 오류가 발생했다고 가정해보자.
예를 들어 보내는 사람의 계좌에서 돈을 꺼내는데는 성공했지만,
받는 사람의 계좌에 돈을 넣는데 실패했다면
이 때 RollBack하는 것이다.
즉, 처음 부터 없던 송금으로 되돌리는 것.
보내는 사람의 계좌에서도 돈이 빠져나가지 않은 상태가 되는 것이다. (모든 작업을 원상태로 되돌림)