SlideShare uma empresa Scribd logo
1 de 65
Baixar para ler offline
Writing less code with Serverless on
Vadym Kazulkin, ip.labs, 1 February 2022
Contact
Vadym Kazulkin
ip.labs GmbH Bonn, Germany
Co-Organizer of the Java User Group Bonn
and Serverless Bonn Meetup
v.kazulkin@gmail.com
@VKazulkin
https://www.linkedin.com/in/vadymkazulkin
https://www.iplabs.de/
ip.labs
https://www.iplabs.de/
Agenda
• Challenges of the software development
• Serverless and its value proposition
• Dive deeper into “own less, build more” and
“lower technical debt” aspects
• Examples of AWS Serverless services and architectures for
writing less code
• How to be successful with Serverless
Let’s talk about the
challenges of the software
development in general
first
Cognitive Load –
the total amount of mental
effort being used in the working
memory
• Intrinsic
• Extraneous
• Germane
Cognitive Load
• Intrinsic
• How to write a Java class or use a framework
(Spring)
• Extraneous
• Germane
• Intrinsic
• Extraneous
• How to automate tests (unit, integration, end-to-end, web, desktop, mobile)
• How to build, package, deploy and run my application
• How to configure monitoring, alerting, auto-scaling, logging and tracing
• How to operate and maintain infrastructure
• How to build-in fault-tolerance and resiliency
• How to make the hardware, networking and application secure
• Germane
Cognitive Load
• Intrinsic
• Extraneous
• Germane
• Domain Knowledge (payment, e-commerce)
• Business processes and workflows
Cognitive Load
• Intrinsic ->
become fluent in it
• Extraneous ->
minimize amount of what we
implement/operate/support/own by ourselves
• Germane ->
minimize amount of what we have to implement
by ourselves
Cognitive Load
What our boss wants from us?
… that we are productive
Productivity
We are productive if we regularly ship products,
which are successfully used by our customers
What is holding us back from
being productive?
Technical Debt - reflects the implied cost
of additional rework caused by choosing an
easy (limited) solution now instead of using
a better approach that would take longer
”The Cost of Poor Quality Software in the US: A 2018 Report”
https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report/The-Cost-of-Poor-Quality-Software-in-the-US-2018-Report.pdf
Technical Debt
• Even a perfect solution can become the
technical debt over the time
• Version of programming language comes
out of support (Java 8, JS Frameworks)
• Security considerations forces us to
upgrade one of our dependencies (library
or web application server version)
• One of our dependencies (e.g. to open
source project) is discontinued
Think of what can happen to your software
over the entire life cycle of our product
Technical Debt
• is related to amount of code written
• is related to amount of dependencies used
• open source projects, programming
languages, databases, (web) application
servers
Technical Debt
Legacy Systems are systems that can’t
evolve
”The Cost of Poor Quality Software in the US: A 2018 Report”
https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report/The-Cost-of-Poor-Quality-Software-in-the-US-2018-Report.pdf
Legacy System
Evolutionary Architecture–
supports guided, incremental
change across multiple
dimensions
• Incremental change
• Appropriate architectural coupling
• Fitness functions
”Architectural Coupling” https://learning.oreilly.com/library/view/building-evolutionary-architectures/9781491986356/ch04.html
Evolutionary Architecture–
Fitness functions
• Source code metrics (such as measuring
cyclomatic complexity)
• Unit tests (% of coverage and % of success)
• Performance metrics(such as API latency or
throughput)
• Security (encryption at rest, e.g. checking that all S3
buckets have encryption enabled, or automatic key rotation
for all external APIs, with tools such as the AWS Secrets
Manager)
• ArchUnit, Sonar, CI/CD Tools
• CodeCommit,…CodeDeploy, Jenkins
Danilo Poccia „ Serverless + Evolutionary Architectures + Safe Deployments = Speed in the Right Direction”
https://blog.usejournal.com/serverless-evolutionary-architectures-safe-deployments-speed-in-the-right-direction-7b4b01e27254
Serverless
The Value Proposition of
Serverless
But let’s talk about of Total Cost of Ownership of
the Serverless paradigm
TCO Full Picture
No Infrastructure
Operation and
Maintenance
Auto Scaling and
Fault Tolerance
Built in
Own less,
build more
Lower technical
debt
Faster Time to
Market
Forrest Brazeal „The Business Case For Serverless” https://www.trek10.com/blog/business-case-for-serverless
Focus on Business
Value and Innovation
Own less, build more
By heavily relying on the
managed Serverless services
you
• Can do more with the
same amount of people
• Can more easily evolve
your architecture
Lower technical debt
• Whatever code you write today is always
tomorrow’s technical debt © Paul
Johnston
• Less code means lower technical debt
• Less code means less code maintenance
• Time and effort required for maintaining
the solution over its whole lifecycle is by
far much more than for developing it
Jeff Atwood „The Best Code is No Code At All” https://blog.codinghorror.com/the-best-code-is-no-code-at-all/
Paul Johnston “Cloud 2.0: Code is no longer King — Serverless has dethroned it”
https://medium.com/@PaulDJohnston/cloud-2-0-code-is-no-longer-king-serverless-has-dethroned-it-c6dc955db9d5
• Write fewer Lambda functions
• use more direct service integrations in case the Lambda only calls the
Service itself
How to write less code with
AWS Serverless services 1/2
Less Lambda functions means less:
• code to write, test, run and maintain
• CI/CD (deploy, rollback strategies) to maintain
• Infrastructure as a Code (IAM policies, permission) to write and test
• cold-start worries
• point of failures and retries
• security concerns
• worries about Lambda limits (e.g. concurrency settings per AWS account)
• spending on Lambda, CloudWatch and 3rd party SaaS on (AWS) (monthly) bill
Sheen Brisals “Don’t wait for Functionless. Write less Functions instead”
https://medium.com/lego-engineering/dont-wait-for-functionless-write-less-functions-instead-8f2c331cd651
• Write fewer Lambda functions
• use more direct service integrations in case the Lambda only calls the
Service itself
• Write less Infrastructure as a Code by using AWS Services/Frameworks
which provide meaningful abstractions, including managed I/CD
• AWS Amplify and Serverless Cloud
How to write less code with
AWS Serverless services 2/2
Examples how to write less code with
AWS Serverless services
• API Gateway Service Integration
• HTTP APIs Storage-First Service
Integration
• Step Functions Service Integration
• Step Functions Workflow Studio
• EventBridge with Service Integrations
and API Destinations
• Event Bridge Filtering and Routing
• Filtering for Lambda Functions
• NoSQL Workbench for DynamoDB
• SNS message filtering and native
integration between SNS and
Kinesis Data Firehose
• Amplify Framework
• Serverless Cloud Preview
Sheen Brisals “Don’t wait for Functionless. Write less Functions instead”
https://medium.com/lego-engineering/dont-wait-for-functionless-write-less-functions-instead-8f2c331cd651
API Gateway Service Integration
API Gateway Service Integration with
Dynamo DB : Example ID generator 1/2
Sheen Brisals “Sequence Numbering in Serverless via API Gateway” https://medium.com/lego-engineering/sequence-numbering-in-serverless-via-api-gateway-40e5f6c83e93
Zac Charles “Quickly Build and Debug AppSync & API Gateway Mapping Templates” https://mappingtool.dev/
API Gateway Service Integration with
Dynamo DB : Example ID generator 2/2
Sheen Brisals “Sequence Numbering in Serverless via API Gateway” https://medium.com/lego-engineering/sequence-numbering-in-serverless-via-api-gateway-40e5f6c83e93
Zac Charles “Quickly Build and Debug AppSync & API Gateway Mapping Templates” https://mappingtool.dev/
Eric Johnson “https://aws.amazon.com/de/blogs/compute/building-storage-first-applications-with-http-apis-service-integrations/”
HTTP APIs Storage-First Service
Integration
• Event Bridge
• Kinesis Data Streams
• SQS
• AppConfig
• Step Functions
Using Service Integrations with EventBridge
“Amazon EventBridge” https://aws.amazon.com/eventbridge/
Using Service Integrations with
EventBridge /Put Targerts
“Amazon EventBridge Put Targets” https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutTargets.html
Using API Destinations with EventBridge
“Amazon EventBridge” https://aws.amazon.com/eventbridge/
Using API Destinations with EventBridge
“Using API destinations with Amazon EventBridge”
https://aws.amazon.com/de/blogs/compute/using-api-destinations-with-amazon-eventbridge/
EventBridge Filtering and Routing
“Reducing custom code by using advanced rules in Amazon EventBridge”
https://aws.amazon.com/de/blogs/compute/reducing-custom-code-by-using-advanced-rules-in-amazon-eventbridge/
S3 Event Notifications with EventBridge
https://aws.amazon.com/blogs/aws/new-use-amazon-s3-event-notifications-with-amazon-eventbridge/
SNS Message Filtering
https://aws.amazon.com/blogs/compute/simplify-pubsub-messaging-with-amazon-sns-message-filtering/
Native integration between SNS and
Kinesis Data Firehose
https://aws.amazon.com/de/blogs/compute/introducing-message-archiving-and-analytics-for-amazon-sns/
Step Functions Service Integration
“Service Integrations with AWS Step Functions” https://docs.aws.amazon.com/step-functions/latest/dg/concepts-service-integrations.html
AWS Step Functions Supports 200
AWS Services
https://aws.amazon.com/de/blogs/aws/now-aws-step-functions-supports-200-aws-services-to-enable-easier-workflow-automation/
arn:aws:states:::
aws-sdk:serviceName:apiAction.
<serviceIntegrationPattern>
Step Functions Workflow Studio – A Low-Code
Visual Tool for Building State Machines
“AWS Step Functions Workflow Studio”
https://aws.amazon.com/de/blogs/aws/new-aws-step-functions-workflow-studio-a-low-code-visual-tool-for-building-state-machines/
Filtering event sources for Lambda
functions
https://aws.amazon.com/blogs/compute/filtering-event-sources-for-aws-lambda-functions/
https://dev.to/aws-builders/trigger-lambda-functions-with-event-filtering-2pnb
Filtering is supported for the following event sources:
• Kinesis Data Streams
• DynamoDB Streams
• Amazon SQS
NoSQL Workbench for DynamoDB
https://aws.amazon.com/dynamodb/nosql-workbench/
Data Modeling Data Visualization Operation Building
Export DynamoDB Table Data to S3
https://aws.amazon.com/de/blogs/aws/new-export-amazon-dynamodb-table-data-to-data-lake-amazon-s3/
Amplify
“Amazon Amplify” https://aws.amazon.com/amplify
Amplify supports :
• web frameworks including JavaScript, React, Angular, Vue, Next.js
• mobile platforms including Android, iOS, React Native, Ionic, Flutter
Amplify and Admin GUI
https://docs.amplify.aws/console/adminui/intro#access-outside-the-aws-management-console/
AWS Amplify managed CI/CD
https://towardsaws.com/step-by-step-guide-to-deploy-your-web-application-with-auto-ci-cd-pipeline-using-aws-amplify-a87712756c2
Serverless Cloud Preview
https://www.serverless.com/blog/introducing-serverless-cloud-public-preview
Serverless Cloud Preview
https://www.serverless.com/blog/introducing-serverless-cloud-public-preview
Serverless Cloud Preview
https://www.serverless.com/blog/how-serverless-cloud-works-part-1
Serverless Cloud Preview
https://www.serverless.com/blog/introducing-serverless-cloud-public-preview
Common patterns
• Direct service integrations to reduce the amount of code written
• API Gateway, HTTP API, Step Functions, EventBridge, SNS,
Amplify
• Visual Studio/Tools to reduce the cognitive load
• Step Functions, Amplify, DynamoDB
• Automated CI/CD to focus on the business logic
• Amplify, SAM
• First steps in interpreting Infrastructure from Code
• Serverless Cloud
Focus on Business Value
Using Serverless ecosystem will
with the right engineering practices in place will significantly reduce
• extraneous and germane cognitive load
• the amount of code written
• the amount of dependencies (no execution runtime and web application server to
take care of)
Reducing dependencies doesn’t mean that you own nothing (you still
own things, but in general less)
• Lambda language runtime version will be retired from time to time
• Node.js <10.x, Java 8 runtime migration to Amazon Corretto
• Aurora with PostgreSQL/MySQL compatibilities will force you to
upgrade database version behind
• Retiring PostgreSQL version 9.6
plan and execute upgrades continuously and iteratively
Word of caution about the
Serverless ecosystem
How to be successful with Serverless
How to measure success
Let’s focus on software delivery and operational performance
(how to do the things right)
• Provide the managers and executives metrics, that we’re on the right path
• See from the developer’s perspective how to achieve it and improve
It’s also important to the right thing!
How to measure success
See DORA State of DevOps 2018-2019 Reports
Software Delivery and
Operational Performance
See DORA State of DevOps 2018-2019 Reports
Wardley Maps
Simon Wardley https://www.slideshare.net/swardley/why-the-fuss-about-serverless-88107645
Co-evolution of practices
to become productive with
Serverless
Co-evolution of practices with
Serverless 1/2
• True DevOps
• Complete infrastructure automation
• Chaos Engineering
• FinDev responsibilities in the teams
Sheen Brisals “Why the ‘WHY’ matters more than the ‘WHAT’ in Serverless!”
https://medium.com/lego-engineering/why-the-why-matters-more-than-the-what-in-serverless-2ef56c397962
DevOps Topologies: https://web.devopstopologies.com/
• Each team or even developer can have its own
(AWS test) account per feature or service
• Only minimal local testing (quick functional tests)
• Adopt “testing in production”
Michael Bryzek “What do you know about testing in production?” https://www.youtube.com/watch?v=z-ATZTUgaAo
Co-evolution of practices with
Serverless 2/2
www.iplabs.de
Accelerate Your Photo Business
Get in Touch

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Writing less code with Serverless on AWS at AWS Community Day DACH 2021
Writing less code with Serverless on AWS at AWS Community Day DACH 2021Writing less code with Serverless on AWS at AWS Community Day DACH 2021
Writing less code with Serverless on AWS at AWS Community Day DACH 2021
 
