Refactoring to Serverless Svs305

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.