Ross Krawczyk
Editor-in-Chief

Top 12 AWS services for building an Uber-like location-based startup

#Sales
#Sales
#Sales
#Sales
Read this articles in:
EN
PL

On-demand economy – also known as 'gig economy' or 'sharing economy' – is constantly growing and expected to generate half the sales revenue ($335bn) in the sectors with yet-prevalent traditional operating models by 2025, according to the PwC study.

With the likes of Uber, Lyft, Airbnb, and Netflix expanding further and further, more startups try to challenge the industry leaders or adapt their business models to yet-unconquered markets. Succeeding in these endeavours requires thorough software development planning and preparation for rapid scalability, should you decide to actually have a go at battling the titans with their access to 'unlimited' capital.

If the above is your goal – read on, as today we’ll focus on developing a mobility startup, specifically one of its crucial elements – the infrastructure. For the simplicity of explanation, let’s take building an Uber-like app as our example.

Cloud vs on-premise

To begin, let’s lay out the foundation. Should you go for a cloud or an on-premise hosting? Both solutions, obviously, have their own pros and cons, but as we are a startup company, going for the cloud-based option will help us save the cost of setting up and running a feasible on-premise solution.

As RST is an official AWS consulting partner, I have access to our certified cloud architects and had a chance to speak with our Chief Cloud Solutions Officer – Marek Ziółkowski, whose knowledge and expertise will help me guide you through the process of understanding what is required from the infrastructure perspective to face rapid scalability and growth of your business.

Frontend for an Uber-like app

Let’s start with the frontend of your application. In most cases, it is represented by a static web or mobile screen, meaning you don’t need to re-render what is being shown on the screen each time someone uses your application. All the interactive parts, eg navigating a map, will be done by embedding an external service, be it your custom-built one or via third-party APIs. This leaves us a fairly simple task to fulfil.

Amazon S3

Amazon Simple Storage Service (Amazon S3), simply put, is your cloud storage that offers industry-leading scalability, data availability, security, and performance features and should be used for hosting your static applications’ frontend.

Not much to add here, to be honest with you. It’s as simple as it gets. Obviously, we could dive deeper into the process of properly setting up an S3-based storage, but that would make this article too technical for the purpose of giving you an overview of what is needed for Uber-like app development, so let’s leave it for later.

Amazon S3 for an Uber-like app

Compute platform for an Uber-like app

The compute part of your application is where it gets sliiiightly complicated.

First, we need someplace to host our infrastructure. There are two options.

Amazon EC2

Amazon Elastic Compute Cloud (Amazon EC2) is the simplest and yet broadest compute platform offered by Amazon – in other words – your virtual server. Amazon gives you full access to your EC2 instances, just as if you would have with a regular on-premise server.

Here’s what it means:

  • you don’t want to build a cloud-native application (which we do recommend building, by the way);
  • you want to have access to the server’s OS;
  • you want to access the console terminal;
  • you either don’t plan to scale rapidly or you have access to DevOps engineers who will be able to configure everything properly;
  • you plan to have a stable and predictable resource usage and want to reserve instances for a longer time-frame, which will lower your costs; or
  • you don’t want to vendor lock-in yourself with AWS and want to be able to migrate when required.

AWS Fargate

AWS Fargate is Amazon’s serverless, pay-as-you-go compute engine that allows you to ignore an entire process of dealing with your own servers, whether virtual or not, and focus on developing your app instead. To be completely honest with you, Fargate is the solution we usually advise to go with, unless you have a very specific case, which an Uber-like app isn’t. Why?

  • Fargate removes the operational overhead of scaling, patching, securing, and managing servers;
  • it automatically scales your compute infrastructure according to the actual usage;
  • if your user traffic suddenly peaks due to an ongoing marketing campaign, you don’t need to prepare beforehand; and
  • if your app usage drops at night or during working hours, you don’t have to pay for the idle servers.
AWS Fargate for an Uber-like app

Now, let’s think about containerization of our application. AWS offers two services, and it’s up to you and your dev team to decide for which to go, as both solutions are equally good for the given task. Let’s look at both ECS and EKS (both are compatible with AWS Fargate and EC2).

Amazon ECS

