Lambda Love

Posted by: Kabir Chandhoke

About an year ago I blogged about how we first used AWS Lambda to power the video effects engine of a video ad tech product we built for a client.

The love affair with Amazon’s serverless offering since then has blossomed. Not only did we save a ton of money for our clients by reducing wastage and DevOps cost but we were able to really embrace the microservices architecture completely and our app servers could now focus on their real job i.e. request/response.

See how we used AWS Lambda successfully in other projects below:
ShopnSocial – This social browser we built allows users to share what they’re browsing to their friends. Clicking a screenshot on the client i.e. browser/phone would have had the following problems:

User experience – The whole process of clicking a screenshot locally, compressing it and send uploading it would have been slow and spoils the user experience.

Image size and Aspect ratio – What would happen if a user on a tablet sent a screenshot to a phone user? We would have had to create multiple versions of the same image at the server side and send based on target user – clumsy and expensive.

sns

Solution – We used phantomJS hosted on Lambda to create a virtual screenshot of what the user was seeing by sending the site URL and scroll position of the browser to the Lambda function that created the screenshot and saved it on S3.

Relayhealth Transport – This is a healthcare logistics application we built that allows patients to commute to their caregiver appointments for workers compensation cases.

relay

The application at various places i.e. Web admin portal, PDF invoices and native Android/iOS apps had to show a screenshot of Google maps with our without the path taken by the patient. AWS lambda was used to create images of all these versions of the maps, pretty much like the map you see on the Uber receipts you receive.

Price.co.in – Is a product comparison and recommendation engine built for the Indian market. The site gathers the latest product prices and other information from leading Indian E-Commerce web sites via APIs and/or web scraping.

price

All the jobs that get product information and update our Big Data in Mongo are written as small Lambda jobs. This helps us to keep costs super low as we can tweak the frequency of these jobs based on the update patterns of our ecommerce sites and our internal algorithm.
TailMaters – is a mobile app that we built for a US based client. The app in one line can be described as “Tinder for Music events”. Users can follow their favourite artists and events and discover other people based on their music tastes.

tailmaters

The app needed to show Facebook updates from followed artists – the job that does this is built as a Lambda job, we can increase the frequency of the job as when we add more artists and users.

We also needed to get event information for all the artists in our database from Seatgeek, again this was done as a Lambda job. Having these jobs as microservices keeps our servers on Galaxy doing what they are designed to do i.e. server up user requests in real time.

Conclusion – Using a microservices architecture leveraging AWS’s Lambda:
1. Keep infrastructure costs down for our clients – We were able to keep infrastructure costs for our clients as low as possible. We work with a lot of early stage and seed funded startup and every dollar is precious. The pay per use model with zero upfront costs helps startups save costs and deploy those resources in building features and responding to customer needs rather than worry about paying their monthly infra bills.

2. Save internal costs and add value – Internally as an organization we were able to save time (and money) on DevOps tasks like rolling out EC2 instances, setting up auto scaling, monitoring, looking at budget overruns and let our DevOps team focus on adding value by Continuous Integration.

3. Create reusable Assets – Every organization hopes and dreams they don’t need to recreate the wheel on similar projects and have an efficient mechanism to reuse code. Lambda functions take this kind of reuse to a new level – now, if we needed to say implement a feature to take a screenshot or create a pdf from an HTML we just called an API that we had created for an earlier project. Add to that, the microservices architecture makes this technology agnostic, so I could have a team working on a PHP project call a Lambda function that was created for an earlier node project without worrying about deploying to another server, etc.
SourceFuse is AWS Standard Consulting Partner. Reach out to us if you want to reap the benefits of Lambda and other AWS services in your startup or enterprise.