With thousands of customers requesting rides through its app every day, Beat uses AWS to provide a massively elastic environment with a 100-millisecond response to users wherever they are. The company provides a mobile app in Greece, Peru, and Chile that enables passengers to locate and hail a Beat car within seconds. Beat runs its mobile app, website, and custom CRM system on AWS, using services including Amazon Elastic Compute Cloud (Amazon EC2), Amazon Aurora, and Auto Scaling.
“The main challenge for a ride-hailing app like Beat is being able to expand and shrink our infrastructure as needed,” says Alexandros Panagiotou, senior DevOps engineer at Beat. “The volume of traffic we receive varies widely between busy and quiet periods.” Time of day, day of the week, weather conditions (more people request a ride if it’s raining), and large events like soccer games—all impact demand for rides.
As a result, Beat needs an infrastructure behind its application that can scale up to handle high loads and scale down afterward.
As a startup, there was no way we could afford to build an infrastructure with the capacity for our peak load, only to have it sit idle most of the time,” says Panagiotou.
“Nor could we afford to have the experts in-house to maintain and manage such a large environment.”
With eyes on global expansion from day one, Beat was also looking to easily deploy infrastructure around the world, providing the best performance to users—passengers and drivers—in whatever city they find themselves.
Since its launch, Beat has run on Amazon Web Services (AWS). The decision, according to Panagiotou, was easy because the company could keep its IT operations team very lean—at just three people—by taking advantage of managed services in the AWS portfolio.
Beat runs its mobile application, website, and customer relationship management (CRM) system on AWS. Its application stack runs in Amazon EC2 instances managed through AWS OpsWorks, which helps the team automate deployments.
Beat also switched from a MySQL database to Amazon Aurora. “We had some problems with replication due to the load we were putting on our master database,” says Panagiotou.
“After some research, we found that Aurora could solve the problem, and we’re happy to report it’s worked out well. Also, with Aurora we do engine patches and instance upgrades with minimum downtime.” Beat uses Amazon Simple Storage Service (Amazon S3) to store static files like driver and car images, and Amazon Route 53 for domain name server (DNS) management.
Panagiotou says he and his team have poured their efforts into automating as much of the AWS infrastructure as possible “to empower engineers to do what matters, which is developing software that helps our users.” To handle its fluctuating application load, Beat uses Elastic Load Balancing to distribute traffic across multiple Amazon EC2 instances. Auto Scaling groups start and stop Amazon EC2 machines based on the number of incoming requests.
Lastly, if anything should happen that affects the health of the Beat AWS environment, Beat relies on Amazon CloudWatch to trigger an AWS Lambda function that sends engineers a message. Panagiotou explains: “We have a lot of Amazon CloudWatch alarms to monitor various parts of our infrastructure, like the number of database connections and the Elastic Load Balancing error count. When an alarm's status changes, an AWS Lambda function is triggered and sends a message to the appropriate Slack channel.”
Security, too, has improved by taking advantage of Amazon Virtual Private Cloud (Amazon VPC) and AWS Identity and Access Management (IAM). “Using Amazon VPC and IAM has helped us a lot in securing our data and giving access based on roles at no extra cost,” says Panagiotou.
By choosing AWS, Beat has a flexible platform to support expansion. During peak periods, when it can serve 10,000 journeys an hour, its application stack automatically scales up to about 40 servers. During the quietest periods, when there may be about 100 rides an hour, it shrinks to a couple of instances. “Whether we’re handling 100 or 10,000 rides an hour, AWS gives us the level of elasticity that we need,” says Panagiotou.
The company’s ventures outside of Greece have been made possible by the global infrastructure of AWS Regions and Availability Zones. “We use Amazon Route 53 geolocation policies to route traffic to the closest server that will provide the best latency,” says Panagiotou.
“By capitalizing on this feature, we lowered response times for some users in Peru from 2 seconds to less than 100 milliseconds. This speed is vital for a good user experience when dealing with a very dynamic set of resources—constantly moving cars and people.”
Currently, Beat has one application stack per market, but the company knows expansion is as easy as copying an environment and spinning it up in a new region. Thalia Geladaki, chief marketing officer at Beat, says, “Since our acquisition by mytaxi and Daimler, we’ve been growing rapidly—more than doubling the number of staff within six months. AWS gives us the flexibility to explore new markets with very little risk, because we only pay for the resources we use.”
Panagiotou adds that Beat is increasing its efforts in the automation of deployments, so that it can get new features such as ride sharing and real-time dynamic pricing to customers even quicker. Panagiotou says, “Although we’re no longer a startup, we’d like to keep that startup mentality of agility, attention to detail, and customer focus.” For example, storing code on Amazon S3 after every commit has decreased deployment time significantly. Before, on deployment, every server downloaded the same code from GitHub. This was slow because the bandwidth was throttled. Now every server gets its code from an Amazon S3 bucket.