SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
Messaging is not just for
    investment banks!
(+ web is not the only way)
                      Gojko Adzic
                   http://gojko.net
               gojko@gojko.com
          twitter.com/gojkoadzic
Web is now ubiquitous
... we use it to display content, to share data, for
 remote procedure calls, to integrate systems...
It started like this...
And simply exploded...
But why this???
HTTP distribution/integration

    Easy to use

    Cross-platform

    Clustering and load balancing

    Almost never blocked by firewalls

    Even then works with proxying

    Stateless

    Synchronous

    Unreliable/Non transactional

    High latency
Web technologies are not for
         everything...




... sometimes other stuff can save a lot of effort
            http://www.flickr.com/photos/33453508@N02/
HTTP distribution/integration

    Easy to use

    Cross-platform

    Clustering and load balancing

    Almost never a security problem

    Even then works with proxying

    Stateless

    Synchronous

    Unreliable/Non transactional

    High Latency
Messaging

    Application integration pattern

    Data transformation, routing, resilience, high
    performance, high throughput

    Message oriented middleware(MOM)
http://www.flickr.com/photos/wirenine/
http://www.flickr.com/photos/17675967@N02/
http://www.flickr.com/photos/stewf/
Messaging

    Application integration pattern

    Data transformation, routing, resilience, high
    performance, high throughput

    Message oriented middleware(MOM)

    Event driven processing

    Split workflows into several asynchronous parts

    Share data instead of functionallity
    −   But use data to invoke actions!
Not just for multi-billion enterprises
                     
                         Some really
                         lightweight solutions
                         out there
                     
                         Can even run
                         everything on a
                         single machine
                     
                         Typical web sites
                         can benefit from
                         this approach as
                         well
Benefits

    Better isolation
    −   Easier scaling
    −   Better performance

    Resilience

    Responsiveness

    Better resource usage
Case Study #1: E-mail after
    registration/order
Case Study #1: E-mail after
    registration/order
Case Study #1: E-mail after
    registration/order
Case Study #1: E-mail after
    registration/order
Problems

    DNS/Networking issues

    SMTP rules (external verification, spam filters)

    How do we test this?

    How do we guarantee that the message gets
    through?
    −   What if it doesn't

    What if the DB rolls back?
An alternative approach
An alternative approach
An alternative approach
An alternative approach
An alternative approach
Why is this better?

    External system problems don't affect user
    registration

    SMTP rules don't slow it down

    If e-mail sending fails, we can easily re-send
    later
Key Difference:



The first part of the process succeeds
    without waiting for the second
  - but the second is guaranteed to
                 happen
Transactional guarantee
How do we test this?

    Mock queue/In memory implementation

    Process registration and look at the queue
    contents

    Easily unit testable

    Focuses the test on what is really important
Publish/Subscribe (Fire & Forget)




         http://www.sxc.hu/photo/1084274
Publish/Subscribe (Fire & Forget)

    When you need to talk to external systems but
    don't really need to wait for them to finish

    Batch/overnight processing

    Decouple processes so that they can be
    performed asynchronously

    Effectively observer over messaging

    Option to have multiple subscribers (observers)
Case study #2: Credit card
       processing
Case study #2: Credit card
       processing
Case study #2: Credit card
       processing
Case study #2: Credit card
       processing
What could possibly go wrong?

    User closes the window mid-way

    User clicks on refresh

    Web call times out

    CC channels too busy/RPC times out

    Order processing fails after authorisation
On top of that, we're wasting web/db
             resources!
Alternative solution
Alternative solution
Alternative solution
Alternative solution
Alternative solution
Alternative solution
Alternative solution
Alternative solution
Alternative solution
Alternative solution
What's improved?

    Closing the window makes no difference

    Refresh makes no difference

    Web call will not time out

    We can wait for CC channels

    Web and DB resources used much better
Some ways to improve this...

    Enqueue operation result, authorise order
    asynchronously (increase resilience)

    Scale to more servers

    Process cards using dedicated servers (VLAN)

    Avoid polling, send a message to the client
Some other situations where
    messaging might come in handy

    Distributing work across multiple machines

    Performing a number of actions when
    something happens (eg notify admin, notify
    customer)

    Pushing frequent updates to clients
Tools

    ActiveMQ: http://activemq.apache.org/

    NServiceBus: http://www.nservicebus.com/

    AMQP: http://amqp.org
Bridging the Communication Gap

    learn how to improve communication
    between business people and software
    implementation teams

    find out how to build a shared and
    consistent understanding of the domain
    in your team

    learn how to apply agile acceptance
    testing to produce software genuinely fit
    for purpose

    discover how agile acceptance testing
    affects your work whether you are a
    programmer, business analyst or a
    tester

    learn how to build in quality into software
    projects from the start, rather than
    control it later

       http://www.acceptancetesting.info

Mais conteúdo relacionado

Destaque

Taking the business along for a ride
Taking the business along for a rideTaking the business along for a ride
Taking the business along for a rideOdd-e
 
The future of automated testing
The future of automated testingThe future of automated testing
The future of automated testing⭐ Gojko Adzic
 
Make impacts, not software
Make impacts, not softwareMake impacts, not software
Make impacts, not softwareMartin Heider
 
Challenging Requirements/Oredev
Challenging Requirements/OredevChallenging Requirements/Oredev
Challenging Requirements/Oredevgojkoadzic
 
Effective specifications for agile teams
Effective specifications for agile teamsEffective specifications for agile teams
Effective specifications for agile teamsgojkoadzic
 
Gojko Adzic Cucumber
Gojko Adzic CucumberGojko Adzic Cucumber
Gojko Adzic CucumberSkills Matter
 
Test Automation Without the Headache: Agile Tour Vienna 2015
Test Automation Without the Headache: Agile Tour Vienna 2015 Test Automation Without the Headache: Agile Tour Vienna 2015
Test Automation Without the Headache: Agile Tour Vienna 2015 gojkoadzic
 
DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDDDDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDDSkills Matter
 
Test driven development_continuous_integration
Test driven development_continuous_integrationTest driven development_continuous_integration
Test driven development_continuous_integrationhaochenglee
 
Specification by Example - By Example
Specification by Example - By ExampleSpecification by Example - By Example
Specification by Example - By ExampleManuel Pais
 
How to become a 'specification by example' rocket scientist
How to become a 'specification by example' rocket scientistHow to become a 'specification by example' rocket scientist
How to become a 'specification by example' rocket scientistEquinox IT
 
Geoff & Emily Bache - Specification By Example With GUI Tests-How Could That ...
Geoff & Emily Bache - Specification By Example With GUI Tests-How Could That ...Geoff & Emily Bache - Specification By Example With GUI Tests-How Could That ...
Geoff & Emily Bache - Specification By Example With GUI Tests-How Could That ...TEST Huddle
 
Specification by Example
Specification by ExampleSpecification by Example
Specification by ExampleSergey Shishkin
 
Practical way to experience of Specification by Example
Practical way to experience of Specification by ExamplePractical way to experience of Specification by Example
Practical way to experience of Specification by ExampleLarry Cai
 
Impact Mapping LEGO Game - Agile Business Day 2016
Impact Mapping LEGO Game - Agile Business Day 2016Impact Mapping LEGO Game - Agile Business Day 2016
Impact Mapping LEGO Game - Agile Business Day 2016Fabio Armani
 
Specification by Example - Agile India 2015
Specification by Example - Agile India 2015Specification by Example - Agile India 2015
Specification by Example - Agile India 2015Ankur Sambhar
 
Bringing Execs to the Collaboration Table with Impact Mapping
Bringing Execs to the Collaboration Table with Impact MappingBringing Execs to the Collaboration Table with Impact Mapping
Bringing Execs to the Collaboration Table with Impact MappingEm Campbell-Pretty
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentNaresh Jain
 
Specification by example - course summary
Specification by example - course summarySpecification by example - course summary
Specification by example - course summaryJakub Holy
 
Introduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven DevelopmentIntroduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven DevelopmentElisabeth Hendrickson
 

Destaque (20)

Taking the business along for a ride
Taking the business along for a rideTaking the business along for a ride
Taking the business along for a ride
 
The future of automated testing
The future of automated testingThe future of automated testing
The future of automated testing
 
Make impacts, not software
Make impacts, not softwareMake impacts, not software
Make impacts, not software
 
Challenging Requirements/Oredev
Challenging Requirements/OredevChallenging Requirements/Oredev
Challenging Requirements/Oredev
 
Effective specifications for agile teams
Effective specifications for agile teamsEffective specifications for agile teams
Effective specifications for agile teams
 
Gojko Adzic Cucumber
Gojko Adzic CucumberGojko Adzic Cucumber
Gojko Adzic Cucumber
 
