롤백
문서 작성 중 누르는 '실행 취소(Ctrl+Z)'처럼, 오류가 터졌을 때 안전한 직전 상태로 시스템을 되감아 주는 비상 탈출구예요.
정의 롤백(Rollback)은 데이터베이스나 소프트웨어 시스템에서 작업 도중 오류가 발생했을 때, 문제가 생기기 바로 직전의 정상 상태로 데이터를 되돌려 놓는 복구 기술이에요. 잘못된 변경 사항을 취소하고 시스템의 안정성을 지키는 핵심 안전장치예요.
왜 되돌리는 기술이 꼭 필요할까요?
스마트폰 뱅킹 앱으로 친구에게 돈을 보내는 상황을 떠올려 보세요. 내 계좌에서 돈이 빠져나간 직후 은행 전산망에 갑작스러운 정전이나 오류가 생겼다고 가정해 볼게요. 친구 계좌에는 아직 돈이 입금되지 않았는데 시스템이 그대로 멈춘다면 어떻게 될까요? 내 돈은 허공으로 사라지고 양쪽 통장 잔액은 엉망이 되고 말아요.
컴퓨터 세상에서는 이처럼 여러 단계가 엮인 작업이 어설프게 중간에서 멈추면 치명적인 사고로 이어져요. 모든 단계가 완벽하게 끝나지 않았다면 차라리 아무것도 건드리지 않은 상태로 두는 편이 훨씬 안전해요.
그래서 시스템은 작업 도중 단 하나의 오류라도 감지하면 진행하던 과정을 즉시 멈춰요. 그리고 내 통장에서 돈이 빠져나가기 전의 상태로 시간을 되감듯 데이터를 복원해요. 이처럼 데이터가 꼬이지 않도록 작업 전체를 없던 일로 되돌리는 기술이 바로 롤백이에요.
어떻게 원래 상태로 정확히 되돌릴까요?
동화 속 헨젤과 그레텔이 길을 잃지 않으려고 숲속에 조약돌을 떨어뜨려 둔 장면을 기억하실 거예요. 데이터베이스나 컴퓨터 프로그램도 시스템을 변경하기 전에 조약돌처럼 꼼꼼한 발자국을 미리 남겨둬요. 이를 컴퓨터 과학에서는 '로그(Log)' 또는 '스냅샷'이라고 불러요.
작업을 시작하기 전 시스템은 현재 데이터의 원래 모습과 앞으로 수행할 변경 계획을 특별한 기록장에 먼저 적어둬요. 만약 3단계 작업을 하다가 2단계에서 예기치 못한 에러가 터지면, 시스템은 이 기록장을 펼쳐 들고 방금 바꾼 내용을 역순으로 하나씩 취소해 나가요.
덕분에 복잡한 계산을 처리하다가 갑자기 컴퓨터 전원이 꺼지거나 인터넷 연결이 끊겨도 안심할 수 있어요. 시스템이 다시 켜질 때 미리 저장해 둔 변경 전 기록을 읽어와서 오류 직전의 깨끗했던 시점으로 안전하게 되돌려 놓기 때문이에요.
조금 더 정확히 말하면: 트랜잭션과 서비스 배포
조금 더 정확히 말하면 롤백은 주로 데이터베이스 트랜잭션과 프로그램 배포라는 두 영역에서 가장 핵심적으로 쓰여요. 데이터베이스에서는 쪼갤 수 없는 하나의 작업 묶음을 트랜잭션이라고 불러요. 여기서는 '전부 성공하거나 아니면 아예 실행되지 않아야 한다'는 원자성(All or Nothing) 원칙을 지키기 위해 롤백이 반드시 작동해요.
한편 웹 서비스나 스마트폰 앱을 서비스하는 개발 현장에서도 롤백은 매일 활약해요. 개발팀이 멋진 새 기능을 담아 최신 버전의 프로그램을 서버에 배포했는데, 갑자기 앱이 꺼지거나 결제가 안 되는 심각한 문제가 터질 수 있어요.
오류의 원인을 찾고 코드를 수정해서 다시 배포하려면 몇 시간이나 며칠이 걸릴 수도 있어요. 이때 운영팀은 즉시 배포 롤백 명령을 내려 방금 올린 버전을 취소하고 직전의 안정적인 버전으로 되돌려요. 롤백은 사용자의 피해를 최소화하고 서비스 중단을 막아주는 최후의 방패 역할을 해요.
🤔 흔한 오해
롤백을 실행하면 버그나 오류의 원인이 저절로 고쳐진다.
롤백은 문제를 고쳐주는 기술이 아니라, 문제가 생기기 이전의 안전한 상태로 시스템을 '되돌려 놓는' 응급 처치예요. 오류를 일으킨 근본적인 원인은 개발자가 따로 원인을 찾아 코드를 수정해야 해요.
🧺 일상에서 만나요
롤백은 시스템 작업이나 배포 중 오류가 났을 때, 작업 전의 안전한 상태로 되감아 주는 복구 기술이에요.