Lessons Learned from building a serverless API
Lessons Learned from building  a serverless APILessons Learned from building  a serverless API
Lessons Learned from building a serverless API
 
DevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San FranciscoDevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San Francisco
 
DevOps and AWS - Code PaLOUsa 2017
DevOps and AWS  - Code PaLOUsa 2017DevOps and AWS  - Code PaLOUsa 2017
DevOps and AWS - Code PaLOUsa 2017
 
DEVELOPING SHAREPOINT FRAMEWORK SOLUTIONS FOR THE ENTERPRISE
DEVELOPING SHAREPOINT FRAMEWORK SOLUTIONS FOR THE ENTERPRISEDEVELOPING SHAREPOINT FRAMEWORK SOLUTIONS FOR THE ENTERPRISE
DEVELOPING SHAREPOINT FRAMEWORK SOLUTIONS FOR THE ENTERPRISE
 
Adopting Java for the Serverless world at IT Tage
Adopting Java for the Serverless world at IT TageAdopting Java for the Serverless world at IT Tage
Adopting Java for the Serverless world at IT Tage
 
Managing the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaManaging the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS Lambda
 
Transform Enterprise IT Infrastructure with AWS DevOps
Transform Enterprise IT Infrastructure with AWS DevOpsTransform Enterprise IT Infrastructure with AWS DevOps
Transform Enterprise IT Infrastructure with AWS DevOps
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
Adopting Java for the Serverless world at AWS User Group Pretoria
Adopting Java for the Serverless world at AWS User Group PretoriaAdopting Java for the Serverless world at AWS User Group Pretoria
Adopting Java for the Serverless world at AWS User Group Pretoria
 
DevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver FasterDevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver Faster
 
Serverless Delivery
Serverless DeliveryServerless Delivery
Serverless Delivery
 
Accelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWSAccelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWS
 
AWS DevOps Introduction
AWS DevOps Introduction AWS DevOps Introduction
AWS DevOps Introduction
 
Will the Real Public API Please Stand Up? Amir Zuker
Will the Real Public API Please Stand Up? Amir ZukerWill the Real Public API Please Stand Up? Amir Zuker
Will the Real Public API Please Stand Up? Amir Zuker
 
Microservices Architecture for Content Management Systems using AWS Lambda an...
Microservices Architecture for Content Management Systems using AWS Lambda an...Microservices Architecture for Content Management Systems using AWS Lambda an...
Microservices Architecture for Content Management Systems using AWS Lambda an...
 
Introduction to DevOps on AWS
Introduction to DevOps on AWSIntroduction to DevOps on AWS
Introduction to DevOps on AWS
 
Adapting Java for the Serverless World at JUG Barcelona
Adapting Java for the Serverless World at JUG BarcelonaAdapting Java for the Serverless World at JUG Barcelona
Adapting Java for the Serverless World at JUG Barcelona
 
Patterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 appsPatterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 apps
 

Semelhante a Writing less code with Serverless on AWS at OOP 2022