Test Automation Without the Headache: Agile Tour Vienna 2015
Test Automation Without the Headache: Agile Tour Vienna 2015 Test Automation Without the Headache: Agile Tour Vienna 2015
Test Automation Without the Headache: Agile Tour Vienna 2015
 
DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDDDDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
DDD eXchange 2010: Gojko Adzic on DDD, TDD, BDD
 
Test driven development_continuous_integration
Test driven development_continuous_integrationTest driven development_continuous_integration
Test driven development_continuous_integration
 
Specification by Example - By Example
Specification by Example - By ExampleSpecification by Example - By Example
Specification by Example - By Example
 
How to become a 'specification by example' rocket scientist
How to become a 'specification by example' rocket scientistHow to become a 'specification by example' rocket scientist
How to become a 'specification by example' rocket scientist
 
Geoff & Emily Bache - Specification By Example With GUI Tests-How Could That ...
Geoff & Emily Bache - Specification By Example With GUI Tests-How Could That ...Geoff & Emily Bache - Specification By Example With GUI Tests-How Could That ...
Geoff & Emily Bache - Specification By Example With GUI Tests-How Could That ...
 
Specification by Example
Specification by ExampleSpecification by Example
Specification by Example
 
Practical way to experience of Specification by Example
Practical way to experience of Specification by ExamplePractical way to experience of Specification by Example
Practical way to experience of Specification by Example
 
Impact Mapping LEGO Game - Agile Business Day 2016
Impact Mapping LEGO Game - Agile Business Day 2016Impact Mapping LEGO Game - Agile Business Day 2016
Impact Mapping LEGO Game - Agile Business Day 2016
 
Specification by Example - Agile India 2015
Specification by Example - Agile India 2015Specification by Example - Agile India 2015
Specification by Example - Agile India 2015
 
Bringing Execs to the Collaboration Table with Impact Mapping
Bringing Execs to the Collaboration Table with Impact MappingBringing Execs to the Collaboration Table with Impact Mapping
Bringing Execs to the Collaboration Table with Impact Mapping
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Specification by example - course summary
Specification by example - course summarySpecification by example - course summary
Specification by example - course summary
 
Introduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven DevelopmentIntroduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven Development
 

Semelhante a Messaging is not just for investment banks!

Tef con2016 (1)
Tef con2016 (1)Tef con2016 (1)
Tef con2016 (1)ggarber
 
The Evolution of a Scrappy Startup to a Successful Web Service
The Evolution of a Scrappy Startup to a Successful Web ServiceThe Evolution of a Scrappy Startup to a Successful Web Service
The Evolution of a Scrappy Startup to a Successful Web ServicePoornima Vijayashanker
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architectureFaren faren
 
Cartographer, or Building A Next Generation Management Framework
Cartographer, or Building A Next Generation Management FrameworkCartographer, or Building A Next Generation Management Framework
Cartographer, or Building A Next Generation Management Frameworkansmtug
 
Jeffrey Richter
Jeffrey RichterJeffrey Richter
Jeffrey RichterCodeFest
 
The Art of Message Queues - TEKX
The Art of Message Queues - TEKXThe Art of Message Queues - TEKX
The Art of Message Queues - TEKXMike Willbanks
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready AppsVMware Tanzu
 
Best Practices for Large-Scale Websites -- Lessons from eBay
Best Practices for Large-Scale Websites -- Lessons from eBayBest Practices for Large-Scale Websites -- Lessons from eBay
Best Practices for Large-Scale Websites -- Lessons from eBayRandy Shoup
 
Architecting and Tuning IIB/eXtreme Scale for Maximum Performance and Reliabi...
Architecting and Tuning IIB/eXtreme Scale for Maximum Performance and Reliabi...Architecting and Tuning IIB/eXtreme Scale for Maximum Performance and Reliabi...
Architecting and Tuning IIB/eXtreme Scale for Maximum Performance and Reliabi...Prolifics
 
An Introduction to Prometheus (GrafanaCon 2016)
An Introduction to Prometheus (GrafanaCon 2016)An Introduction to Prometheus (GrafanaCon 2016)
An Introduction to Prometheus (GrafanaCon 2016)Brian Brazil
 
Three SOA Case Studies
Three SOA Case StudiesThree SOA Case Studies
Three SOA Case StudiesPaul Fremantle
 
