Serverless in re:Invent 2017

Serverless in re:Invent 2017

This years re:Invent was a blast! Great announcements, solid sessions, hilarious gameday, fun networking opportunities and what a re:Play after party with DJ Snake! Personally this was third in a row and best one so far! I’ve been working with serverless systems for the past year and that’s what was in my scope!

I was glad to find out AWS announced a bucket full of new services and improvements for serverless applications. Serverless is the direction the world is going, so if you aren’t on the serverless train yet, now is the time to catch up.

What is serverless?

Serverless has many definitions, but it can be considered as next step from IaaS (Infrastructure as a Service), to FaaS (Function as a service) where abstraction of application processing moves up from deploying virtual machines and containers to deploying bare business logic functions to be executed on ephemeral automatically scalable managed execution environment such as AWS Lambda. Serverless functions can be triggered from multiple events, for example http request to API Gateway or S3 event stream event. Currently 20 different AWS services can trigger Lambda functions. [1]

Serverless architectures and applications greatly differ from traditional server/virtual machine/container based architectures and applications. In serverless environment developer no longer needs to worry about building AMIs, installing OS patches, load balancing, instance types or in some cases even VPC networking since if you only need AWS managed services like DynamoDB or S3, you can access those from public internet. Serverless application can scale virtually to any load. You only pay for the actually consumed resources like processor time, memory, networking and utilized managed services.

Amazon Aurora Serverless

“Amazon Aurora Serverless is an on-demand auto-scaling configuration for Amazon Aurora, where the database will automatically start up, shut down, and scale up or down capacity based on your application’s needs. Aurora Serverless enables you to run your relational database in the cloud without managing any database instances or clusters.” [2]

Aurora Serverless is the single most important announcement regarding serverless development. If your data has many relations and access patterns are not predictable you need a relational database. So far RDS (Relational Database Service) has been the only AWS managed option to provision relational databases. While RDS does its job well it doesn’t automatically scale in terms of performance or costs.

What is great about serverless is that extra environments cost next to nothing. You could have production like environment for every developer and you only pay for the consumed resources. Aurora serverless enables just this and can automatically scale up and down when you hit that unpredicted traffic spike.

DynamoDB Backup and Restore

DynamoDB is the go-to database in serverless environment when data access patterns are well known and there is no need for relational database features like joining tables or transactions. Previously backing up and restoring DynamoDB tables has been quite painful so this is very welcome feature which makes DynamoDB even more compelling. [3]

DynamoDB Global Tables

“Global Tables builds upon DynamoDB’s global footprint to provide you with a fully managed, multi-region, and multi-master database that provides fast, local, read and write performance for massively scaled, global applications. Global Tables replicates your Amazon DynamoDB tables automatically across your choice of AWS regions.” [4]

DynamoDB Global Tables is very welcome feature when high availability and near user global performance matter. Active-active disaster recovery model which can withstand an outage of a whole region just became so much easier to implement. Database multi-master replication is very complex issue and now it has been solved for you.

Traffic Shifting and Phased Deployments with AWS CodeDeploy

You can now shift incoming traffic between two AWS Lambda function versions based on pre-assigned weights. This allows you to gradually shift traffic between two versions, helping you reduce the risk and limit the blast radius of new Lambda deployments. [5]

Weighted traffic switching takes Lambda to new maturity level. No need to risk destroying whole system when deploying new versions. This obviously adds complexity to CI/CD pipelines and increases monitoring requirements, but CodeDeploy should ease the pain. What is your customer experience worth?

AWS Serverless Application Repository in Preview

“The AWS Serverless Application Repository is a collection of serverless applications published by developers, companies, and partners in the serverless community.” [6]

AWS announced SAM (Serverless Application Model) at 2016 re:Invent. Serverless Application Repository is a boilerplate and plugins sharing platform for SAM applications. It remains to be seen what kind of traction the repository catches. Competition is tough and currently Serverless.com is dominating serverless space from GitHub with 20,674 stars, 2,159 forks and 343 contributors.

Summary

Serverless is clearly the future of cloud software development in AWS. While this year lacked the 2015 dramatic paradigm change caused by Lambda functions publication, there were many very useful serverless announcements, especially for databases, Serverless Aurora being the most interesting one. With Serverless Aurora and DynamoDB Global Tables it’s easy and very cost efficient to scale globally. Serverless space is currently moving and evolving super fast – several of these services merit more in depth posts. Stay tuned!

Senior Consultant, Partner

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *