Side effects is definitely the biggest problem to solve here. For SQL you can start a transaction and roll it back afterwards. Disk access can be done with snapshots. Network traffic... well I guess it depends on what you're doing exactly. There's lots to do but it can work.