Comparing Supabase, an open source Firebase alternative, to AWS Amplify.

Supabase is an open source Firebase ‍alternative that provides all the backend features needed to build a digital product. Over the last four years AWS Amplify has been our main backend solution. We recently started using Supabase, and in this article we look at how Supabase compares to AWS Amplify.

An image depicting supabase and aws amplify

Supabase - a Postgres database

Supabase is built on top of Postgres which is a very popular and powerful relational database (aka SQL Database). Provisioning and configuring relational databases requires specialised administration skills. With Supabase you can, in less than 2 minutes, get a Postgres database without any maintenance costs. It’s 100% portable, so you can migrate away at any time to another SQL database.

Supabase services 

Supabase includes the following services: 

  • Database: A dedicated, scalable Postgres database (DynamoDB equivalent)
  • Auto-generated APIs: Using PostgREST Supabase supports instant APIs for the Database access (equivalent to AppSync GraphQL)
  • File storage: A S3 compatible object storage service Store, organise and serve large files (S3 equivalent)
  • Authentication: Uses a fork of Netlify’s GoTrue offer for user management including signup and signing in (Cognito equivalent)
  • Authorisation: Uses GoTrue to check user permissions to access the database using  Postgres Row Level Security (AppSync+Cognito equivalent)
  • Cloud functions: This work in progress will eventually support backend logic using serverless functions (Equivalent to AWS Lambda functions)
  • Realtime: Ability to listen to database changes and push them to the client (Equivalent to AppSync GraphQL subscriptions)

Supabase infrastructure

One way of seeing Supabase is an integrated system of open source tools which work together perfectly. Specifically, Supabase creates a server on AWS and installs Postgres together with Kong, PostgREST, GoTrue and the other tools.

An image depicting Supabase infrastructure.
Supabase is an integrated system of open source tools which work together perfectly.

Supabase features

  • Dedicated Postgres Database
  • Unlimited API requests
  • Real-time functionality
  • 8 GB Database space
  • 7 days automatic backups
  • 50 GB transfer limits
  • 100,000 users
  • 7 days audit trails
  • Community and email support
  • 7 days log retention (API & database)
  • User-friendly dashboard to view and modify database 
  • User-friendly dashboard to view infrastructure reports

Regions

We can choose in which region we want Supabase to install our server (e.g. eu-west-2 London, eu-west-1 Ireland etc). This is important for GDPR.

Bring your own cloud 

It is possible to install the server in your own premises or to Bring Your Own Cloud (BYO). Of specific interest is BYO since it allows the installation of Supabase in an AWS Account of your choosing. This will happen through AWS Marketplace which is a great boost to core security and compliance requirements.

Monitoring and Observability

Supabase provides a variety of tools that allows us to track how the server performs. These are easy to use and can be customised by the administrator.

An image depicting the Supabase reporting tool.
Supabase generates reports that provide insights on server performance.

Comparing Supabase with AWS Amplify

AWS has over 200 services. This can be daunting for newcomers to pickup. Amplify offers an easy entry to the AWS ecosystem with a focus on serverless infrastructure. This has cost, scalability and development time benefits. Supabase positions itself as an open source Firebase alternative (a very popular backend as a service from Google). Its core offer is that it is built around Postgres. Postgres is a very mature, performant and popular SQL database. Using a variety of other open source tools it aims to allow quick and robust development of applications that require database, user management and storage capabilities.

Maturity in the market

AWS Amplify has been around for longer than Supabase. It has been battle tested on a lot of products from smaller and bigger companies. AWS Amplify is more mature but Supabase is catching up fast and is being used on services in production. Supabase is built on top of existing open source tools which allowed them to make a strong offer in a short period of time. Also, Supabase has a more focused vision which allows them to move fast.

Technology

Amplify has a variety of tools. The core is the client libraries, the CLI (Command Line Interface) and the server APIs (e.g. Cognito, DynamoDB etc). Using CLI, developers can quickly set-up serverless environments and use the client libraries to communicate with the server APIs. The CLI generates client and server code that glues together the user interface with the server. Also, users can use the AWS Console to access the different services (e.g. DynamoDB dashboard).

API access to the database

Supabase is built around Postgres. When creating a new table they immediately offer an API to access the database (from client libraries) using PostgresREST. This removes the need to generate client or server side code as Amplify does. User management happens using Postgres, so it has a closer integration than the Cognito, AppSync, DynamoDB, Amplify offer.

App developer experience

There are a lot of aspects to cover here, but I’m concentrating on what I think makes a difference on most of our projects. Using client and server code generation Amplify simplifies accessing the underlying AWS services. But it also means when something doesn’t work as expected developers need to dig deep on the generated code. There are a lot of complaints from developers on how difficult VTL is to follow. Supabase doesn’t require any code generation due to the integration of PostgresREST.

Updating the database schema

Updating the database schema, even adding a single field in an existing table, can take 5 mins to complete. This breaks the productivity flow. Supabase schema changes take no more than a couple of seconds.


DynamoDB vs Postgres

DynamoDB is a great offer for large databases that need fast and predictable performance. A lot of the projects we work on don’t have thousands or millions of users  and therefore DynamoDB’s strong points do not necessarily shine. In addition, DynamoDB is not as flexible as Postgres or any other SQL database. With DynamoDB it is recommended to know beforehand the access patterns (how the database will be queried) before deciding the database schema. Most new projects have an organic model of development which means that retrofitting new requirements is unnecessarily complex.

Postgres flexibility 

Postgres in comparison is very flexible and allows you to easily change the schema. In addition, querying and creating relationships between tables is very powerful using SQL. For Amplify to have the equivalent capabilities the recommendation is to stream the data to a secondary service, OpenSearch. OpenSearch provides powerful querying capabilities, but it increases the maintenance and costs.

Costs

Amplify uses Cognito and DynamoDB which are very cost-effective. In addition, the use of Lambdas to add additional logic is very cost-effective as well. Currently we have applications with very low cost in the few 10s of dollars. Supabase costs depend on usage. Based on our current projects workload I don’t expect this to be much higher than $25 per month. So overall Amplify is a cheaper option. This is due to the fact that there is no upfront cost for the services and low projected usage.

Performance

Both services can scale and perform well under a lot of pressure. Amplify (mainly due to DynamoDB) is probably a better database for really large usage. But Postgres can also scale to accommodate a large workload if brought into the BYO cloud environment.


Active support

Both products have active support on Github as well as Discord where company members and users provide support. In addition, both offer additional paid support if needed.

Learning resources

Amplify has been around longer so there are more learning resources available. For Supabase there are fewer resources but whilst I’ve been researching them I’ve seen good resources appear. Good knowledge of SQL and Postgres usually is enough to answer most of the common questions. Egghead provides a good list of resources.

Governance and DevOps

Amplify being an AWS product has a multitude of services to observe and monitor the state of the services. Supabase has introduced a set of easy to use reports to provide insights on the service and the database.

An illustration of the author
By:
Petros Lafazanidis
-
Nov 2024

Back to the blog