Since we were using Cloudformation, we were completely tied into the AWS ecosystem. Our microservices could not be deployed to other cloud providers without a significant rewrite.
VMs would take a long time to start up (around 5 minutes) when rolling out updates to our microservices.
We were unable to clearly determine the exact cause when a microservice failed. Was the failure caused by changes in a security group or was there simply a bug in the microservice?
Our Puppet modules lived in a separate repo adding an extra barrier for developers who needed to update runtime configuration of their microservices.