Amazon Elastic Container Service (Amazon ECS) is Amazon’s own fully-managed container orchestration service that takes care of deploying, managing and scaling of your containerized applications.

It makes sense to go for this service if:

  • you're going to use other AWS services for hosting your application, like the aforementioned S3, and you don’t particularly care about the vendor lock-in with AWS; and
  • you don’t want to worry about having to set up everything on your own and would rather utilize proven solutions.
Amazon ECS for an Uber-like app

Amazon EKS

Amazon Elastic Kubernetes Service (EKS) is a managed container service that allows you to run and scale Kubernetes-based applications with your AWS infrastructure.

It’s worth going for EKS if:

  • you don’t want to vendor lock-in with AWS and want to be able to run your app or its elements with Kubernetes on-premise or within other cloud providers (this approach is called ‘multi-cloud’, if you’d like to search more about it); or
  • your team already has Kubernetes competencies and you don’t want to switch technologies.
Amazon EKS for an Uber-like app

Data storage services for an Uber-like app

Okay, we’ve sorted out the computing piece. Now we need to figure out how to store our data, which in the case of an Uber-like application requires specific solutions compatible with location-based services.

Amazon RDS

Amazon Relational Database Service (RDS) is a collection of managed database services which we’ll use to host our database. It’s compatible with the seven most popular engines, and most importantly, with the one we’re going to need in our case.

Amazon RDS for an Uber-like app

Amazon RDS for PostgreSQL + PostGIS

Because our location-based application needs to operate on geodata, PostGIS is an extension for PostgreSQL that enables storing and managing of various spatial information, eg polygons, geographic lines and coordinates, geometric figures etc. PostgreSQL also supports libprotobuf 1.3.0 – a library used by PostGIS to deal with map box vector tile data.

It’s also worth taking into consideration it’s best to create a separate database with installed PostGIS extension that will handle your map-related data alongside your regular PostgreSQL database.

Amazon S3 Glacier

Amazon S3 Glacier is a storage class designed specifically for data archiving, be it your logs, backups, or some actual data archives. The main principle is that you shouldn’t need to have instant access to those files. Which, in turn, will allow you to significantly reduce your storage costs for long-term digital preservation and rarely-accessed data.

Amazon S3 Glacier for an Uber-like app

Amazon CloudFront

Amazon CloudFront is a content delivery network (CDN) that is built to reduce latency and increase the performance of your application in various regions around the world. In simple terms, it caches contents of your app and when a user in Australia runs it, instead of requesting the content within your server region. Let’s say you’re based in the US, the request goes to Amazon’s Australian CDN and receives what the user needs in a fraction of the Australia-US latency.

This is extremely useful if you’re planning to operate in multiple locations around the globe, as it not only provides better experience to the end-user but also reduces your costs.

Amazon CloudFront for an Uber-like app

Location-based services for an Uber-like app

Not the last and definitely not the least, building an Uber-like startup heavily relies on proper usage of location-based services. There are plenty of various third-party map providers, and building everything from scratch would be a suicide mission from any logical standpoint, so you’ll need to select an option that works best with your planned location based features.

In our previous articles, we’ve compared the most commonly used ones, ie Google Maps, Mapbox and OpenStreetMap. If you haven’t had a chance to check it, please follow the links to the map APIs comparison as well as their pricing models.

But, as we’re looking at the services provided by Amazon, it’s worth noting that they also have their own tools for building Uber-like apps.

Amazon Location Service

Amazon Location Service is a set of solutions that natively integrate with the rest of your AWS-based services and provide plenty of ways to generate and process location data out-of-the-box.

That means you can use ALS if you want to:

  • track your assets (which would be your fleet in our Uber-like app);
  • coordinate delivery tracking (which can also be understood in a sense of moving passengers from one location to another with push notifications once you enter the geo-fenced region of passenger’s proximity etc.);
  • implement routes optimization for point-to-point navigation (perfect for offering an on-demand taxi service); or
  • use it for user engagement and geomarketing (special discount for app users at an airport).

Geospatial data is provided to Amazon from well-established global providers such as Esri and HERE, so you don’t have to worry about getting good geographic coverage and geodata accuracy.

If your Uber-like application requires custom data layers or map features altogether, you can easily integrate third-party solutions or build your own location-based services using OpenStreetMap, for instance. We used the latter for one of our largest clients – Trans.eu (here’s our case study) – the leading logistics platform in Europe and Asia.



