I was discussing a server outage with a colleague recently. AWS had done some confusing things, and the team was rallying to troubleshoot & fix it.
He made an offhand comment that caught my attention…
AWS is too complex for small dev teams. I’d recommend we host in a traditional data center.
AWS to Small Dev Teams
It’s an interesting point. For all the fanfare over Amazon, lost in the shuffle is the staggering complexity that we’re taking on. For small firms, this is a cost that’s often forgotten when we smell the on-demand cool-aid that is EC2.
Here are my thoughts…
1. Over 70 Services Offered
Every time I login to the AWS console there’s a new service offering. Lambda & serverless computing. CodeDeploy, Redshift, EMR, VPC’s, developer tools, IOT, and the list goes on. If you haven’t enabled MFA on your IAM accounts you’re not alone!
Also: Is Amazon too big to fail?
2. Still Complex to Build High Availability
The song I hear out of Amazon is, we offer all the components for a high availability infrastructure. multiple availability zones, regions, load balancers, autoscaling, geo & latency DNS routing. What’s more, companies like Netflix have open-sourced tools to help.
But at a lot of startups that I see, all these components are not in use, nor are they well understood. Many admins are still using Amazon as an old-school datacenter. And that’s not good.
Sometimes it seems that AWS is a patient in need of constant medication.
Related: Are we fast approaching cloud-mageddon?
3. Need A Dedicated DevOps
As AWS becomes more complex, and the offering more robust, so too does the need for dedicated ops. If your devs are already out of bandwidth, but you don’t quite have so much need for a fulltime resource a consultant may be an option. Round out the team & keep costs manageable.
If you’re looking for an AWS
Check out: Does Amazon eat its own dogfood?
4. Orchestration Involves Many Moving Parts
Infrastructure as code offers the promise of completely versioning all your servers, configurations, and changes. From there we can apply test-driven development & bring a more professional level of service to our business. That’s the theory anyway.
In practice, it brings an incredible number of new toolsets to master and a more complex stack besides. All those components can have bugs and need troubleshooting. This sometimes just kicks the can down the road, moving the complexity elsewhere.
It’s not clear that for smaller shops, all this complexity is manageable.
5. Troubleshooting Failed Deployments
I was looking at a problem with a broken deploy recently. Turns out a developer had copied & pasted some code solution off the internet, possibly from a tutorial, and broke deployments to staging.
Yes, perhaps this was avoidable, and more checks & balances can fix. But my thought is continuous integration & continuous deployments are not a panacea. More complexity brings a more complex web to unweave.
Although AWS may seem confusing at the beginning, it has a lot of features that a few cloud solutions offer. So, AWS isn’t complex for a small Dev team and startup as long as the team is dedicated. We hope you have found this article helpful in learning about these. Thanks for reading!