SlideShare a Scribd company logo
1 of 53
Download to read 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

More Related Content

Viewers also liked

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
 

Viewers also liked (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
 

Similar to 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
 

Similar to 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
 

More from 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
 

More from 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
 

Recently uploaded

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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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
 
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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
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
 
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
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

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...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
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...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
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...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 

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