Thanks for your detail explanation.
I haven't used spot instance before, I am curious how you handle the termination gracefully? i.e. When the spot instance get terminated during the middle of transactions, e.g. uploading large file, writing to DB etc.