Encontrando la Aguja en el Rendimiento de Aplicaciones
Encontrando la Aguja en el Rendimiento de AplicacionesEncontrando la Aguja en el Rendimiento de Aplicaciones
Encontrando la Aguja en el Rendimiento de AplicacionesSoftware Guru
 
Start Up Austin 2017: Security Crash Course and Best Pratices
Start Up Austin 2017: Security Crash Course and Best PraticesStart Up Austin 2017: Security Crash Course and Best Pratices
Start Up Austin 2017: Security Crash Course and Best PraticesAmazon Web Services
 
J Bdemo101215
J Bdemo101215J Bdemo101215
J Bdemo101215kgirt
 
Nfr testing(performance)
Nfr testing(performance)Nfr testing(performance)
Nfr testing(performance)Dilip Sharma
 
Moving Legacy Apps to Cloud: How to Avoid Risk
Moving Legacy Apps to Cloud: How to Avoid RiskMoving Legacy Apps to Cloud: How to Avoid Risk
Moving Legacy Apps to Cloud: How to Avoid RiskCloverDX
 

Semelhante a Messaging is not just for investment banks! (20)

Tef con2016 (1)
Tef con2016 (1)Tef con2016 (1)
Tef con2016 (1)
 
The Evolution of a Scrappy Startup to a Successful Web Service
The Evolution of a Scrappy Startup to a Successful Web ServiceThe Evolution of a Scrappy Startup to a Successful Web Service
The Evolution of a Scrappy Startup to a Successful Web Service
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
 
Distributed Systems in Data Engineering
Distributed Systems in Data EngineeringDistributed Systems in Data Engineering
Distributed Systems in Data Engineering
 
Cartographer, or Building A Next Generation Management Framework
Cartographer, or Building A Next Generation Management FrameworkCartographer, or Building A Next Generation Management Framework
Cartographer, or Building A Next Generation Management Framework
 
Jeffrey Richter
Jeffrey RichterJeffrey Richter
Jeffrey Richter
 
The Art of Message Queues - TEKX
The Art of Message Queues - TEKXThe Art of Message Queues - TEKX
The Art of Message Queues - TEKX
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
 
Best Practices for Large-Scale Websites -- Lessons from eBay
Best Practices for Large-Scale Websites -- Lessons from eBayBest Practices for Large-Scale Websites -- Lessons from eBay
Best Practices for Large-Scale Websites -- Lessons from eBay
 
eG Innovations
eG InnovationseG Innovations
eG Innovations
 
Architecting and Tuning IIB/eXtreme Scale for Maximum Performance and Reliabi...
Architecting and Tuning IIB/eXtreme Scale for Maximum Performance and Reliabi...Architecting and Tuning IIB/eXtreme Scale for Maximum Performance and Reliabi...
Architecting and Tuning IIB/eXtreme Scale for Maximum Performance and Reliabi...
 
An Introduction to Prometheus (GrafanaCon 2016)
An Introduction to Prometheus (GrafanaCon 2016)An Introduction to Prometheus (GrafanaCon 2016)
An Introduction to Prometheus (GrafanaCon 2016)
 
Three SOA Case Studies
Three SOA Case StudiesThree SOA Case Studies
Three SOA Case Studies
 
Encontrando la Aguja en el Rendimiento de Aplicaciones
Encontrando la Aguja en el Rendimiento de AplicacionesEncontrando la Aguja en el Rendimiento de Aplicaciones
Encontrando la Aguja en el Rendimiento de Aplicaciones
 
Art Of Message Queues
Art Of Message QueuesArt Of Message Queues
Art Of Message Queues
 
Start Up Austin 2017: Security Crash Course and Best Pratices
Start Up Austin 2017: Security Crash Course and Best PraticesStart Up Austin 2017: Security Crash Course and Best Pratices
Start Up Austin 2017: Security Crash Course and Best Pratices
 
J Bdemo101215
J Bdemo101215J Bdemo101215
J Bdemo101215
 
Nfr testing(performance)
Nfr testing(performance)Nfr testing(performance)
Nfr testing(performance)
 
Intro Cloud Computing
Intro Cloud ComputingIntro Cloud Computing
Intro Cloud Computing
 
Moving Legacy Apps to Cloud: How to Avoid Risk
Moving Legacy Apps to Cloud: How to Avoid RiskMoving Legacy Apps to Cloud: How to Avoid Risk
Moving Legacy Apps to Cloud: How to Avoid Risk
 