Analytics tools for an Uber-like app

Your app is up and running. You want to keep tabs on both app’s performance and business growth. Here’s what you can get from Amazon’s offer.

Amazon CloudWatch

Amazon CloudWatch is a monitoring and observability service that provides your dev team with insights into your Uber-like app’s performance, whether we speak of system-wide metrics or just your infrastructure resources utilization.

While you, as a business founder, might not be able to fully understand the scope of provided analytics data, it’s important to have it set up from the beginning, so it’s both easier to optimize your system and quickly pinpoint any existing issues.

Amazon CloudWatch for an Uber-like app

Amazon QuickSight

Amazon QuickSight is what you might find a lot more interesting and aligned with your field of responsibility. QuickSight is one of the most popular cloud-native, serverless business intelligence (BI) tools.

As it was in the case of Fargate, QuickSight is also an auto-scaling, pay-as-you-go service that allows you to connect all your data sources within one place for complex analysis. A customizable dashboard provides you only with the data that matters to you and integrated machine learning algorithms can detect anomalies, forecast business metrics as well as perform interactive what-if analyses.

If you store all of your data inside the suggested above RDS and S3 storages, QuickSight also provides you with native integrations and granular access control.

Amazon QuickSight for an Uber-like app

Sum-up of the best AWS tools for building an on-demand delivery app

As you can see, Amazon Web Services offer a plethora of tailored solutions that can easily power your Uber-like startup, from its initial software development stages to further improvements, analysis, rapid scalability and world-wide availability.

In short:

  1. Amazon S3 – best for hosting your static frontend: websites, web and mobile applications;
  2. Amazon EC2 – the best cloud server for your backend, especially if you want to avoid vendor lock-in, but requires an experienced development team for proper setup and maintenance;
  3. AWS Fargate – the best serverless solution for your cloud-native application that offers pay-as-you-go pricing model, requires no deep DevOps expertise and is best for rapid scalability due to its auto-scaling infrastructure;
  4. Amazon ECS – Amazon’s own containerization service, best if you’re going to use more AWS-powered services in your Uber-like app;
  5. Amazon EKS – Amazon’s solution for Kubernetes-based containers, best if you’re trying to avoid vendor lock-in or have extensive prior experience with Kubernetes;
  6. Amazon RDS – your go-to choice of database storage;
  7. PostgreSQL + PostGIS – the best choice for storing your geospatial data with increased performance and computation abilities;
  8. Amazon S3 Glacier – the cheapest storage option for secure data archiving;
  9. Amazon CloudFront – the best CDN service for low-latency access to your app from anywhere in the world;
  10. Amazon Location Service – a set of tools designed specifically for building location-based startups that offer cost-effective location-based services (LBS) out-of-the-box;
  11. Amazon CloudWatch – the monitoring tool of your choice that provides your dev teams with crucial information about your system’s performance and existing issues, should such appear; and
  12. Amazon QuickSight – the best cloud-native BI solution that can enhance your decision-making processes with real-time business data and machine learning-powered analysis.

These are essential for your technology stack if you want to build a successful location-based startup. Here's an infographic, if you'd like to download it and keep it for later. ;)

Top 12 AWS services for an Uber-like app

If you’re not sure whether the above applies to your specific case, feel free to drop me a line at ross@rst.software, and I’ll match you with our certified AWS lead architects who’ll be able to advise you on the proper way of approaching your situation. And that’s about it for today. Till the next one!

Want more posts from the author?
Read more

Want to read more?

Location-Based Services

14 use cases of geospatial data visualization

Discover innovative ways of visualizing GIS data. Visualization helps to discover spatial patterns or relationships between or among different locations.
Location-Based Services

Supercharge your business operations with custom web mapping solutions based on OSM

When you can't find a GIS software that fits your needs, you turn to developing your custom web mapping tools. Here's how to do that using OpenStreetMap.
Location-Based Services

6 ways AI-powered location-based services can optimize logistics operations

AI-powered location-based services can generate great ROI for businesses. See how you can enhance your logistics operations with dedicated location-aware solutions.
No results found.
There are no results with this criteria. Try changing your search.
en