Estrategias para tirar e restaurar snapshots

Oi pessoal.

Estive lendo bastante sobre CQRS+EventSourcing (que pretendo aplicar em breve) e um dos pontos comuns nos artigos e apresentações que vi é o tema do Snapshot. Entretanto o que não citam são maneiras de implementar o snapshot e como restaura-lo.

Gostaria de saber se vocês podem compartilhar sua experiencia nesse assunto.

TL;DR: Como implementar snapshotting na minha aplicação CQRS+EventSourcing? Prós e contras?