Since I’ve parted from Tokobagus I’m involved in several lower profile startups in Indonesia, I just love pioneering, build stuff and help out like minded peers. In general, I like to get involved really early stage because I think that’s where I can contribute a lot and it’s the phase I enjoy most. One rule though, the startups I like to get involved in have to have great ambitions and their model needs to be scalable, in the end I like building big things.
Scalable not only means that the product should be scalable, but also the organisation and infrastructure, and that’s mostly where I come in. In my past I had some experience with scaling an e-commerce platform to become one of the largest sites in Indonesia and I definitely remember the head aches and stress that gave us. So I like to spend time thinking about and working on solutions that are scalable from the start, which is for a part in the code and for a part in the architecture. Often this means serious investing in hardware and knowledge from the start, but startups are startups and often have little means, no money, short on staff and a hell of a lot of work to do.
So the challenge for most startups is building something that’s performing, is scalable and doesn’t need a whole battalion to manage the environment. As these challenges became kind of relevant lately I decided to have a look at AWS, a cloud solution which should fix all these issues. I had a meeting with some AWS representatives who did a great pitch for their products, but sales guys will be sales guys so I thought it was time to put their products to the test.
Subject of the test: this wordpress blog. Goal: completely bring it to the cloud and use as much as possible AWS products, in other words, going completely overboard.
Amazon CloudFront is a content delivery web service. It integrates with other Amazon Web Services to give developers and businesses an easy way to distribute content to end users with low latency, high data transfer speeds, and no commitments.
Amazon S3 is storage for the Internet. It is designed to make web-scale computing easier for developers.
Basically Cloudfront delivers the content stored in S3 “buckets”, it’s a CDN solution which I was already using for several sites. Because I run sites with a global targeting it’s important that the user experience is as much as possible fast, predictable and consistent regardless of someone’s location. Having read some tests here and there and having done some tests myself, Amazon performs ok but there are definitely faster solutions out there. But, the ease of use, the ease of mind, the “pay as you go” policy made me a loyal user of Cloudfront. But if your main target market is Indonesia you might want to consider adding a local CDN provider such as Cloud Kilat to speed up things in this specific area.
Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides resizable compute capacity in the cloud. It is designed to make web-scale computing easier for developers.
So far I’ve been a loyal and happy customer of Webfaction, the performance is great, support is fast and effective and even though they’re not cheap I guess they charge a fair price. But, the problem with Webfaction is scalability. As I started a particular new website and I had no idea what to expect I upgraded my hosting account to get 1/4th of a server. This meant that my website needed to be migrated from one server to another which in the end brought some headaches. Nothing I couldn’t handle but it kind of worried me a bit for future scaling. Also, in the end it seemed I over-scaled things a bit and in effect paying more than I should.
In that respect, EC2 is different. Basically you create an EC2 unit with the capacity you need in terms of processor power, IOPS, region and storage. After that everything can be scaled up or down within literally a few minutes and you pay as you go. You can make backups (snapshots) of your storage devices with just a click on the button. There are a lot of operating systems to choose from but it’s not out of the box as you’re used of from a regular hoster. After setting up your EC2 instance you basically have a virtual server with Linux or Windows installed and still need to do your own configuration.
Again, people can argue whether the price performance ratio is comparable with other Cloud or hosting providers, but I will park that issue to the conclusion of this post.
Amazon Relational Database Service (Amazon RDS) is a web service that makes it easy to set up, operate, and scale a relational database in the cloud. It provides cost-efficient and resizable capacity while managing time-consuming database administration tasks, freeing you up to focus on your applications and business.
RDS is basically a out of the box database setup in which you can choose between MySQL, PostgreSQL, Oracle and SQL Server. Though I’m not 100% sure it seems to me that RDS is basically an EC2 instance configured for database use. Performance wise, based on an m3.medium RDS, I think a local database server in your EC2 instance performs better. However, performance is just one of the reasons to choose a specific solution. In my case, I’m striving to create an environment which is load-balanced across different regions and to avoid sync hassles RDS just might be the right solution. The (slight) loss in performance can be solved by implementing caching to compensate on the read side and simply upscaling or make use of provisioned IOPS that ensures you of your RDS being able to always process a certain amount of transactions in a certain time frame.
One of the minuses is that RDS has no tools to actually manage your databases, you need to open up your security policy to allow a tool like MySQL Workbench to manage your databases.
ElastiCache is a web service that makes it easy to deploy, operate, and scale an in-memory cache in the cloud. The service improves the performance of web applications by allowing you to retrieve information from fast, managed, in-memory caches, instead of relying entirely on slower disk-based databases. ElastiCache supports two open-source caching engines: MemCached and Redis.
Same like RDS, this seems to be similar to an EC2 instance but then based on a MemCached or Redis image and obviously being tweaked and tuned to tailor its function. I’ve only tested the MemCached version and it was installed and implemented in this blog in probably 10 minutes time. It works, not much more I can tell about it at this moment since this blog is not really a high traffic site.
Elasti Load Balancer
Elastic Load Balancing automatically distributes incoming application traffic across multiple Amazon EC2 instances. It enables you to achieve greater levels of fault tolerance in your applications, seamlessly providing the required amount of load balancing capacity needed to distribute application traffic.
Basically I figured if I want to use multiple web servers (EC2 instances) over different regions for one website, I will need a load balancer. So I’ve installed it and all I can say it seems to work
The question was whether AWS is a blessing for digital startups. My answer is short and sweet: YES!
We can all argue about long term cost and performance compared to other solutions such as running your own infrastructure and for sure there are other discussions to have as well. But, AWS allows any startup instant access to high tech stuff without the need for upfront investments.
The AWS system for scaling any service is just awesome. Coming back to the cost aspect, I’m more than happy to pay premium knowing I don’t need to worry about data centers, crashing servers, failing backups, managing a team of sys admins, synchronisation issues and that I can INSTANTLY upsize or downsize any specific component of my infrastructure.
AWS allows any startup to focus on more important stuff such as developing the product itself without having to worry about infrastructure.