Semelhante a Writing less code with Serverless on AWS at OOP 2022 (20)

Convince your boss to go Serverless at serverless week Brazil
Convince your boss to go Serverless at serverless week BrazilConvince your boss to go Serverless at serverless week Brazil
Convince your boss to go Serverless at serverless week Brazil
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
 
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
 
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
 
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
 
Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
 
"It’s not only Lambda! Economics behind Serverless" at Serverless Architectur...
"It’s not only Lambda! Economics behind Serverless" at Serverless Architectur..."It’s not only Lambda! Economics behind Serverless" at Serverless Architectur...
"It’s not only Lambda! Economics behind Serverless" at Serverless Architectur...
 
AWS re:Invent 2016: The State of Serverless Computing (SVR311)
AWS re:Invent 2016: The State of Serverless Computing (SVR311)AWS re:Invent 2016: The State of Serverless Computing (SVR311)
AWS re:Invent 2016: The State of Serverless Computing (SVR311)
 
Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?
 
20180111 we bde-bs - serverless url shortener
20180111   we bde-bs - serverless url shortener20180111   we bde-bs - serverless url shortener
20180111 we bde-bs - serverless url shortener
 
Beginners Node.js
Beginners Node.jsBeginners Node.js
Beginners Node.js
 
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the BrowserForge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the Browser
 
