AWS re:Invent 2022 — An opinionated recap for Cloud Developers
From 28th November 2022 and 2nd December 2022, the biggest AWS event of the year was held in Las Vegas.
Between multiple announcements, the major part focused on Data, ML, Analytics and Performance domains, there were at least 8 different services or features impactful for Cloud Developers.
AWS Lambda SnapStart
AWS customers love AWS Lambda for many reasons. Developers and DevOps appreciate the serverless programming model, the managed environment which requires almost no ops and the scalability offered by this service.
Lambda Function lifecycle has three different stages when invoked: INIT, INVOKE and SHUTDOWN.
The INIT stage bootstraps the runtime for the function and runs the function’s static code. This phase appens every time a new instance is created to fulfill an incoming request (Lambda ColdStart) and sometimes it require time.
With Lambda SnapStart, developers can move the execution of the INIT stage at deployment time. This feature allows to drastically reduce the execution time for Lambda ColdStarts, caching the result of the initialization and reusing it each time a ColdStart happens.
A few notes:
- right now, SnapStart supports only AWS Lambda Java functions that make use of the Corretto (java11) runtime. I expect support to more languages and frameworks will be added over time, although Java should be the one which benefits more from this feature.
- some tricks have to be taken to prepare your code to take advantages of SnapStart: unique contents (i.e.: uuid) have to be generated during the the INVOKE phase in order to maintain uniqueness, make sure that long-term connections (i.e.: database connections) can re-establish the connection if needed and, if your code rely on external resources gathered or computed during INIT phase, a check on the staleness of these resource should be performed.
Lambda SnapStart shows how much AWS is investing to increase the performance of the King of serverless services.
Announcement blog post: https://aws.amazon.com/blogs/aws/new-accelerate-your-lambda-functions-with-lambda-snapstart/
Amazon CodeCatalyst
Amazon CodeCatalyst is an integrated DevOps service for software development teams adopting continuous integration and deployment practices into their software development process.
Amazon CodeCatalyst is a managed platform which offers to developers:
- the ability to collaborate on code
- a managed environment for CI/CD and projects blueprints
- a tool to prioritize their work with issues backlog
- a remote dev env with scalable resources
This service allows developers to connect their local favorite IDE to the remote environment and collaborate with their team. Moreover, a free tier is available with a dev env with 2 vCPU/4GB (Linux only) and 60 hours of work.
Get start here: https://codecatalyst.aws/explore
Announcement blog post: https://aws.amazon.com/blogs/aws/announcing-amazon-codecatalyst-preview-a-unified-software-development-service/
AWS Application Composer
Visually design and build serverless applications quickly
AWS Application Composer is a visual editor to design (literally!) an application using AWS services.
With Application Composer, developers can choose serverless resources and connect them with a drag and drop interface. During these interactions, an Infrastructure as Code (IaC) template is generated to make your infrastructure ready to be deployed with AWS CloudFormation.
Last, but not least, AWS Application Composer can be used to produce diagrams for documentation or Wikis and keep the entire development team up to date with the architecture evolutions.
Announcement blog post: https://aws.amazon.com/blogs/compute/visualize-and-create-your-serverless-workloads-with-aws-application-composer/
Amazon EventBridge Pipes
Integrate event producers and consumers in a simpler, consistent, and cost-effective way
UPDATE - new article about this announcement: https://medium.com/@guidonebiolo/amazon-eventbridge-pipes-stitch-aws-services-together-7b270592b7a6
Until today, AWS Cloud developers have to write glue code in order to connect producers and consumers in different use cases. In example, to forward messages coming from a DynamoDB stream to an SQS queue, to scale their consumption, developers had to write a Lambda function to consume the stream and put each message in queue.
With Amazon EventBridge Pipes, developers can say goodbye to Lambda glue code like the one above. It provide a simple, consistent, and cost-effective way to create point-to-point integrations between event producers and consumers, integrating more than 14 AWS services and providing also capabilities of event filtering and transform and enrich messages before delivering to target with automatic delivery retries.
A process in Amazon EventBridge Pipes is implemented in the following steps:
- The developer select a source provider. Right now the only supported sources are Amazon DynamoDB, Amazon Kinesis Data Streams, Amazon SQS, Amazon Managed Streaming for Apache Kafka, and Amazon MQ (both ActiveMQ and RabbitMQ).
- The events can be optionally filtered, choosign only the events which match the filter set. The semantic of the filter is the same of the Amazon EventBridge event patterns.
- Events can be transformed and enriched using built-in transformations, or AWS Lambda, AWS Step Functions, Amazon API Gateway, or EventBridge API Destinations.
- Finally developers choose a target destination from more than 14 AWS services, including Amazon Step Functions, Kinesis Data Streams, AWS Lambda, and third-party APIs using EventBridge API destinations.
Announcement blog post: https://aws.amazon.com/blogs/aws/new-create-point-to-point-integrations-between-event-producers-and-consumers-with-amazon-eventbridge-pipes/
Distributed Map for AWS Step Function
AWS Step Function Map state iterations run in parallel a set of workflow for each item in a dataset. The existing map state is limited to 40 parallel iterations at a time and this limits the scaling of some types of jobs. Until today the only ways to achieve higher parallelism are complex workarounds with the Map state or use other services like AWS Glue or Amazon EMR.
Distributed Map state allows instead to iterate over millions of objects stored in Amazon S3 and can launch up to 10,000 executions in parallel.
Announcement blog post: https://aws.amazon.com/blogs/aws/step-functions-distributed-map-a-serverless-solution-for-large-scale-parallel-data-processing/
Amazon DocumentDB Elastic Clusters and Amazon OpenSearch Serverless
Amazon Document, with MongoDB compatibility, is a scalable, highly durable, and fully managed database service to store JSON documents.
Amazon OpenSearch offer real-time search, monitoring, and analysis of business and operational data.
With Elastic Clusters and OpenSearch Serverless, developers does not need to care anymore about adding, removing and scaling the instances of an Amazon DocumentDB or ElasticSearch cluster. These features simplify developers’ life automatically managing the underlying infrastructure of database clusters.
Announcement blog posts:
Security Lake
Developing application in Cloud require developers to put their attention in more security aspects than before. With multiple different services used the effort to identify potential security threats and vulnerabilities increase.
Amazon Security Lake automatically centralizes security data from cloud, on-premises, and custom sources into a purpose-built data lake stored in your account.
With Amazon Security Lake, developers and security engineers can correlate logs and events coming from different AWS services (i.e.: Amazon Route 53, AWS CloudTrail, Amazon VPC Flow Logs, …) and third-party services and partners, relying on the Open Cybersecurity Schema Framework (OCSF) format, to analyze and find potential security issues in their cloud application.
Announcement blog post: https://aws.amazon.com/blogs/aws/preview-amazon-security-lake-a-purpose-built-customer-owned-data-lake-service/
These are some annoucements I think have big impact on Cloud developers day to day job.
An exensive recap of the top announcements done during the re:Invent can be found here: https://aws.amazon.com/it/blogs/aws/top-announcements-of-aws-reinvent-2022/