Aurora Serverless - Run an entire application without servers

Feb. 2, 2019


At re:Inevent(2017), AWS made an announcement for an ambitious feature which they would launch in 2018 - Aurora Serverless. It's been a highly anticipated feature ever since AWS made the announcement. Aurora as you may already know is quite a popular relational database service offered by AWS which is pretty much known for it's outstanding performance. Now taking that one step further is they made it serverless.

Serverless concept becomes quite desirable because the benefits seem pretty obvious, one is the cost savings and the other being elimination of managing servers! Billing is done with usage of the service on per second basis, and Aurora scales up or down the capacity depending on the load. AWS gives you the option of choosing the minimum and maximum number of Aurora Compute Units(ACU) between which Aurora will scale up or down depending on the number of incoming connections and CPU utilization.

Couple Aurora serverless with Lambda and you have a truly serverless application that is extremely cost effective and is capable of handling any incoming load on it's own. However you need to understand that there are quite a few drawbacks currently which might not make using Aurora serverless quite feasible for your production workloads. Like for instance

  • The cluster needs to inside a VPC and accessibility is limited to only those resources which are part of the VPC. So doing anything with it outside the VPC is a no-go.
  • Aurora will send the cluster into a kind of a 'sleep' state if it remains idle for more than 5 minutes(5 minutes being the lowest value you can choose until which the cluster can go into this paused state). This means that if you have a web application which is idle at most times, you can expect a delay of 30 seconds when the application is invoked after such period. You can turn off this pausing feature altogether too but doing so would just keep the cluster running at all times even when it isn't required. So then how is this serverless cluster different from a regular db instance?

For enterprises, Aurora would work best for development purposes as you only need the instance to run during tests. They would also be suited for infrequently accessed internal systems that can tolerate latency in performance. Both cases will lead to cost savings that will be evident from day one. However, for adoption in production use, AWS would have to come with a way of tackling cold starts as they are quite significant. At the time of writing this, Aurora Serverless is available for 14 regions across the AWS realm, more regions soon to come. You can expect Aurora serverless for PostgreSQL in the near future too.

Test it out and let me know your thoughts in the comments below!


Share
Return to blog