[CS / Java] 폴백(Fallback)과 롤백(Rollback)

gyeol·2025년 12월 13일

CS

목록 보기
13/13
post-thumbnail

폴백(Fallback)

폴백은 어떤 기능이나 서비스가 실패했을 때에 대체 동작을 수행하는 전략이다. 실패를 되돌리기보다는 서비스를 지속적으로 제공하는 것에 초점을 둔다

  • 외부 API 호출 실패 시 기본값 반환
  • 마이크로서비스 장애 시 캐시 데이터 제공
  • 장애 허용 설계

Java 예제

public class FallbackExample{
	public static String getUserInfo(){
    	try{
        	// 외부 API 호출한다고 가정
        	throw new RuntimeException("API 서버 장애");
        } catch(Exception e){
        	return fallbackUserInfo();
        }
    }
    
    public static String fallbackUserInfo(){
    	return "기본 사용자 정보 반환";
    }
    
    public static void main (String[] args){
    	System.out.println(getUserInfo());
    }
}

실행 결과

기본 사용자 정보 반환

API 실패와 무관하게 서비스는 정상 응답을 제공한다.

롤백(Rollback)

롤백은 작업 도중 오류가 발생했을 때 이전의 정상 상태로 되돌리는 것을 말한다. 주로 트랜잭션 개념과 함께 사용되며 데이터의 일관성과 원자성을 보장하는 것이 목적이다.

  • 데이터베이스 트랜잭션 실패 시
  • 금융 거래, 주문 처리 등 실패 시 데이터 복구가 필요한 경우

Java 예제

public class RollbackExample{
	public static void processOrder(){
    	try{
        	System.out.println("1. 주문 정보 저장");
            System.out.println("2. 결제 처리");
            
            if(true){
            	throw new RuntimeException("결제 실패");
            }
            
            System.out.println("3. 주문 완료");
        } catch(Exception e){
        	rollbaack();
        }
    }
    
    public static void rollback(){
    	System.out.println("오류 발생 -> 모든 작업 이전 상태로 롤백");
    }

    public static void main(String[] args){
    	processOrder();
    }
}

실행 결과

1. 주문 정보 저장
2. 결제 처리
오류 발생 → 모든 작업을 이전 상태로 롤백

결제 실패 시 주문 저장도 무효 처리하는 구조이다.

정리

폴백은 실패하더라도 서비스를 계속 제공하기 위한 대안이며 롤백은 실패한 작업을 없었던 것으로 만드는 것이다.
아무래도 실패한 작업들은 없애는게 아닌 따로 DLQ와 같은 큐에 저장해 관리자에게 알림으로 보내 사후 조치를 취하는 것이 가장 적합하다.

profile
공부 기록 공간 '◡'

0개의 댓글