Title
AWS re:Invent 2023 - Refactoring to serverless (SVS305)
Summary
- Serverless is not just about infrastructure management but also about reducing application code through automation.
- The session focused on making existing serverless applications more serverless-native, not on the six Rs of cloud migration.
- AWS CDK allows infrastructure as code using familiar programming languages and provides higher-level abstractions for more compact and readable code.
- Cloud automation spans provisioning, deployment, composition, and configuration, with composition and configuration being crucial in serverless.
- Refactoring to serverless involves using serverless features like Lambda Destinations and EventBridge Pipes to separate business logic from application topology.
- The session presented examples of refactoring, including replacing choreographed Lambda functions with Step Functions for better workflow visibility and transactional integrity.
- Refactoring is driven by leveraging platform capabilities, incorporating new AWS features, improving runtime characteristics, and managing costs.
- Operational aspects like latency and cost were discussed, with the conclusion that refactoring can often lead to cost savings and improved performance.
- Team structures and tooling play a role in refactoring, with the need for continuous refactoring as part of software delivery.
Insights
- Serverless refactoring can lead to more robust and scalable applications by replacing application code with automation code.
- AWS CDK is a powerful tool that allows developers to use familiar programming languages to define infrastructure and application architecture as code.
- The importance of composition and configuration in serverless applications is highlighted, as infrastructure provisioning and deployment are simplified in a serverless environment.
- Refactoring patterns can be categorized into leveraging platform capabilities, evolving with AWS features, and improving runtime characteristics like latency, availability, and cost.
- Operational considerations such as latency and cost are not necessarily negatively impacted by refactoring; in fact, they can benefit from it.
- Team structures should allow for the development team to handle both application code and automation code to ensure efficient refactoring practices.
- Continuous refactoring should be integrated into the software delivery process, and it can be a driver for improving development practices and reducing complexity.
- The session encourages a mindset shift towards seeing infrastructure and application code as part of a continuum, where refactoring can move functionality from one to the other seamlessly.