Stop calling everything serverless!
Stop calling everything serverless!Stop calling everything serverless!
Stop calling everything serverless!
 
Dev Ops on AWS - Accelerating Software Delivery - AWS-Summit SG 2017
Dev Ops on AWS - Accelerating Software Delivery - AWS-Summit SG 2017Dev Ops on AWS - Accelerating Software Delivery - AWS-Summit SG 2017
Dev Ops on AWS - Accelerating Software Delivery - AWS-Summit SG 2017
 
DevOps on AWS - Accelerating Software Delivery
DevOps on AWS - Accelerating Software DeliveryDevOps on AWS - Accelerating Software Delivery
DevOps on AWS - Accelerating Software Delivery
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
 
The State of Serverless Computing | AWS Public Sector Summit 2017
The State of Serverless Computing | AWS Public Sector Summit 2017The State of Serverless Computing | AWS Public Sector Summit 2017
The State of Serverless Computing | AWS Public Sector Summit 2017
 
Serverless: Market Overview and Investment Opportunities
Serverless: Market Overview and Investment OpportunitiesServerless: Market Overview and Investment Opportunities
Serverless: Market Overview and Investment Opportunities
 

Mais de Vadym Kazulkin

Mais de Vadym Kazulkin (20)

Amazon DevOps Guru for Serverless Applications at DevOpsCon 2024 London
Amazon DevOps Guru for Serverless Applications at DevOpsCon 2024 LondonAmazon DevOps Guru for Serverless Applications at DevOpsCon 2024 London
Amazon DevOps Guru for Serverless Applications at DevOpsCon 2024 London
 
Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...
 
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
 
How to reduce cold starts for Java Serverless applications in AWS at Serverle...
How to reduce cold starts for Java Serverless applications in AWS at Serverle...How to reduce cold starts for Java Serverless applications in AWS at Serverle...
How to reduce cold starts for Java Serverless applications in AWS at Serverle...
 
Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...
Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...
Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...
 
Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023
Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023
Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023
 
Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...
 
How to reduce cold starts for Java Serverless applications in AWS at InfoShar...
How to reduce cold starts for Java Serverless applications in AWS at InfoShar...How to reduce cold starts for Java Serverless applications in AWS at InfoShar...
How to reduce cold starts for Java Serverless applications in AWS at InfoShar...
 
Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023
Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023
Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023
 
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
 
AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...
AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...
AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...
 
Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...
Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...
Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...
 
Amazon DevOps Guru for the Serverless Applications at AWS Community Day Bene...
Amazon DevOps Guru for the Serverless Applications at  AWS Community Day Bene...Amazon DevOps Guru for the Serverless Applications at  AWS Community Day Bene...
Amazon DevOps Guru for the Serverless Applications at AWS Community Day Bene...
 
Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022
Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022
Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022
 
Adopting Java for the Serverless World at JUG Saxony Day 2022
Adopting Java for the Serverless World at JUG Saxony Day 2022Adopting Java for the Serverless World at JUG Saxony Day 2022
Adopting Java for the Serverless World at JUG Saxony Day 2022
 
Projects Valhalla and Loom DWX 2022
Projects Valhalla and Loom DWX 2022Projects Valhalla and Loom DWX 2022
Projects Valhalla and Loom DWX 2022
 
Adopting Java for the Serverless World at VoxxedDays Luxemburg
Adopting Java for the Serverless World at VoxxedDays LuxemburgAdopting Java for the Serverless World at VoxxedDays Luxemburg
Adopting Java for the Serverless World at VoxxedDays Luxemburg
 
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
 
Adopting Java for the Serverless World at JUG Bonn 2022
Adopting Java for the Serverless World at JUG Bonn 2022Adopting Java for the Serverless World at JUG Bonn 2022
Adopting Java for the Serverless World at JUG Bonn 2022
 
