Releasing improved serverless functions with confidence
Jochem Schulenklopper and Gero Vermaas explain and practice an approach that enables you to improve and release serverless functions to production with confidence. You'll make changes in some sample serverless functions running in production, deploy the improved functions to production, and analyze your improvement against the originals.
|Talk Title||Releasing improved serverless functions with confidence|
|Speakers||Jochem Schulenklopper (Xebia), Gero Vermaas (Xebia)|
|Conference||O’Reilly Software Architecture Conference|
|Conf Tag||Engineering the Future of Software|
|Date||November 5-7, 2019|
Jochem Schulenklopper and Gero Vermaas get you started by describing serverless architectures, serverless applications, AWS Lambda functions, and the serverless framework to specify and deploy such applications. Right from the start, you’ll fork an application and deploy it as a serverless application to a production environment. They also describe the Scientist library and its concept as described and used by GitHub in refactoring a core Git library, as well as the backstory of Scientist, how GitHub used it in testing an improved implementation, and some (sometimes surprising) results of applying its “scientific method” for things running in production. They compare the approach used by Scientist (“testing candidates in production, comparing their outcomes with a control”) with other ways to verify the correctness and quality of software implementations and architecture designs, including unit and component testing, integration testing, performance and load testing, production simulation, A/B testing, blue-green deployments, feature flags, canary deployments, and architecture fitness functions, and make the case that the scientific method of testing improvements in production really adds value in guaranteeing whether a (refactored) implementation objectively and conclusively performs better. You’ll apply this “release improved code to production with confidence” approach on the small serverless application that already runs in production and make improvements to the code (choosing from AWS Lambda functions in Java, Python, Node.js, Go, or Ruby programming languages), deploy the improved code to production, and compare that with the original baseline applications during ongoing production traffic. Based on the outcomes, you can confidently conclude whether your changes are actual improvements over the current implementation. Outline: