Run as much as I can in kubernetes
Have 2 ASG's in my kubernetes cluster
1 is for dedicated (or RI) instances that run more of stateful apps. The ones I don't want to move around a lot
The other ASG is for spot instances. I use a lambda job to replace a instance spun up with a spot instance. Those will stay up as long as it stays below the bid price. I've saved companies around 50-60% min of their ec2 bill this way.