Day 4 Session Summaries
Keynote
Straight out of the gate Werner made the statement that “Serverless is the future of application development”. I couldn’t agree more, and judging by the interest at Re:Invent, it is certainly the new “black”. The key note was a story weaving exercise as Werner described his worst day ever at AWS when they had a pre-Christmas 12 hour outage of their oracle database. He described how this event drove their approach and the way they think about systems at scale now. This then fed into a discussion of Aurora, and the decisions they have made to make it a cloud scale database. Eventually Werner arrived at one of his pet topics. Relational databases are not a good choice for the majority of workloads for a modern web scale, microservice based application.
This was based on an analysis of their database workloads which broke down to 70% Key-Value lookup 20% Involved a single table, and 10% were truly relational
I actually heard from 2 other aws employees I met at the conference that Werner has insisted that if anyone wants to use an RDBMS internally, they require his personal sign-off. This is an indication of how few use cases he sees for humble relational database.
After Werner had finished expounding the virtues of DynamoDB, S3 and Redshift, he switched into Lambda, and made some very interesting announcements:
- AWS Serverless toolkit for all IDE’s - Visual Studio, VSCode, Rider
- Ruby support for Lambda
- Lambda custom Runtimes. AWS has already produced an open source C++ and a RUST runtime, and partners are working on others including php, erlang and even COBOL.
- Lambda layers - Allows you to reference common library code across multiple lambdas in an efficient and version safe manner.
- Step Function service integrations - allowing tight integration with other platform offerings such as S3, SQS etc… In my opinion, still playing catchup with Logic Apps.
- Websockets support for API Gateway
- ALB (Application Load Balancer) for Lambda
- Managed streaming for Kafka
There is certainly a lot of investment in the serverless space.
He then went on to talking about the importance of being “well architected”, and expounded the virtues of the AWS Well Architected framework and the serverless “lens” on this framework. He then announced the release of the new AWS Well Architected tool that helps to automate much of the kinds of things that traditionally required a physical architecture review by an AWS solution architect.
AWS Lambda under the hood
This was a deep dive into the inner workings of Lambda. There are a number of services that interact to make the lambda service work under the hood. The first thing to note is that lambdas don’t run in containers, they run in a guest OS on an EC2 instance. The services involved are as follows
- Front End Invoke
- Orchestrates both synchronous and asynchronous invokes
- Authentication/Authorization
- Function Metadata
- Provides region-wide view of customer concurrency to help enforce set limits. This is a quorum based protocol and typically takes < 1.5 millisenonds Maps customer function to a worker manager
- Worker Manager
- Tracks container idle and busy state and schedules incoming invoke requests to available containers
- Optimize for running code on a warm sandbox Worker
- Provisions a secire env for customer code exec
- Notifies the worker manager when complete Placement Service
- Responsible for placing sandboxes on a worker to maximise packing density without impacting customer experience or cold-path latency
- Lease between 6-8 hours
- Load Balancing
- Routing function traffic