There were two talks in the meetup, both dealing with serverless computing:
The first talk by Serhat Can dealt with serverless architectures on AWS Lambda. During the talk it was presented the experience of OpsGenie with serverless architectures for their alerting and monitoring service.
One of the use cases shown that caught my attention was the DynamoDB autoscaling system they have in place. Some of the cool features along it include a configurable DynamoDB table alarm in Cloudwatch that is updated with the increase/decrease of the table capacity.
At Skyscanner hotels we faced similar issues in the past as we make an intensive use of DynamoDB for the service that manages the sorting of hotel partners in the search results in case of price parity. The algorithm behind this computation, that we call Partner Sorting Algorithm serves the precomputed positions for each partner from a DynamoDB table.
Another familiar example was the use of Lambdas for replicating data across regions for DynamoDB and ElasticSearch aiming to decouple the replication logic from the application logic. This solution did not work for us due to the large size of our tables and the long time it took to replicate the data between regions.
Finally it was mentioned the challenges that cloud-first services pose such as proper monitoring, high availability, replication, cold start time and blue-green deployment (that we manage through Slingshot).
Overall it was really interesting listening to their experience as I can closely relate to many of the problems that surfaced to them while developing our own cloud-native services.
The second talk focused on serverless data processing with Data Pipeline, Docker, Lambda, API Gateway, ECR and SNS by one of my colleagues at Skycanner, Radek Miazio.
Radek talked about the different AWS services that could be used for the processing they needed to do in order to create an index for Skyscanner’s internal representation of the world. After discarding many of the AWS services due to their limitations, they settled up with Data Pipeline and explained some of the problems they faced such as:
- Complex setup due to the massive JSON
- The long initialization that caused API Gateway to timeout (service cold start again)
- Long delay in logs (up to 20 minutes)
- Limits to the infinite resources that the cloud provides
From both talks it could be distilled that when designing a serverless service the solution has to take into account the constraints of the still immature services offered which sometimes are not clearly laid out in the docs.
Finally these experiences also surface that the vast computing resources that the cloud provides outgrow the intricacies of developing ad-hoc services coupled to the available proprietary services.
The meetup was recorded and is available in Youtube: