316
클라우드 네이티브 애플리케이션 디자인 패턴
어떤 경우에는 서비스의 상태 그 자체가 아주 크고 읽고 쓰는 데 시간이 오래 걸릴 수도 있습
니다. 이 때는 증분 스냅숏
incremental
snapshot
을 사용해서 이전 스냅숏과 현재 상태 간의 차이점만
기록하는 것으로 문제를 해결할 수 있습니다. 그리고 서비스가 재시작하면 증분 스냅숏을 재생
해서 상태를 복구할 수 있습니다.
5
분 크기의 윈도우가
1
분 단위로 움직이는 애플리케이션이
있다고 생각해봅시다. 이 애플리케이션은 마지막 분 단위로 변경이 이루어진 경우 매
1
분 마다
변경된 내용만 증분 스냅숏으로 저장합니다. 장애가 발생하면 마지막 다섯 개의 스냅숏을 읽어
와서 마지막
5
분 크기의 윈도우 상태를 복구할 수 있습니다.
상태 스냅숏을 만들고 스토어에 저장할 때는 스레드나 그와 비슷한 기술을 사용해서 상태를 저
장하는 작업이 이벤트를 처리하는 작업을 중단시키지 않도록 해야 합니다.
상태 스냅숏을 만들고 저장하는 주기는 짧지 않도록 합니다. 주기가 짧다고 해서 크게 이득을
보는 것도 아닙니다. 그렇다고 스냅숏 저장 주기가 너무 긴 것도 좋지 않습니다. 증분 스냅숏의
크기가 커져서 읽고 쓰는 데 시간이 오래 걸릴 수도 있으며, 상태 복구 시 더 많은 이벤트를 재
생해야 한다는 문제도 있습니다.
관련 패턴들
임시 이벤트 순차 정렬 패턴 및 윈도우드 애그리게이션 패턴
이 패턴들과 주기적 상태 스냅숏 저장 패턴을 함께 사용해서 상태를 저장하고 신뢰성을 구
현할 수 있습니다.
재생 패턴
마지막 상태 ...