Adopting Java for the Serverless World at JUG Darmstadt 2022
Adopting Java for the Serverless World at JUG Darmstadt 2022Adopting Java for the Serverless World at JUG Darmstadt 2022
Adopting Java for the Serverless World at JUG Darmstadt 2022
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Writing less code with Serverless on AWS at OOP 2022

  • 1. Writing less code with Serverless on Vadym Kazulkin, ip.labs, 1 February 2022
  • 2. Contact Vadym Kazulkin ip.labs GmbH Bonn, Germany Co-Organizer of the Java User Group Bonn and Serverless Bonn Meetup v.kazulkin@gmail.com @VKazulkin https://www.linkedin.com/in/vadymkazulkin https://www.iplabs.de/
  • 4. Agenda • Challenges of the software development • Serverless and its value proposition • Dive deeper into “own less, build more” and “lower technical debt” aspects • Examples of AWS Serverless services and architectures for writing less code • How to be successful with Serverless
  • 5. Let’s talk about the challenges of the software development in general first
  • 6. Cognitive Load – the total amount of mental effort being used in the working memory • Intrinsic • Extraneous • Germane
  • 7. Cognitive Load • Intrinsic • How to write a Java class or use a framework (Spring) • Extraneous • Germane
  • 8. • Intrinsic • Extraneous • How to automate tests (unit, integration, end-to-end, web, desktop, mobile) • How to build, package, deploy and run my application • How to configure monitoring, alerting, auto-scaling, logging and tracing • How to operate and maintain infrastructure • How to build-in fault-tolerance and resiliency • How to make the hardware, networking and application secure • Germane Cognitive Load
  • 9. • Intrinsic • Extraneous • Germane • Domain Knowledge (payment, e-commerce) • Business processes and workflows Cognitive Load
  • 10. • Intrinsic -> become fluent in it • Extraneous -> minimize amount of what we implement/operate/support/own by ourselves • Germane -> minimize amount of what we have to implement by ourselves Cognitive Load
  • 11. What our boss wants from us? … that we are productive
  • 12. Productivity We are productive if we regularly ship products, which are successfully used by our customers
  • 13. What is holding us back from being productive? Technical Debt - reflects the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer ”The Cost of Poor Quality Software in the US: A 2018 Report” https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report/The-Cost-of-Poor-Quality-Software-in-the-US-2018-Report.pdf
  • 14. Technical Debt • Even a perfect solution can become the technical debt over the time • Version of programming language comes out of support (Java 8, JS Frameworks) • Security considerations forces us to upgrade one of our dependencies (library or web application server version) • One of our dependencies (e.g. to open source project) is discontinued
  • 15. Think of what can happen to your software over the entire life cycle of our product Technical Debt
  • 16. • is related to amount of code written • is related to amount of dependencies used • open source projects, programming languages, databases, (web) application servers Technical Debt
  • 17. Legacy Systems are systems that can’t evolve ”The Cost of Poor Quality Software in the US: A 2018 Report” https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report/The-Cost-of-Poor-Quality-Software-in-the-US-2018-Report.pdf Legacy System
  • 18. Evolutionary Architecture– supports guided, incremental change across multiple dimensions • Incremental change • Appropriate architectural coupling • Fitness functions ”Architectural Coupling” https://learning.oreilly.com/library/view/building-evolutionary-architectures/9781491986356/ch04.html
  • 19. Evolutionary Architecture– Fitness functions • Source code metrics (such as measuring cyclomatic complexity) • Unit tests (% of coverage and % of success) • Performance metrics(such as API latency or throughput) • Security (encryption at rest, e.g. checking that all S3 buckets have encryption enabled, or automatic key rotation for all external APIs, with tools such as the AWS Secrets Manager) • ArchUnit, Sonar, CI/CD Tools • CodeCommit,…CodeDeploy, Jenkins Danilo Poccia „ Serverless + Evolutionary Architectures + Safe Deployments = Speed in the Right Direction” https://blog.usejournal.com/serverless-evolutionary-architectures-safe-deployments-speed-in-the-right-direction-7b4b01e27254
  • 21. The Value Proposition of Serverless But let’s talk about of Total Cost of Ownership of the Serverless paradigm
  • 22. TCO Full Picture No Infrastructure Operation and Maintenance Auto Scaling and Fault Tolerance Built in Own less, build more Lower technical debt Faster Time to Market Forrest Brazeal „The Business Case For Serverless” https://www.trek10.com/blog/business-case-for-serverless Focus on Business Value and Innovation
  • 23. Own less, build more By heavily relying on the managed Serverless services you • Can do more with the same amount of people • Can more easily evolve your architecture Lower technical debt • Whatever code you write today is always tomorrow’s technical debt © Paul Johnston • Less code means lower technical debt • Less code means less code maintenance • Time and effort required for maintaining the solution over its whole lifecycle is by far much more than for developing it Jeff Atwood „The Best Code is No Code At All” https://blog.codinghorror.com/the-best-code-is-no-code-at-all/ Paul Johnston “Cloud 2.0: Code is no longer King — Serverless has dethroned it” https://medium.com/@PaulDJohnston/cloud-2-0-code-is-no-longer-king-serverless-has-dethroned-it-c6dc955db9d5
  • 24. • Write fewer Lambda functions • use more direct service integrations in case the Lambda only calls the Service itself How to write less code with AWS Serverless services 1/2
  • 25. Less Lambda functions means less: • code to write, test, run and maintain • CI/CD (deploy, rollback strategies) to maintain • Infrastructure as a Code (IAM policies, permission) to write and test • cold-start worries • point of failures and retries • security concerns • worries about Lambda limits (e.g. concurrency settings per AWS account) • spending on Lambda, CloudWatch and 3rd party SaaS on (AWS) (monthly) bill Sheen Brisals “Don’t wait for Functionless. Write less Functions instead” https://medium.com/lego-engineering/dont-wait-for-functionless-write-less-functions-instead-8f2c331cd651
  • 26. • Write fewer Lambda functions • use more direct service integrations in case the Lambda only calls the Service itself • Write less Infrastructure as a Code by using AWS Services/Frameworks which provide meaningful abstractions, including managed I/CD • AWS Amplify and Serverless Cloud How to write less code with AWS Serverless services 2/2
  • 27. Examples how to write less code with AWS Serverless services • API Gateway Service Integration • HTTP APIs Storage-First Service Integration • Step Functions Service Integration • Step Functions Workflow Studio • EventBridge with Service Integrations and API Destinations • Event Bridge Filtering and Routing • Filtering for Lambda Functions • NoSQL Workbench for DynamoDB • SNS message filtering and native integration between SNS and Kinesis Data Firehose • Amplify Framework • Serverless Cloud Preview
  • 28. Sheen Brisals “Don’t wait for Functionless. Write less Functions instead” https://medium.com/lego-engineering/dont-wait-for-functionless-write-less-functions-instead-8f2c331cd651 API Gateway Service Integration
  • 29. API Gateway Service Integration with Dynamo DB : Example ID generator 1/2 Sheen Brisals “Sequence Numbering in Serverless via API Gateway” https://medium.com/lego-engineering/sequence-numbering-in-serverless-via-api-gateway-40e5f6c83e93 Zac Charles “Quickly Build and Debug AppSync & API Gateway Mapping Templates” https://mappingtool.dev/
  • 30. API Gateway Service Integration with Dynamo DB : Example ID generator 2/2 Sheen Brisals “Sequence Numbering in Serverless via API Gateway” https://medium.com/lego-engineering/sequence-numbering-in-serverless-via-api-gateway-40e5f6c83e93 Zac Charles “Quickly Build and Debug AppSync & API Gateway Mapping Templates” https://mappingtool.dev/
  • 31. Eric Johnson “https://aws.amazon.com/de/blogs/compute/building-storage-first-applications-with-http-apis-service-integrations/” HTTP APIs Storage-First Service Integration • Event Bridge • Kinesis Data Streams • SQS • AppConfig • Step Functions
  • 32. Using Service Integrations with EventBridge “Amazon EventBridge” https://aws.amazon.com/eventbridge/
  • 33. Using Service Integrations with EventBridge /Put Targerts “Amazon EventBridge Put Targets” https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutTargets.html
  • 34. Using API Destinations with EventBridge “Amazon EventBridge” https://aws.amazon.com/eventbridge/
  • 35. Using API Destinations with EventBridge “Using API destinations with Amazon EventBridge” https://aws.amazon.com/de/blogs/compute/using-api-destinations-with-amazon-eventbridge/
  • 36. EventBridge Filtering and Routing “Reducing custom code by using advanced rules in Amazon EventBridge” https://aws.amazon.com/de/blogs/compute/reducing-custom-code-by-using-advanced-rules-in-amazon-eventbridge/
  • 37. S3 Event Notifications with EventBridge https://aws.amazon.com/blogs/aws/new-use-amazon-s3-event-notifications-with-amazon-eventbridge/
  • 39. Native integration between SNS and Kinesis Data Firehose https://aws.amazon.com/de/blogs/compute/introducing-message-archiving-and-analytics-for-amazon-sns/
  • 40. Step Functions Service Integration “Service Integrations with AWS Step Functions” https://docs.aws.amazon.com/step-functions/latest/dg/concepts-service-integrations.html
  • 41. AWS Step Functions Supports 200 AWS Services https://aws.amazon.com/de/blogs/aws/now-aws-step-functions-supports-200-aws-services-to-enable-easier-workflow-automation/ arn:aws:states::: aws-sdk:serviceName:apiAction. <serviceIntegrationPattern>
  • 42. Step Functions Workflow Studio – A Low-Code Visual Tool for Building State Machines “AWS Step Functions Workflow Studio” https://aws.amazon.com/de/blogs/aws/new-aws-step-functions-workflow-studio-a-low-code-visual-tool-for-building-state-machines/
  • 43. Filtering event sources for Lambda functions https://aws.amazon.com/blogs/compute/filtering-event-sources-for-aws-lambda-functions/ https://dev.to/aws-builders/trigger-lambda-functions-with-event-filtering-2pnb Filtering is supported for the following event sources: • Kinesis Data Streams • DynamoDB Streams • Amazon SQS
  • 44. NoSQL Workbench for DynamoDB https://aws.amazon.com/dynamodb/nosql-workbench/ Data Modeling Data Visualization Operation Building
  • 45. Export DynamoDB Table Data to S3 https://aws.amazon.com/de/blogs/aws/new-export-amazon-dynamodb-table-data-to-data-lake-amazon-s3/
  • 46. Amplify “Amazon Amplify” https://aws.amazon.com/amplify Amplify supports : • web frameworks including JavaScript, React, Angular, Vue, Next.js • mobile platforms including Android, iOS, React Native, Ionic, Flutter
  • 47. Amplify and Admin GUI https://docs.amplify.aws/console/adminui/intro#access-outside-the-aws-management-console/
  • 48. AWS Amplify managed CI/CD https://towardsaws.com/step-by-step-guide-to-deploy-your-web-application-with-auto-ci-cd-pipeline-using-aws-amplify-a87712756c2
  • 53. Common patterns • Direct service integrations to reduce the amount of code written • API Gateway, HTTP API, Step Functions, EventBridge, SNS, Amplify • Visual Studio/Tools to reduce the cognitive load • Step Functions, Amplify, DynamoDB • Automated CI/CD to focus on the business logic • Amplify, SAM • First steps in interpreting Infrastructure from Code • Serverless Cloud
  • 55. Using Serverless ecosystem will with the right engineering practices in place will significantly reduce • extraneous and germane cognitive load • the amount of code written • the amount of dependencies (no execution runtime and web application server to take care of)
  • 56. Reducing dependencies doesn’t mean that you own nothing (you still own things, but in general less) • Lambda language runtime version will be retired from time to time • Node.js <10.x, Java 8 runtime migration to Amazon Corretto • Aurora with PostgreSQL/MySQL compatibilities will force you to upgrade database version behind • Retiring PostgreSQL version 9.6 plan and execute upgrades continuously and iteratively Word of caution about the Serverless ecosystem
  • 57. How to be successful with Serverless
  • 58. How to measure success Let’s focus on software delivery and operational performance (how to do the things right) • Provide the managers and executives metrics, that we’re on the right path • See from the developer’s perspective how to achieve it and improve It’s also important to the right thing!
  • 59. How to measure success See DORA State of DevOps 2018-2019 Reports
  • 60. Software Delivery and Operational Performance See DORA State of DevOps 2018-2019 Reports
  • 61. Wardley Maps Simon Wardley https://www.slideshare.net/swardley/why-the-fuss-about-serverless-88107645 Co-evolution of practices to become productive with Serverless
  • 62. Co-evolution of practices with Serverless 1/2 • True DevOps • Complete infrastructure automation • Chaos Engineering • FinDev responsibilities in the teams Sheen Brisals “Why the ‘WHY’ matters more than the ‘WHAT’ in Serverless!” https://medium.com/lego-engineering/why-the-why-matters-more-than-the-what-in-serverless-2ef56c397962 DevOps Topologies: https://web.devopstopologies.com/
  • 63. • Each team or even developer can have its own (AWS test) account per feature or service • Only minimal local testing (quick functional tests) • Adopt “testing in production” Michael Bryzek “What do you know about testing in production?” https://www.youtube.com/watch?v=z-ATZTUgaAo Co-evolution of practices with Serverless 2/2
  • 64.
  • 65. www.iplabs.de Accelerate Your Photo Business Get in Touch