Amsterdam, NetherlandsUSE CASE
Monitor overall health, improve the performance by detecting bottlenecks.
Soulpicks helps you discover places loved by friends and experts. It lets you share and collect memorable experiences and make the most of your time. Soulpicks is a start-up based in Amsterdam, founded in 2018, and they launched their app in April 2019. As a start-up, they took advantage of going serverless as it lets them focus on business objectives rather than infrastructure concerns.
The Choice for AWS Serverless
The Soulpicks platform is built on AWS and is fully serverless. It uses API gateway, DynamoDB, S3 and ElasticSearch to offer a Rest API to natively build apps. Additionally the platform uses other serverless technologies including CloudFront and Lamdba@Edge. Soulpicks chose AWS as it is the leading Cloud provider and offers the necessary tools to build highly secure, available, performant and scalable services. Going serverless meant that no effort had to be spent on infrastructure and that functionality could be built from day one. Combining infrastructure-as-code in combination with pay-per-use also meant that identical environments could be created to be used for development, test, and CI. These test environments are identical to the production environment but do not cost anything when not used.
Soulpicks needs to have an overview of all systems to ensure they are running fine and be alerted of any issues. As well, it is vital to act quickly on any incidents. Although the basic metrics and alarms provide a good way of being alerted of problems, it was taking a lot of time to find out the exact cause of a problem. For this reason, Soulpicks started to use Thundra for their monitoring and visibility solution. It provides a great systems overview, a way to proactively improve performance and offers tools to quickly troubleshoot any part of the system in case of an error. Soulpicks gained the following observability capabilities with Thundra:
- Understanding the overall health of their architectures by checking the cold-starts, invocation durations, memory usage, etc. at a glance.
- Navigating to stack trace and logs very quickly and understanding the root cause of problems/alerts.
- Using the detailed tracing of Thundra when the Java methods are slow for numerous reasons.
- Discovering the bottlenecks caused by resources like S3, DynamoDB, and ElasticSearch or third-party APIs.
- Being able to distinguish the problem of a single customer with Thundra’s invocation tagging and querying capability.
- Understanding the problems in serverless transactions on top of invocations with Thundra’s distributed tracing.
Tackling Cold Starts
Cold starts are more of an issue for the serverless community using Java because the container startup time and code initialization take longer compared to dynamic languages like Node.js or Python. In order to alleviate this problem, warm-up solutions have been developed by the community by sending empty messages to Lambda container to keep them warm. However, many of the other warm-up solutions just keep one lambda warm, which means that if you suddenly get a few requests at the same time, cold starts will inevitably occur. Soulpicks adopted Thundra’s stat-aware warm-up solution which intelligently increases the number of lamdbas to be warmed up due to increasing traffic. In this case, Soulpicks managed to decrease the frequency of cold starts by 80%. Elmer van den Heuvel, Cloud Architect & CTO of Soulpicks, says:
Elmer van den Heuvel
Cloud Architect & CTO
Thundra allows us to keep a great overview of our Serverless AWS environment as we can easily monitor lambda performance, cold starts, errors and costs. Tagging invocations with user ids, error codes and other information is invaluable to quickly identify these invocations afterwards. In addition, the detailed tracing functionality offers an easy way to identify and improve performance bottlenecks.