Mais de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Mais de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Último

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
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 WorkerThousandEyes
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
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 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
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...Martijn de Jong
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 

Último (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
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...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 

Messaging is not just for investment banks!

  • 1. Messaging is not just for investment banks! (+ web is not the only way) Gojko Adzic http://gojko.net gojko@gojko.com twitter.com/gojkoadzic
  • 2. Web is now ubiquitous ... we use it to display content, to share data, for remote procedure calls, to integrate systems...
  • 3. It started like this...
  • 6. HTTP distribution/integration  Easy to use  Cross-platform  Clustering and load balancing  Almost never blocked by firewalls  Even then works with proxying  Stateless  Synchronous  Unreliable/Non transactional  High latency
  • 7. Web technologies are not for everything... ... sometimes other stuff can save a lot of effort http://www.flickr.com/photos/33453508@N02/
  • 8. HTTP distribution/integration  Easy to use  Cross-platform  Clustering and load balancing  Almost never a security problem  Even then works with proxying  Stateless  Synchronous  Unreliable/Non transactional  High Latency
  • 9. Messaging  Application integration pattern  Data transformation, routing, resilience, high performance, high throughput  Message oriented middleware(MOM)
  • 12.
  • 14. Messaging  Application integration pattern  Data transformation, routing, resilience, high performance, high throughput  Message oriented middleware(MOM)  Event driven processing  Split workflows into several asynchronous parts  Share data instead of functionallity − But use data to invoke actions!
  • 15. Not just for multi-billion enterprises  Some really lightweight solutions out there  Can even run everything on a single machine  Typical web sites can benefit from this approach as well
  • 16. Benefits  Better isolation − Easier scaling − Better performance  Resilience  Responsiveness  Better resource usage
  • 17. Case Study #1: E-mail after registration/order
  • 18. Case Study #1: E-mail after registration/order
  • 19. Case Study #1: E-mail after registration/order
  • 20. Case Study #1: E-mail after registration/order
  • 21. Problems  DNS/Networking issues  SMTP rules (external verification, spam filters)  How do we test this?  How do we guarantee that the message gets through? − What if it doesn't  What if the DB rolls back?
  • 27. Why is this better?  External system problems don't affect user registration  SMTP rules don't slow it down  If e-mail sending fails, we can easily re-send later
  • 28. Key Difference: The first part of the process succeeds without waiting for the second - but the second is guaranteed to happen
  • 30. How do we test this?  Mock queue/In memory implementation  Process registration and look at the queue contents  Easily unit testable  Focuses the test on what is really important
  • 31. Publish/Subscribe (Fire & Forget) http://www.sxc.hu/photo/1084274
  • 32. Publish/Subscribe (Fire & Forget)  When you need to talk to external systems but don't really need to wait for them to finish  Batch/overnight processing  Decouple processes so that they can be performed asynchronously  Effectively observer over messaging  Option to have multiple subscribers (observers)
  • 33. Case study #2: Credit card processing
  • 34. Case study #2: Credit card processing
  • 35. Case study #2: Credit card processing
  • 36. Case study #2: Credit card processing
  • 37. What could possibly go wrong?  User closes the window mid-way  User clicks on refresh  Web call times out  CC channels too busy/RPC times out  Order processing fails after authorisation
  • 38. On top of that, we're wasting web/db resources!
  • 49. What's improved?  Closing the window makes no difference  Refresh makes no difference  Web call will not time out  We can wait for CC channels  Web and DB resources used much better
  • 50. Some ways to improve this...  Enqueue operation result, authorise order asynchronously (increase resilience)  Scale to more servers  Process cards using dedicated servers (VLAN)  Avoid polling, send a message to the client
  • 51. Some other situations where messaging might come in handy  Distributing work across multiple machines  Performing a number of actions when something happens (eg notify admin, notify customer)  Pushing frequent updates to clients
  • 52. Tools  ActiveMQ: http://activemq.apache.org/  NServiceBus: http://www.nservicebus.com/  AMQP: http://amqp.org
  • 53. Bridging the Communication Gap  learn how to improve communication between business people and software implementation teams  find out how to build a shared and consistent understanding of the domain in your team  learn how to apply agile acceptance testing to produce software genuinely fit for purpose  discover how agile acceptance testing affects your work whether you are a programmer, business analyst or a tester  learn how to build in quality into software projects from the start, rather than control it later http://www.acceptancetesting.info