SlideShare ist ein Scribd-Unternehmen logo
1 von 110
Downloaden Sie, um offline zu lesen
Medium/Twitter: @PaulDJohnston
Serverless Best Practices
Paul Johnston
Opinionated Serverless Person
“Serverless all the things”
Medium/Twitter: @PaulDJohnston
Serverless Computing London November 2018
Medium/Twitter: @PaulDJohnston
Paul Johnston
Experienced Interim CTO and Serverless
Consultant - linkedin.com/in/padajo
C-Level Consultant
Environmentalist #ClimateChange bit.ly/2024wp
Twitter/Medium @PaulDJohnston
Co-founder ServerlessDays (formerly JeffConf)
Medium/Twitter: @PaulDJohnston
Cloud, Data Centres and Energy
Medium/Twitter: @PaulDJohnston
Future of Cloud and Climate
Data Centres at least 2% of Global Carbon Emissions (bigger than aviation)
Growth of Cloud/Data Centres likely to grow by at least 5x in next 7 years
Efficiency is irrelevant due to Jevons Paradox - increased efficiency leads to
increased demand
Not just climate, but energy security - energy price rises
Whitepaper written by Anne Currie and myself bit.ly/2024wp
And Bitcoin energy consumption? About the same as Austria
https://digiconomist.net/bitcoin-energy-consumption
Medium/Twitter: @PaulDJohnston
Ethics Whitepaper - The State of Data Centre
Energy Use in 2018
Medium/Twitter: @PaulDJohnston
Background - Movivo
CTO of Movivo in 2015
One of the first Serverless startups
Android App + AWS Lambda
By early 2017 was in 20+ countries with over
500,000 MAU
AWS bill was ~$300/month (half data backup)
Team of 2 serverless and 2 android developers in
total
Medium/Twitter: @PaulDJohnston
Background - AWS
Senior Developer Advocate for Serverless
2017-18
Part of Lambda Product Team
Responsible for speaking about Lambda, API
Gateway, Step Functions, Serverless Application
Repository, Lambda@Edge and other services
Met and did workshops with many serverless
customers
Medium/Twitter: @PaulDJohnston
bit.ly/serverlessbestpractices
Medium/Twitter: @PaulDJohnston
bit.ly/serverlessbestpractices*
*not the only practices and you can break the rules if you want
Medium/Twitter: @PaulDJohnston
What is Serverless?
Medium/Twitter: @PaulDJohnston
Serverless is Inherently
Event Driven
And
Asynchronous*
*Consequence of FaaS and Queues
Medium/Twitter: @PaulDJohnston
Definition of Serverless
“A Serverless solution is one that
costs you nothing to run if nobody is
using it, excluding data storage.”
Me - September 2017
Medium/Twitter: @PaulDJohnston
Serverless is
Economic
not Technological
Medium/Twitter: @PaulDJohnston
So Serverless is about
Business
not
Technology*
*Consequence of CTO thinking
Medium/Twitter: @PaulDJohnston
Serverless Best Practices
Medium/Twitter: @PaulDJohnston
Serverless Best Practices
Serverless Best Practices blog:
bit.ly/serverlessbestpractices
August 2018
Medium/Twitter: @PaulDJohnston
Each function should do only one
thing
Functions don’t call other functions
Use as few libraries in your functions
as possible (preferably zero)
Avoid using connection based
services e.g. RDBMS
Serverless Best Practices
One function per route (if using
HTTP)
Learn to use messages and queues
(async FTW)
Data flows not data lakes
Just coding for scale is a mistake,
you have to consider how it scales
Medium/Twitter: @PaulDJohnston
Practice 1:
Each Function should do
only one thing
Medium/Twitter: @PaulDJohnston
Scaling And Error Isolation
(If you have a switch statement, you’re doing it wrong)
Medium/Twitter: @PaulDJohnston
Practice 1: Scaling
Lots of tutorials/frameworks put monoliths into functions (miniliths) - Microservices
If you have multiple logic elements, then you have to scale memory and compute
to the most hungry element
Medium/Twitter: @PaulDJohnston
Practice 1: Scaling
Function
Function Function
Function Function
Function Function
Scaling up of function
= Logic within function code
Medium/Twitter: @PaulDJohnston
Practice 1: Scaling
Function
Function Function
Function Function
Function Function
Assumption: All logic is
equal within function
Scaling up of function
Medium/Twitter: @PaulDJohnston
Practice 1: Scaling
Function
Function Function
Function Function
Function Function
Assumption: All logic is
equal within function
Scaling up of function
Medium/Twitter: @PaulDJohnston
Practice 1: Scaling
Function
Scaling up of function
= Logic within function code
Function Function
Function Function
Function Function
Memory and compute
allocated for most
memory/compute intensive
compute e.g.
e.g. 1 GB + 15 second timeout
Medium/Twitter: @PaulDJohnston
Practice 1: Scaling
Scaling up of function logic
as needed
= Logic within function code
Memory and compute
allocated as required
Function
Function
Function
1 GB + 3 second timeout
256MB + 500 ms timeout
128MB + 15 second timeout
Medium/Twitter: @PaulDJohnston
Practice 1: Debugging
= Logic within function code
Function
Function
Function
1 GB + 3 second timeout
256MB + 500 ms timeout
128MB + 15 second timeout
Errors are easier to debug
and can replace functions
with minimal disruption
!!!
Medium/Twitter: @PaulDJohnston
Practice 1:
Each Function should do
only one thing
FunctionFunctionFunction
Medium/Twitter: @PaulDJohnston
Practice 2:
Functions don’t call other functions
Medium/Twitter: @PaulDJohnston
Practice 2: Functions and Microservices
Functions != Microservices
Logically you might think it’s ok to call other functions
Removes isolation
Doubles cost
Makes debugging more complex
Medium/Twitter: @PaulDJohnston
Practice 2: Function calling
FunctionFunction
Direct invoke
Doubling up invoke cost
Removes isolation
If errors occur, it’s more
difficult to identify in logs
which function is
responsible
Medium/Twitter: @PaulDJohnston
Practice 2: Use queues
FunctionFunction
Queue Trigger
⚡
Replace with a queue
Automatic trigger
Medium/Twitter: @PaulDJohnston
Practice 2: Use data stores
FunctionFunction
Data Store Trigger
⚡
Or a data store
Automatic trigger
Medium/Twitter: @PaulDJohnston
Practice 2: Unidirectional
FunctionFunction
Data Store Trigger
⚡
Unidirectional
Medium/Twitter: @PaulDJohnston
Practice 2:
Functions don’t call other functions
FunctionFunction
⚡
Medium/Twitter: @PaulDJohnston
Practice 3:
Use as few libraries in your functions as
possible (preferably zero)
Medium/Twitter: @PaulDJohnston
Practice 3: Show me the code… vulnerabilities
Libraries make things easier...
…but always introduce technical debt
It’s a trade off
If you know it (really know it) and trust it then use it
But then you manage that on top of your logic
Medium/Twitter: @PaulDJohnston
Practice 3: AWS Lambda Function Lifecycle
Full Cold Start
Start new
container
Bootstrap the
runtime
Start your
code
Time
AWS Optimisation Your Optimisation
Partial Cold Start Warm Start
Download your
code
Source: AWS Online Tech Talks - Become a Serverless Black Belt - Optimizing Your Serverless Applications
Medium/Twitter: @PaulDJohnston
Practice 3: Small packages
Download your
code
Small packages are faster to download
Not a major optimisation for speed
But fewer lines of code are easier to debug
Medium/Twitter: @PaulDJohnston
Practice 3: Global variables and connections
Bootstrap the
runtime
Global variables loaded before
execution
Lazy loading is a good idea
Libraries loaded here can be a real
problem. What is being loaded?
Using Practice 1 - Each function
should only do one thing - then this
should limit your libraries
Medium/Twitter: @PaulDJohnston
Practice 3: Code optimisation
Start your
code
Most optimisation is found here - your code
If you have zero libraries, then this is where most of
your optimisation is
Reliance on libraries here may seem like you have
fewer lines of code in functions, but actually many
more lines of actual code
Medium/Twitter: @PaulDJohnston
Practice 3: LOC
Lines of Code matters
Not just your code, but libraries too - 1 library can have many dependencies
So no libraries unless you absolutely have to
It’s amazing what you don’t need
And Cold Starts are often very fast when you have very few libraries
Medium/Twitter: @PaulDJohnston
Practice 3: e.g. AWS SDK
npm init -y
npm install --save aws-sdk
echo "var AWS = require('aws-sdk');" > index.js
sloc ./
---------- Result ------------
Physical : 503378
Source : 295886
Comment : 197692
Single-line comment : 5458
Block comment : 192281
Mixed : 1794
Empty : 16109
To Do : 33
Number of files read : 620
------------------------------
295,886 Lines of Source Code
Medium/Twitter: @PaulDJohnston
Practice 3: No express or django
Functions were not built for running server based solutions
So don’t use them
It adds in huge amounts of unnecessary code written for servers
It doesn’t save time in the long run
Medium/Twitter: @PaulDJohnston
Practice 3:
Use as few libraries in your functions as
possible (preferably zero)
Start new
container
Bootstrap the
runtime
Start your
code
Download your
code
Medium/Twitter: @PaulDJohnston
Practice 4:
Avoid using connection based services
e.g. RDBMS
Medium/Twitter: @PaulDJohnston
WARNING
WARNING
WARNING
Medium/Twitter: @PaulDJohnston
Practice 4:
Avoid using connection based services
e.g. RDBMS
Medium/Twitter: @PaulDJohnston
Practice 4: Bottlenecks
Concurrent Functions
RDBMS
n = 20
100 connections
limit
Medium/Twitter: @PaulDJohnston
Practice 4: Bottlenecks
Concurrent Functions
RDBMS
n = 20 ALL GOOD
100 connections
limit
Medium/Twitter: @PaulDJohnston
Practice 4: Bottlenecks
Scale x4
Medium/Twitter: @PaulDJohnston
Practice 4: Bottlenecks
Concurrent Functions
RDBMS
n = 80
100 connections
limit
Medium/Twitter: @PaulDJohnston
Practice 4: Bottlenecks
Concurrent Functions
RDBMS
n = 80 ALL GOOD
100 connections
limit
Medium/Twitter: @PaulDJohnston
Practice 4: Bottlenecks
Scale x4
Medium/Twitter: @PaulDJohnston
Practice 4: Bottlenecks
100 connections
limit
RDBMS
Concurrent Functions
n = 320
Medium/Twitter: @PaulDJohnston
Practice 4: Bottlenecks
Concurrent Functions
RDBMS
n = 320 NO CONNECTIONS
100 connections
limit
Medium/Twitter: @PaulDJohnston
Practice 4: Solution?
Concurrent Functions
RDBMS
n = 320
Connection
pooling proxy?
throttle as
needed
100
connections
Medium/Twitter: @PaulDJohnston
Practice 4: Service interfaces
Concurrent Functions
n = 320
e.g. DynamoDB
Managed Service
Interface
Medium/Twitter: @PaulDJohnston
Practice 4: Service interfaces
Concurrent Functions
n = 1000s?
e.g. DynamoDB
Need to be aware
of provisioning
Managed Service
Interface
More likely to be
able to scale up
Medium/Twitter: @PaulDJohnston
Practice 4: Upstream scale
Serverless
Functions
Connections
Data Layer
Other Services
Concurrency of
functions
defined by
upstream scale
Medium/Twitter: @PaulDJohnston
Practice 4: Beware of I/O
Serverless
Functions
Connections
Data Stores
Other Services
Concurrency of
functions
defined by
upstream scale
Be aware of I/O (cold start)
Medium/Twitter: @PaulDJohnston
Practice 4: Rethink your data layer
Small spikes in functions can max out connections in a database
Concurrency can limit your scale
Your data layer constraints affect how you build your functions and applications
Managed data services are likely to be able to scale better than trying to scale
yourself
Medium/Twitter: @PaulDJohnston
Practice 4:
Avoid using connection based services
e.g. RDBMS
Managed Service Interface
Medium/Twitter: @PaulDJohnston
Practice 5:
One function per route (if using HTTP)
Medium/Twitter: @PaulDJohnston
Practice 5: HTTP routes - API Gateways
Relatively common use case
A lot of tutorials are “miniliths” - a single function to handle all routes
Others are “run django, express etc in a function” (middleware?)
Easy to start (Hello World!), more difficult to isolate errors (Practice 1)
Can make it difficult to decouple data layer from functions
Medium/Twitter: @PaulDJohnston
Practice 5: API Gateways - easy start, doesn’t scale
Single proxy
function
or django/express
style function
APIGateway
Internet
GET /
POST /posts
GET /posts/{id}
POST /authors
GET /authors/{id}
Medium/Twitter: @PaulDJohnston
Practice 5: API Gateways
APIGateway
Internet
GET /
POST /posts
GET /posts/{id}
POST /authors
GET /authors/{id}
Fn 1
Fn 2
Fn 3
Fn 4
Fn 5
Medium/Twitter: @PaulDJohnston
Practice 5: Lots of functions - manage it!
This does increase the number of resources
Each function will need security rules and may need secrets etc
So, use infrastructure as code
E.g. Terraform, SAM, CloudFormation, Serverless Framework, Architect, Stackery
Medium/Twitter: @PaulDJohnston
Practice 5:
One function per route (if using HTTP)
GET /
POST /posts
Fn 1
Fn 2
Medium/Twitter: @PaulDJohnston
Practice 6:
Learn to use messages and queues
(async FTW)
Medium/Twitter: @PaulDJohnston
Practice 6: So queues (from Practice 2)
FunctionFunction
Queue Trigger
⚡
Automatic trigger
Medium/Twitter: @PaulDJohnston
Practice 6: And data stores (from Practice 2)
FunctionFunction
Trigger
⚡
Automatic trigger
Data Store
Medium/Twitter: @PaulDJohnston
Practice 6: Event pattern
Trigger
⚡
Automatic trigger
Thing
? Function
Medium/Twitter: @PaulDJohnston
Practice 6: Event pattern
Trigger
⚡
Automatic trigger
Thing
? Function
RUN STUFF WHEN STUFF
HAPPENS
Medium/Twitter: @PaulDJohnston
Practice 6: Event pattern - queues
Trigger
⚡
Automatic trigger
Queue Function
Push messages in
Asynchronous
is not request
response
Circuit breaker
{
“Data”:
{
“a”: [
...
Medium/Twitter: @PaulDJohnston
Practice 6: Event pattern - queues
Trigger
⚡
Automatic trigger
Queue Function
Happy path
Errors...
DLQ?
Blocking?
Non-Blocking?
Medium/Twitter: @PaulDJohnston
Practice 6: Async queues and messages
Decouples logic through queues
Primarily stops you building request-response
Learn to use circuit breakers
Understand which queues to use and when
Medium/Twitter: @PaulDJohnston
Basically, learn how distributed systems work
Medium/Twitter: @PaulDJohnston
Practice 6: CQRS
Command Query Responsibility Segregation
Basically Reads and Writes go through different logic
Trigger on data writes
Build caches to read from
Asynchronous
Medium/Twitter: @PaulDJohnston
Practice 6:
Learn to use messages and queues
(async FTW)
⚡
{
“Data”:
{
“a”: [
...
Medium/Twitter: @PaulDJohnston
Practice 7:
Data flows not data lakes
Medium/Twitter: @PaulDJohnston
Your data in your application is always in motion
Medium/Twitter: @PaulDJohnston
Applications are not code
Medium/Twitter: @PaulDJohnston
Applications are like landscapes and water
Medium/Twitter: @PaulDJohnston
Medium/Twitter: @PaulDJohnston
Medium/Twitter: @PaulDJohnston
Practice 7: Data flows and Data lakes
Data Lake
Data Flows
Medium/Twitter: @PaulDJohnston
Practice 7: Data flows into Data lakes
Medium/Twitter: @PaulDJohnston
Practice 7: Data flows into Data lakes
Medium/Twitter: @PaulDJohnston
Practice 7: Data flows
Data flows through your application
Queues - Functions - Events
Fast Data Stores - Caches, Fast Reads/Writes
Performant data throughput
Scale considerations are higher
e.g Document DBs, K/V stores, blob stores
Medium/Twitter: @PaulDJohnston
Practice 7: Data lakes
Data ends up in a lake
Lots of different types of data
Usually the end of a data flow
Less need for performance
Scale considerations are lower
e.g. RDBMS, Logging, Analytics
Medium/Twitter: @PaulDJohnston
Practice 7: Changing data flows
Easier to reroute a data flow
Than to dam a lake
Events allow for flexible data structures
Rigidity makes rerouting harder
Applications always change, and this allows
for it
Medium/Twitter: @PaulDJohnston
Practice 7: Data flows
Your application
Is more about the
flows
than it
is about the
lakes
Application
Medium/Twitter: @PaulDJohnston
Practice 7:
Data flows not data lakes
Application
Medium/Twitter: @PaulDJohnston
Practice 8:
Just coding for scale is a mistake, you
have to consider how it scales
Medium/Twitter: @PaulDJohnston
Just because the
Function
scales does not mean the
Application
will scale
Medium/Twitter: @PaulDJohnston
What are upstream and downstream effects?
Medium/Twitter: @PaulDJohnston
Practice 8: Scale all the things
Your application is more than just functions
What are your application dependencies?
Data stores?
Third Party Services?
+ ? + Scale = ?
Medium/Twitter: @PaulDJohnston
Practice 8:
Just coding for scale is a mistake, you
have to consider how it scales
+ ? + Scale = ?
Medium/Twitter: @PaulDJohnston
Quick Point:
These are “Best Practices”
not “Only Practices”*
*know the practices so that you can understand when to break them
Medium/Twitter: @PaulDJohnston
Practice 1:
Each Function should do
only one thing
FunctionFunctionFunction
Medium/Twitter: @PaulDJohnston
Practice 2:
Functions don’t call other functions
FunctionFunction
⚡
Medium/Twitter: @PaulDJohnston
Practice 3:
Use as few libraries in your functions as
possible (preferably zero)
Start new
container
Bootstrap the
runtime
Start your
code
Download your
code
Medium/Twitter: @PaulDJohnston
Practice 4:
Avoid using connection based services
e.g. RDBMS
Managed Service Interface
Medium/Twitter: @PaulDJohnston
Practice 5:
One function per route (if using HTTP)
GET /
POST /posts
Fn 1
Fn 2
Medium/Twitter: @PaulDJohnston
Practice 6:
Learn to use messages and queues
(async FTW)
⚡
{
“Data”:
{
“a”: [
...
Medium/Twitter: @PaulDJohnston
Practice 7:
Data flows not data lakes
Application
Medium/Twitter: @PaulDJohnston
Practice 8:
Just coding for scale is a mistake, you
have to consider how it scales
+ ? + Scale = ?
Medium/Twitter: @PaulDJohnston
bit.ly/serverlessbestpractices
Medium/Twitter: @PaulDJohnston
Paul Johnston
Experienced Interim CTO and Serverless
Consultant - linkedin.com/in/padajo
C-Level Consulting
Introducing and Moving to Serverless
Building Teams
Cloud Agnostic
Contact: paul@roundaboutlabs.com or
Twitter/Medium @PaulDJohnston
Medium/Twitter: @PaulDJohnston
Serverless Best Practices
Paul Johnston
Opinionated Serverless Person
“Serverless all the things”
Medium/Twitter: @PaulDJohnston
Serverless Computing London November 2018

Weitere ähnliche Inhalte

Ähnlich wie Serverless Best Practices - Serverless Computing London

Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Nati Shalom
 
RSS feeds using Millennium data
RSS feeds using Millennium dataRSS feeds using Millennium data
RSS feeds using Millennium dataAndrew Preater
 
Personium mydata2016 0902
Personium mydata2016 0902Personium mydata2016 0902
Personium mydata2016 0902暁生 下野
 
Jubatus talk at HadoopSummit 2013
Jubatus talk at HadoopSummit 2013Jubatus talk at HadoopSummit 2013
Jubatus talk at HadoopSummit 2013Preferred Networks
 
Large Scale Processing with Django
Large Scale Processing with DjangoLarge Scale Processing with Django
Large Scale Processing with DjangoUdi Bauman
 
Making awesome apps
Making awesome appsMaking awesome apps
Making awesome appsDroidConTLV
 
香港六合彩
香港六合彩香港六合彩
香港六合彩uliuqd
 
Oop2018 tutorial-stal-mo2-io t-arduino-en
Oop2018 tutorial-stal-mo2-io t-arduino-enOop2018 tutorial-stal-mo2-io t-arduino-en
Oop2018 tutorial-stal-mo2-io t-arduino-enMichael Stal
 
LatJUG. Google App Engine
LatJUG. Google App EngineLatJUG. Google App Engine
LatJUG. Google App Enginedenis Udod
 
Scaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, GoalsScaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, Goalskamaelian
 
Dc ch02 : protocol architecture
Dc ch02 : protocol architectureDc ch02 : protocol architecture
Dc ch02 : protocol architectureSyaiful Ahdan
 
Efficient data transfer in Android
Efficient data transfer in AndroidEfficient data transfer in Android
Efficient data transfer in AndroidCotap Engineering
 
Better Functional Design through TDD
Better Functional Design through TDDBetter Functional Design through TDD
Better Functional Design through TDDPhil Calçado
 
Micro Processors Present Technology and Up gradations Required
Micro Processors Present Technology and Up gradations RequiredMicro Processors Present Technology and Up gradations Required
Micro Processors Present Technology and Up gradations Requiredijtsrd
 
IRJET - Automation in Python using Speech Recognition
IRJET -  	  Automation in Python using Speech RecognitionIRJET -  	  Automation in Python using Speech Recognition
IRJET - Automation in Python using Speech RecognitionIRJET Journal
 
Streaming 4 billion Messages per day. Lessons Learned.
Streaming 4 billion Messages per day. Lessons Learned.Streaming 4 billion Messages per day. Lessons Learned.
Streaming 4 billion Messages per day. Lessons Learned.Angelos Petheriotis
 

Ähnlich wie Serverless Best Practices - Serverless Computing London (20)

Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
 
RSS feeds using Millennium data
RSS feeds using Millennium dataRSS feeds using Millennium data
RSS feeds using Millennium data
 
Personium mydata2016 0902
Personium mydata2016 0902Personium mydata2016 0902
Personium mydata2016 0902
 
amaha internet course
amaha internet courseamaha internet course
amaha internet course
 
Jubatus talk at HadoopSummit 2013
Jubatus talk at HadoopSummit 2013Jubatus talk at HadoopSummit 2013
Jubatus talk at HadoopSummit 2013
 
Large Scale Processing with Django
Large Scale Processing with DjangoLarge Scale Processing with Django
Large Scale Processing with Django
 
Making awesome apps
Making awesome appsMaking awesome apps
Making awesome apps
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
Oop2018 tutorial-stal-mo2-io t-arduino-en
Oop2018 tutorial-stal-mo2-io t-arduino-enOop2018 tutorial-stal-mo2-io t-arduino-en
Oop2018 tutorial-stal-mo2-io t-arduino-en
 
LatJUG. Google App Engine
LatJUG. Google App EngineLatJUG. Google App Engine
LatJUG. Google App Engine
 
Scaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, GoalsScaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, Goals
 
Dc ch02 : protocol architecture
Dc ch02 : protocol architectureDc ch02 : protocol architecture
Dc ch02 : protocol architecture
 
Introduction to SDshare
Introduction to SDshareIntroduction to SDshare
Introduction to SDshare
 
HHS_TOC_Glossary EMERSON EDUARDO RODRIGUES
HHS_TOC_Glossary EMERSON EDUARDO RODRIGUESHHS_TOC_Glossary EMERSON EDUARDO RODRIGUES
HHS_TOC_Glossary EMERSON EDUARDO RODRIGUES
 
Efficient data transfer in Android
Efficient data transfer in AndroidEfficient data transfer in Android
Efficient data transfer in Android
 
Better Functional Design through TDD
Better Functional Design through TDDBetter Functional Design through TDD
Better Functional Design through TDD
 
Monitoring in 2017 - TIAD Camp Docker
Monitoring in 2017 - TIAD Camp DockerMonitoring in 2017 - TIAD Camp Docker
Monitoring in 2017 - TIAD Camp Docker
 
Micro Processors Present Technology and Up gradations Required
Micro Processors Present Technology and Up gradations RequiredMicro Processors Present Technology and Up gradations Required
Micro Processors Present Technology and Up gradations Required
 
IRJET - Automation in Python using Speech Recognition
IRJET -  	  Automation in Python using Speech RecognitionIRJET -  	  Automation in Python using Speech Recognition
IRJET - Automation in Python using Speech Recognition
 
Streaming 4 billion Messages per day. Lessons Learned.
Streaming 4 billion Messages per day. Lessons Learned.Streaming 4 billion Messages per day. Lessons Learned.
Streaming 4 billion Messages per day. Lessons Learned.
 

Kürzlich hochgeladen

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 

Kürzlich hochgeladen (20)

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 

Serverless Best Practices - Serverless Computing London