What happened when you have internet interruption during development/testing cycle?
I try to design my app with 12-factor in mind (http://12factor.net/) so all the configuration is passed to the app at run time (either ENV vars, config files, args or pulled from etcd). I'm trying to run the exact same code while in dev and while deployed in prod. For example I will absolutely try and avoid having "if Env == Test" or "if Env == Prod" in my code.
For example, my service connects to S3 to store/retrieve files. The access key, secret key and even the bucket name are all passed as ENV variables so I can work on a test bucket easily with a test api key without changing code. Some services I can run locally (memcache or redis are really easy to spin up locally) and some services I'll rely on Amazon to provide like S3 even in dev/test. Of course this requires a reliable internet connection but it's the best way to deal with this for me as a single developer/devops.
I'm sure bigger teams handling larger projects could give a lot of valuable information on the subject, I would love to hear about it too.
To further separate dev/prod you can create separate VPC (virtual networks) and use IAM (ACL) to limit access. It's also possible to create an AWS account for each developer and keep an eye on the spending with consolidated billing but in practice devs often want to share infrastructure for example when testing out something together.
Downtime sucks, if it happens a lot try investing in a better Internet connection. It's possible to re-use ansible formulas to deploy something locally but usually you'll end up booting machines that themselves need internet to fetch packages / dependencies anyways.