Circa- April 2007 AD, a major revolution was starting to happen on the Planet Earth. Amazon.com, which until now had been one of our favourite e-commerce platforms decided it was going to utilize it's spare server capacity and lease it out to the world in a pay-as-you-use basis. What they called Amazon Web Services (or AWS) at that time, is today being heralded as a wave of Cloud Computing, which almost all server infrastructure providers are implementing.
As a company and as a business, how best can you take advantage of this marvellous framwork which embraces the concepts of Software as a Service (Saas) and Service Oriented Architecture (SoA) to the maximum. At Tekriti we have been experimenting, evangelizing and executing innovation using Cloud Computing and the AWS Stack since April 2007 itself.
As early as April 2007, we were clear that if you are building a business which has a SaaS based model and is architected on the SOA principles, then Cloud Computing was the way to go. What's more in July of 2007, our product TekMedia (a "YouTube out of the box" solution) utilized both these paradigms and was a finalist at the Proto.in conference in Chennai. Since then we have brought on many of our customers to build and deploy their business and web properties using the Amazon Cloud.
Cloud Computing and Service Oriented Architecture (SoA)
For the un-initiated , What is SOA? Applicatons relying on concepts of distributed computing, loosely-coupled units, service orchestration and interoperable services embrace the principles of SOA. The Amazon Webservices provide the following services as a part of its stack:
S3 - Storage, EC2 - Computing, SQS - Message Queues, EBS - Block Storage which can be mounted on an EC2 instance, CloudFront - Content Distribution Network, SimpleDB - Database.
All of the above services when orchestrated together can produce music more melodious than a Beethoven composition. In TekMedia we utilized S3, CloudFront, EC2 and SQS to create an architecture which had scalability built into it. Troubleshooting incase of failures is easy since the systems are so loosely coupled, you almost always know which service is causing an issue.
The TekMedia platform enables any user to publish a form on their end and allow it’s users to upload videos. The videos are ingested by the TekMedia servers and transcoded to flash (flv) formats. Transcoding is a CPU intensive operation and can occur in bursts. Hence we needed a methodology to handle the burst loads and provide an experience to our customers where the wait time for the time a file is uploaded to when it is available for viewing was minimum. Have dedicated servers for handling the transcoding was proving to be quite expensive. Moreover there needed to be a better way to handle surges in traffic, without compromising on the user experience.
Working completely off Amazon Web Services and building on S3 for media storage and streaming, EC2 for dynamic computing and instance spawning for transcoding and SQS for storing the transcoding requests in a queue, TekMedia had scalability built into the entire architecture.
The following architecture was built to introduce a new paradigm to the computing world which was "The response time of the application is inversely proportional to the load or response 1/web-server load"
Cloud Computing and Software as a Service (SaaS)
SaaS is Service on Demand, SaaS is pay for what you use, SaaS is no expensive one time licensing, but subscription based licensing. For web-based businesses SaaS is the way to go. If you are thinking of building a web-based service then it's best to go the SaaS way. Now to support one SaaS model you need to ride on another SaaS service. Amazon Web Services are the appropriate SaaS based services which can power your SaaS business. We believed in this philosophy for TekMedia and that allowed us to keep our services low cost and easy to deploy. We set benchmarks for ourselves keeping certain service delivery SLAs in mind, and that ensured that we paid for the level of service we used.
Our intelligent algorithm automatically created new instances in the cloud, from a pre-built AMI (Machine Image), which was configured to poll the simple queue service as soon as it came into the running state. Once up the instance would read the message from the queue, fetch the video from the input S3 bucket, transcode the video, insert it into the output bucket, write a new message in the output queue, check for any pending messages in the input queue, or shutdown if none were pending. More importantly we were creating and releasing instances JIT (Just in Time) which further allowed us to work off a very tight budget. The fixed costs were only for the web and database server.
We were thus able extend cost advantage to our customers because of the cost savings to us.
So what do you think, are you still spending huge sums of money running your SaaS business on capex heavy infrastructure. Do you face scaling issues everytime you hit new peaks of service load. Do you want to embrace SOA for a completely decoupled architecture, which has multiple discrete failure nodes and higher reliability. If the answer to any of the above questions is yes, you need to start thinking about Cloud Computing and try to reach the stars.