2 ms·
I don't think people account for the amount of additional complexity to integrate AWS services. There are three huge pitfalls of building on AWS: configuratio
by tonymet 5y ago
I don't think people account for the amount of additional complexity to integrate AWS services. There are three huge pitfalls of building on AWS: configuration & API complexity , artificial resource constraints like iOPS and vcpu budget, and vendor lock-in .
Simple integrations, e.g. among cloudwatch , dynamoDb, s3 typically require quite a lot of boilerplate configuration for networking, IAM permissions, provisioning (e.g. in Cloudformation), and the APIs to read and write are needlessly complex . Compare the API for cloudwatch to a logfile or Dynamo to redis.
If you already have unix skills, you will be infinitely more productive with a couple linode instances.
AWS (and all cloud) also has "magic constraints" like iOPS & cpu budget that you suddenly slam into. Your app typically runs fine until a certain amount of traffic reaches one of these budgets and then it suddenly hangs. If you are familiar with traditional resource estimation & constraints – this is an unpleasant and unexpected surprise.
When you run a small startup, these constraints often cause you to drastically increase your budget because the constraint is hit in the middle of business (e.g. upsizing a volume or DB instance to add additional IOPS at the cost of $20-50k / mo)
App platforms like lambda force you to rewrite your code so that it's hard to maintain and nearly impossible to test.
If you want to leverage your skills and have a predictable experience, KISS and run your services on a dedicated host.