I’ve been working for/on/with startups for quite a while now, starting few of them (including NUVIAD) helping other entrepreneurs with their startups, and frequently the question of server hosting, environment and planning comes up.
I’m an AWS groupie. Love what they are doing with AWS. And for me, one of the most frustrating things is to hear product designers or developers treat AWS is merely a hosting for their servers when actually, it is way more than that – For me, AWS is a product environment. Hosting is just one service I’m getting from them. So, to start with – Know Thy Environment, what it offers, how to manage it, its pricing and all other relevant aspects.
We, in NUVIAD, are using many functionalities of the environment and as to the extend possible everything as a managed service – I don’t want to reinvent the wheel, I don’t care about upgrading MySQL nor do I want to care too much about the load balancer’s configuration. I want to focus on MY product.
Here is a partial list of elements we use in AWS:
1. Naturally EC2 servers: Few of our servers are On-Demand, some are Reserved and most of them are spot instances. In many cases you can deal with the uncertainty the spot instances life cycle by writing a simple watch-dog which checks the status on the servers – see my previous post about that issue – all servers are running NodeJS and few of them also ExpressJS really run to work with.
2. Redshift: Data warehousing is handled by Redshift – Yes, feature wise, I’de rather use HP Vertica but I have no clue how to maintain HP Vertica in a production environment. Luckily Redshift is not bad and is fully managed.
3. DynamoDB: most of the structured data is kept in Dynamo. Blazing fast, very reliable. A bit costly in some cases. To deal with the cost issue I’m using Redis for caching (some other time on that).
4. Redis: Blazing fast, highly reliable and very simple to work with using NodeJS. Did I say that it is also fully managed?
5. RDS: Using MySQL for statistics where I need some more power to run complex relational queries. And yes, also fully managed.
Now that I look at it, we use all the DB options AWS has to offer (I even used SimpleDB, but no longer do)…
6. Load Balancing: We route all our traffic through few load balancers which do a great work. The only issue is the response the Amazon Load Balancers have to spikes in traffic.
Now, I’m exploring AWS Lambda – which is server-less computing environment to offload simple event driven server tasks – Looks very promising.
The bottom line? Learn about the environment you are using, explore feature and capabilities to save your costs and … RTFM!