롤백(rollback)은 컴퓨터 과학 및 데이터 관리 분야에서, 시스템이나 데이터베이스가 수행한 작업이나 상태 변화를 이전의 특정 시점으로 되돌리는 과정을 의미한다. 주로 트랜잭션 처리, 버전 관리, 시스템 복구 등에서 사용되며, 오류 발생 시 데이터 일관성을 유지하거나 의도치 않은 변경을 취소하기 위해 활용된다.
정의
롤백은 다음과 같은 상황에서 이루어진다.
- 트랜잭션 롤백: 데이터베이스 관리 시스템(DBMS)에서 하나의 트랜잭션이 오류나 사용자의 명령에 의해 전체를 취소하고, 트랜잭션 시작 이전의 상태로 복구하는 과정.
- 시스템 롤백: 운영 체제나 소프트웨어 업데이트 후 문제가 발생했을 때, 이전 버전으로 되돌리는 행위.
- 버전 관리 롤백: 버전 관리 시스템(예: Git)에서 특정 커밋 이전으로 코드를 되돌리는 작업.
동작 원리
- 로그 기반 복구: 대부분의 DBMS는
Redo Log와Undo Log(또는Rollback Segment)를 사용한다. 트랜잭션이 수행한 변경 사항은 로그에 기록되며, 롤백 시 Undo Log에 저장된 정보를 역순으로 적용해 원래 상태로 복구한다. - 스냅샷 기반 복구: 파일 시스템이나 가상화 환경에서는 특정 시점의 스냅샷을 저장해 두고, 필요 시 해당 스냅샷으로 복원한다.
주요 특징
| 구분 | 내용 |
|---|---|
| 목적 | 데이터 무결성 보장, 오류 복구, 작업 취소 |
| 적용 대상 | 데이터베이스, 파일 시스템, 애플리케이션, 운영 체제 |
| 조건 | 롤백 대상에 대한 로그 또는 스냅샷이 사전에 저장되어 있어야 함 |
| 제한 | 롤백이 불가능한 경우(예: 로그 손실, 영구적인 삭제)는 복구가 어려울 수 있음 |
사용 예시
- 데이터베이스:
BEGIN TRANSACTION; INSERT INTO accounts ...; COMMIT;과정에서 오류가 발생하면ROLLBACK;명령을 실행해 삽입된 레코드를 취소한다. - 소프트웨어 배포: 최신 버전으로 업데이트 후 서비스 장애가 발생하면, 배포 시스템은 이전 버전으로 롤백하여 정상 운영을 회복한다.
- 버전 관리:
git reset --hard <commit-id>명령을 사용해 지정된 커밋 이전 상태로 프로젝트 코드를 되돌린다.
관련 용어
- 커밋(Commit): 트랜잭션의 결과를 영구히 반영하는 작업.
- 세이브포인트(Savepoint): 트랜잭션 내에서 중간 지점을 지정해, 해당 지점까지 선택적으로 롤백할 수 있게 하는 기능.
- 포인트-인-타임 복구(Point-in-Time Recovery, PITR): 특정 시점까지의 데이터베이스 상태를 복구하는 방법으로, 롤백과 유사한 개념을 포함한다.
참고 문헌
- 김성우 외, 데이터베이스 시스템 개론, 2판, 한빛미디어, 2020.
- PostgreSQL Documentation, “Transaction Management”, 2023.
- Oracle Database Concepts, Oracle Corporation, 2022.