SlideShare a Scribd company logo
1 of 43
An event-driven architecture in a fast growing ecosystem
November 18th 2016
Sander de Groot
Sander.deGroot@infosupport.com
• “The Way You Pay”
• Event driven architecture at Twyp
• Common pitfalls and best practices
• Looking back at our decision
• Questions
The next 30 minutes…
Disclaimer
• Transfer money from your mobile phone directly to
another mobile phone
• Near real-time pan-European money transfers
• No need to be ING customer
• Super simple onboarding
Twyp: a social instant payments platform
Use cases
How does it look?
Some facts
Countries Netherlands, Spain
Users ~ 400.000
Top load 2.000 transactions per second
Running services ~ 50 unique services
Event catalog ~ 75 unique event types
Average daily event processing ~ 420.000
Twyp is not just building an app, we are building a mini-bank.
• A custom business intelligence solution
• A management portal for customer support and operations
• Fraud detection / prevention
• System monitoring solutions
And we have to operate it of course.
Twyp is a mini-bank on its own
Next up: how is Twyp powered by
events?
Build a new highly available, resilient and
responsive platform that can be scaled on both
technical and operational level
Assignment for Twyp team
Reference architecture
Simple question, the answer is: it’s complicated.
However:
• Fits well with our micro services based approach
• It’s a great decoupling mechanism
• Forces engineers to think about what they’re doing
• Helps with scaling due to it’s asynchronous nature
Why are we applying an Event Driven Architecture?
Event-driven communication between services
• One queue per service type
• All instances listen to the same queue
• Routing keys for distribution
Queues and subscriptions
Event-driven all the way to the frontend
Event-driven all the way to the frontend
Birdseye overview
Time for our top 7 best practices!
<noun><verb in past tense>
Why?
An event describes a ’real-life’ fact that happened in the past.
You can’t change the past.
- Someone, some time in the past
(1) Event naming convention
RegisterUser
Is this a good name for an event?
UserProcessing
Is this a good name for an event?
PhoneNumberInvited
Is this a good name for an event?
UserAdded
Is this a good name for an event?
It is not only about the name.
• Any event should only be
owned by one service.
• Events can only be sent
by that service
• The data in the event is
owned by the same
service
(2) Owner of events
• Expose which events you consume
• Expose which events you are sending
• Expose the commands you can handle
(3) Dependencies and impact mapping
Example report about dependencies between services
Example report on event graph
There’s a few things you have to take into account with message brokers
• Delivery guarantees
• Idempotence
• Scalability & resillience
(4) Message delivery aspects
Headers
• Unique ID
• CorrelationId for tracing flows
• Source (name of the service)
• Date occurred
• Authorization
Body
• Include only the data that is business wise part of the event.
Do not put data in events because other services want to have it.
For example: adding the users phone number to the PaymentInitiated event is a bad idea
(5) Contents of events
• Well known solution
• In case when services can’t process messages
(6) Dead Letter Queue
(7) Archiving and replaying
Archiving your events is of outmost importance.
because
You can reconstruct your state based on your events
(8) Archiving and replaying
Event
1 UserRegistered[10, Sander, 0]
ID Name Balance
10 Sander 0
(8) Archiving and replaying
Event
1 UserRegistered[10, Sander, 0]
2 UserToppedUp[10, 100]
ID Name Balance
10 Sander 100
(8) Archiving and replaying
ID Name Balance
10 Sander 100
11 Richard 0
Event
1 UserRegistered[10, Sander, 0]
2 UserToppedUp[10, 100]
3 UserRegistered[11, Richard, 0]
(8) Archiving and replaying
EventId Event
1 UserRegistered[10, Sander, 0]
2 UserToppedUp[10, 100]
3 UserRegistered[11, Richard, 0]
4 PaymentTransferred[4, Sander, Richard,
10]
ID Name Balance
10 Sander 90
11 Richard 10
Event replayer
Event store and event replayer
So what is the impact of
Event Driven Architecture for Twyp?
- Services can be run separately
- Developers are forced to think about their solution
- Business understands events
- No long running API calls because of the async nature of events
- Scalable solution
Pro’s
• Requires design up front (especially if you introduce event sourcing)
• More complicated frontend
• Requires a completely different way of thinking
• Requires some sort of task-based-ui. You have to rethink many things
Con’s
Thank you for your attention!
QuestionTimeStartedEvent
Building a new p2p payments platform at ING43
LAC, November 18th 2016
Sander de Groot
Sander.deGroot@infosupport.co
m

More Related Content

Viewers also liked

Modelos de gestion conferencia paraguay converti. final final
Modelos de gestion conferencia paraguay converti.  final finalModelos de gestion conferencia paraguay converti.  final final
Modelos de gestion conferencia paraguay converti. final finalPTF
 
TRS Ariel baños modulo 3
TRS Ariel baños modulo 3TRS Ariel baños modulo 3
TRS Ariel baños modulo 3PTF
 
Insights on the changes operated in forest value-chain management in South Am...
Insights on the changes operated in forest value-chain management in South Am...Insights on the changes operated in forest value-chain management in South Am...
Insights on the changes operated in forest value-chain management in South Am...marcos Marcos
 
3Com 3C13716
3Com 3C137163Com 3C13716
3Com 3C13716savomir
 
Losich tatsiana
Losich tatsianaLosich tatsiana
Losich tatsianaTania Jura
 
CONCEPTOS DE SISTEMAS
CONCEPTOS DE SISTEMASCONCEPTOS DE SISTEMAS
CONCEPTOS DE SISTEMASALECOXSDB
 
Control de lectura n°3 informatica en la medicina nuclear thalia fernández bu...
Control de lectura n°3 informatica en la medicina nuclear thalia fernández bu...Control de lectura n°3 informatica en la medicina nuclear thalia fernández bu...
Control de lectura n°3 informatica en la medicina nuclear thalia fernández bu...Thalia FernAndez Buleje
 
2013 planeamiento estratégico inmobiliario v7
2013   planeamiento estratégico inmobiliario v72013   planeamiento estratégico inmobiliario v7
2013 planeamiento estratégico inmobiliario v7PTF
 
Practica # 20 intoxicación por acido clorhídrico
Practica # 20 intoxicación por acido clorhídricoPractica # 20 intoxicación por acido clorhídrico
Practica # 20 intoxicación por acido clorhídricoJessica Ramirez
 
Presentacion asuncion - Jorge Zanoletty
Presentacion asuncion - Jorge ZanolettyPresentacion asuncion - Jorge Zanoletty
Presentacion asuncion - Jorge ZanolettyPTF
 
Taller paraguay pma
Taller paraguay pmaTaller paraguay pma
Taller paraguay pmaPTF
 
PGI 2015
PGI 2015PGI 2015
PGI 2015PTF
 
Presentacion michael porter participantes v 280813
Presentacion michael porter   participantes v 280813Presentacion michael porter   participantes v 280813
Presentacion michael porter participantes v 280813PTF
 
IET_Estimating_market_share_through_mobile_traffic_analysis linkedin
IET_Estimating_market_share_through_mobile_traffic_analysis linkedinIET_Estimating_market_share_through_mobile_traffic_analysis linkedin
IET_Estimating_market_share_through_mobile_traffic_analysis linkedinAsoka Korale
 

Viewers also liked (15)

Modelos de gestion conferencia paraguay converti. final final
Modelos de gestion conferencia paraguay converti.  final finalModelos de gestion conferencia paraguay converti.  final final
Modelos de gestion conferencia paraguay converti. final final
 
TRS Ariel baños modulo 3
TRS Ariel baños modulo 3TRS Ariel baños modulo 3
TRS Ariel baños modulo 3
 
Insights on the changes operated in forest value-chain management in South Am...
Insights on the changes operated in forest value-chain management in South Am...Insights on the changes operated in forest value-chain management in South Am...
Insights on the changes operated in forest value-chain management in South Am...
 
3Com 3C13716
3Com 3C137163Com 3C13716
3Com 3C13716
 
Losich tatsiana
Losich tatsianaLosich tatsiana
Losich tatsiana
 
CONCEPTOS DE SISTEMAS
CONCEPTOS DE SISTEMASCONCEPTOS DE SISTEMAS
CONCEPTOS DE SISTEMAS
 
Tiempos modernos
Tiempos modernosTiempos modernos
Tiempos modernos
 
Control de lectura n°3 informatica en la medicina nuclear thalia fernández bu...
Control de lectura n°3 informatica en la medicina nuclear thalia fernández bu...Control de lectura n°3 informatica en la medicina nuclear thalia fernández bu...
Control de lectura n°3 informatica en la medicina nuclear thalia fernández bu...
 
2013 planeamiento estratégico inmobiliario v7
2013   planeamiento estratégico inmobiliario v72013   planeamiento estratégico inmobiliario v7
2013 planeamiento estratégico inmobiliario v7
 
Practica # 20 intoxicación por acido clorhídrico
Practica # 20 intoxicación por acido clorhídricoPractica # 20 intoxicación por acido clorhídrico
Practica # 20 intoxicación por acido clorhídrico
 
Presentacion asuncion - Jorge Zanoletty
Presentacion asuncion - Jorge ZanolettyPresentacion asuncion - Jorge Zanoletty
Presentacion asuncion - Jorge Zanoletty
 
Taller paraguay pma
Taller paraguay pmaTaller paraguay pma
Taller paraguay pma
 
PGI 2015
PGI 2015PGI 2015
PGI 2015
 
Presentacion michael porter participantes v 280813
Presentacion michael porter   participantes v 280813Presentacion michael porter   participantes v 280813
Presentacion michael porter participantes v 280813
 
IET_Estimating_market_share_through_mobile_traffic_analysis linkedin
IET_Estimating_market_share_through_mobile_traffic_analysis linkedinIET_Estimating_market_share_through_mobile_traffic_analysis linkedin
IET_Estimating_market_share_through_mobile_traffic_analysis linkedin
 

Similar to TWYP - An event driven architecture in a fast growing ecosystem

Moving To MicroServices
Moving To MicroServicesMoving To MicroServices
Moving To MicroServicesDavid Walker
 
Data Management & Warehousing (David Walker, ex-World Pay) 2019 Confluent Str...
Data Management & Warehousing (David Walker, ex-World Pay) 2019 Confluent Str...Data Management & Warehousing (David Walker, ex-World Pay) 2019 Confluent Str...
Data Management & Warehousing (David Walker, ex-World Pay) 2019 Confluent Str...confluent
 
Opportunities and Pitfalls of Event-Driven Utopia
Opportunities and Pitfalls of Event-Driven UtopiaOpportunities and Pitfalls of Event-Driven Utopia
Opportunities and Pitfalls of Event-Driven UtopiaC4Media
 
TripleLift: Preparing for a New Programmatic Ad-Tech World
TripleLift: Preparing for a New Programmatic Ad-Tech WorldTripleLift: Preparing for a New Programmatic Ad-Tech World
TripleLift: Preparing for a New Programmatic Ad-Tech WorldVoltDB
 
Complex Event Processing
Complex Event ProcessingComplex Event Processing
Complex Event ProcessingJohn Plummer
 
Scaling Your Architecture with Services and Events
Scaling Your Architecture with Services and EventsScaling Your Architecture with Services and Events
Scaling Your Architecture with Services and EventsRandy Shoup
 
The Future of Streaming: Global Apps, Event Stores and Serverless
The Future of Streaming: Global Apps, Event Stores and ServerlessThe Future of Streaming: Global Apps, Event Stores and Serverless
The Future of Streaming: Global Apps, Event Stores and ServerlessBen Stopford
 
The Significant role of event driven apps in software development
The Significant role of event driven apps in software development					The Significant role of event driven apps in software development
The Significant role of event driven apps in software development Shelly Megan
 
Effective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldEffective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldRandy Shoup
 
FDSeminar Reporting & controlling
FDSeminar Reporting & controllingFDSeminar Reporting & controlling
FDSeminar Reporting & controllingFDMagazine
 
Managing Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and EventsManaging Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and EventsRandy Shoup
 
Analytics in Your Enterprise
Analytics in Your EnterpriseAnalytics in Your Enterprise
Analytics in Your EnterpriseWSO2
 
EVAM_Streaming Analytics_v1.5
EVAM_Streaming Analytics_v1.5EVAM_Streaming Analytics_v1.5
EVAM_Streaming Analytics_v1.5John Nikolaidis
 
2016 DSG Webinar Azure HDInsight 2 V4
2016 DSG Webinar Azure HDInsight 2 V42016 DSG Webinar Azure HDInsight 2 V4
2016 DSG Webinar Azure HDInsight 2 V4Janani Eshwaran
 
2016 DSG Webinar Azure HDInsight 2 V4
2016 DSG Webinar Azure HDInsight 2 V42016 DSG Webinar Azure HDInsight 2 V4
2016 DSG Webinar Azure HDInsight 2 V4Janani Eshwaran
 
Understanding “Event” in Event Data
Understanding “Event” in Event DataUnderstanding “Event” in Event Data
Understanding “Event” in Event DataNicole O'Malley
 
Detecting Opportunities and Threats with Complex Event Processing: Case St...
Detecting Opportunities and Threats with Complex Event Processing: Case St...Detecting Opportunities and Threats with Complex Event Processing: Case St...
Detecting Opportunities and Threats with Complex Event Processing: Case St...Tim Bass
 
Deliver agile flow presentation (1)
Deliver agile   flow presentation (1)Deliver agile   flow presentation (1)
Deliver agile flow presentation (1)James Urquhart
 
Making the Most of Customer Data
Making the Most of Customer DataMaking the Most of Customer Data
Making the Most of Customer DataWSO2
 

Similar to TWYP - An event driven architecture in a fast growing ecosystem (20)

Moving To MicroServices
Moving To MicroServicesMoving To MicroServices
Moving To MicroServices
 
Data Management & Warehousing (David Walker, ex-World Pay) 2019 Confluent Str...
Data Management & Warehousing (David Walker, ex-World Pay) 2019 Confluent Str...Data Management & Warehousing (David Walker, ex-World Pay) 2019 Confluent Str...
Data Management & Warehousing (David Walker, ex-World Pay) 2019 Confluent Str...
 
Opportunities and Pitfalls of Event-Driven Utopia
Opportunities and Pitfalls of Event-Driven UtopiaOpportunities and Pitfalls of Event-Driven Utopia
Opportunities and Pitfalls of Event-Driven Utopia
 
Async
AsyncAsync
Async
 
TripleLift: Preparing for a New Programmatic Ad-Tech World
TripleLift: Preparing for a New Programmatic Ad-Tech WorldTripleLift: Preparing for a New Programmatic Ad-Tech World
TripleLift: Preparing for a New Programmatic Ad-Tech World
 
Complex Event Processing
Complex Event ProcessingComplex Event Processing
Complex Event Processing
 
Scaling Your Architecture with Services and Events
Scaling Your Architecture with Services and EventsScaling Your Architecture with Services and Events
Scaling Your Architecture with Services and Events
 
The Future of Streaming: Global Apps, Event Stores and Serverless
The Future of Streaming: Global Apps, Event Stores and ServerlessThe Future of Streaming: Global Apps, Event Stores and Serverless
The Future of Streaming: Global Apps, Event Stores and Serverless
 
The Significant role of event driven apps in software development
The Significant role of event driven apps in software development					The Significant role of event driven apps in software development
The Significant role of event driven apps in software development
 
Effective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldEffective Microservices In a Data-centric World
Effective Microservices In a Data-centric World
 
FDSeminar Reporting & controlling
FDSeminar Reporting & controllingFDSeminar Reporting & controlling
FDSeminar Reporting & controlling
 
Managing Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and EventsManaging Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and Events
 
Analytics in Your Enterprise
Analytics in Your EnterpriseAnalytics in Your Enterprise
Analytics in Your Enterprise
 
EVAM_Streaming Analytics_v1.5
EVAM_Streaming Analytics_v1.5EVAM_Streaming Analytics_v1.5
EVAM_Streaming Analytics_v1.5
 
2016 DSG Webinar Azure HDInsight 2 V4
2016 DSG Webinar Azure HDInsight 2 V42016 DSG Webinar Azure HDInsight 2 V4
2016 DSG Webinar Azure HDInsight 2 V4
 
2016 DSG Webinar Azure HDInsight 2 V4
2016 DSG Webinar Azure HDInsight 2 V42016 DSG Webinar Azure HDInsight 2 V4
2016 DSG Webinar Azure HDInsight 2 V4
 
Understanding “Event” in Event Data
Understanding “Event” in Event DataUnderstanding “Event” in Event Data
Understanding “Event” in Event Data
 
Detecting Opportunities and Threats with Complex Event Processing: Case St...
Detecting Opportunities and Threats with Complex Event Processing: Case St...Detecting Opportunities and Threats with Complex Event Processing: Case St...
Detecting Opportunities and Threats with Complex Event Processing: Case St...
 
Deliver agile flow presentation (1)
Deliver agile   flow presentation (1)Deliver agile   flow presentation (1)
Deliver agile flow presentation (1)
 
Making the Most of Customer Data
Making the Most of Customer DataMaking the Most of Customer Data
Making the Most of Customer Data
 

Recently uploaded

How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profileakrivarotava
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 

Recently uploaded (20)

How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profile
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 

TWYP - An event driven architecture in a fast growing ecosystem

  • 1. An event-driven architecture in a fast growing ecosystem November 18th 2016 Sander de Groot Sander.deGroot@infosupport.com
  • 2. • “The Way You Pay” • Event driven architecture at Twyp • Common pitfalls and best practices • Looking back at our decision • Questions The next 30 minutes…
  • 4.
  • 5. • Transfer money from your mobile phone directly to another mobile phone • Near real-time pan-European money transfers • No need to be ING customer • Super simple onboarding Twyp: a social instant payments platform
  • 7. How does it look?
  • 8. Some facts Countries Netherlands, Spain Users ~ 400.000 Top load 2.000 transactions per second Running services ~ 50 unique services Event catalog ~ 75 unique event types Average daily event processing ~ 420.000
  • 9. Twyp is not just building an app, we are building a mini-bank. • A custom business intelligence solution • A management portal for customer support and operations • Fraud detection / prevention • System monitoring solutions And we have to operate it of course. Twyp is a mini-bank on its own
  • 10. Next up: how is Twyp powered by events?
  • 11. Build a new highly available, resilient and responsive platform that can be scaled on both technical and operational level Assignment for Twyp team
  • 13. Simple question, the answer is: it’s complicated. However: • Fits well with our micro services based approach • It’s a great decoupling mechanism • Forces engineers to think about what they’re doing • Helps with scaling due to it’s asynchronous nature Why are we applying an Event Driven Architecture?
  • 15. • One queue per service type • All instances listen to the same queue • Routing keys for distribution Queues and subscriptions
  • 16. Event-driven all the way to the frontend
  • 17. Event-driven all the way to the frontend
  • 19. Time for our top 7 best practices!
  • 20. <noun><verb in past tense> Why? An event describes a ’real-life’ fact that happened in the past. You can’t change the past. - Someone, some time in the past (1) Event naming convention
  • 21. RegisterUser Is this a good name for an event?
  • 22. UserProcessing Is this a good name for an event?
  • 23. PhoneNumberInvited Is this a good name for an event?
  • 24. UserAdded Is this a good name for an event?
  • 25. It is not only about the name. • Any event should only be owned by one service. • Events can only be sent by that service • The data in the event is owned by the same service (2) Owner of events
  • 26. • Expose which events you consume • Expose which events you are sending • Expose the commands you can handle (3) Dependencies and impact mapping
  • 27. Example report about dependencies between services
  • 28. Example report on event graph
  • 29. There’s a few things you have to take into account with message brokers • Delivery guarantees • Idempotence • Scalability & resillience (4) Message delivery aspects
  • 30. Headers • Unique ID • CorrelationId for tracing flows • Source (name of the service) • Date occurred • Authorization Body • Include only the data that is business wise part of the event. Do not put data in events because other services want to have it. For example: adding the users phone number to the PaymentInitiated event is a bad idea (5) Contents of events
  • 31. • Well known solution • In case when services can’t process messages (6) Dead Letter Queue
  • 32. (7) Archiving and replaying Archiving your events is of outmost importance. because You can reconstruct your state based on your events
  • 33. (8) Archiving and replaying Event 1 UserRegistered[10, Sander, 0] ID Name Balance 10 Sander 0
  • 34. (8) Archiving and replaying Event 1 UserRegistered[10, Sander, 0] 2 UserToppedUp[10, 100] ID Name Balance 10 Sander 100
  • 35. (8) Archiving and replaying ID Name Balance 10 Sander 100 11 Richard 0 Event 1 UserRegistered[10, Sander, 0] 2 UserToppedUp[10, 100] 3 UserRegistered[11, Richard, 0]
  • 36. (8) Archiving and replaying EventId Event 1 UserRegistered[10, Sander, 0] 2 UserToppedUp[10, 100] 3 UserRegistered[11, Richard, 0] 4 PaymentTransferred[4, Sander, Richard, 10] ID Name Balance 10 Sander 90 11 Richard 10
  • 38. Event store and event replayer
  • 39. So what is the impact of Event Driven Architecture for Twyp?
  • 40. - Services can be run separately - Developers are forced to think about their solution - Business understands events - No long running API calls because of the async nature of events - Scalable solution Pro’s
  • 41. • Requires design up front (especially if you introduce event sourcing) • More complicated frontend • Requires a completely different way of thinking • Requires some sort of task-based-ui. You have to rethink many things Con’s
  • 42. Thank you for your attention! QuestionTimeStartedEvent
  • 43. Building a new p2p payments platform at ING43 LAC, November 18th 2016 Sander de Groot Sander.deGroot@infosupport.co m

Editor's Notes

  1. We have spend two years working on our systems. I usually take more than an hour to do an introduction Now I have to do it in 25 minutes Please keep your questions until the end as there’s not much time. Afterwards I will be available A I only have 30 minutes I have set-up this presentation to quickly go over the best practices. If you have any questions I urge you to keep them until the end of the presentation. For the ones with not a lot of experience in this field it may go a bit fast. In the announcement you could have read that I’ll go into the BI solution, unfortunately I realized only after submitting the CFP that the sessions are only 30 minutes here.
  2. Please note that this is what we have experienced. It is in no way the only or best way to go. If you go with event driven architectures always tailor it to your situation!
  3. Please note that this is what we have experienced. It is in no way the only or best way to go. If you go with event driven architectures always tailor it to your situation! Also keep in mind that it has some overhead. I do not recommend to use it in all situations
  4. The ECB announced that they are going to introduce some kind of alias functionality for your phone number just yesterday. Although our solution is a bit different we already provide the same sort of functionality
  5. Things like Primary use case is for easy payments, especially in group engagement, making payments easier to your friends Party with friends, you don’t know everyone but do have their phone numbers
  6. These are some screens from the Twyp app. As you can see it really is a separate brand and it takes a compeletely different approach from other ING apps
  7. I can’t discuss the actual numbers but these are some stats I can share
  8. The ECB announced that they are going to introduce some kind of alias functionality for your phone number just yesterday. Although our solution is a bit different we already provide the same sort of functionality Multiple countries
  9. When we started the project we were more or less given the assignment to … So we presorted and started with a web scale architetucture Technical = scaling technically Operational = being able to quickly create new features, a/b testing, new team members
  10. We based our application (including frontend) on the reactive manifesto. For those we do not know the reactive manifesto describes what reactive systems are and how they should be build Also see http://www.reactivemanifesto.org/ Today we will focus on the message driven part.
  11. It allows us to easily scale (both technical and organizational) It gives us a great way to decouple services It allows us to talk in business operations (as events are facts that happened) When you get to know it, you’ll notice it’s a quite natural way of thinking about things It allows us to easily extend our system
  12. Services do not directly talk to each other, they use events to inform the world (not ncessarily each other) about things that happened. Email lijsten
  13. Moeilijk te lezen
  14. It allows us to easily scale (both technical and organizational) It gives us a great way to decouple services It allows us to talk in business operations (as events are facts that happened) When you get to know it, you’ll notice it’s a quite natural way of thinking about things It allows us to easily extend our system
  15. A gross over simplification of the actual situation..
  16. Put an image of the general architecture here (communications) Every service has it’s own database with it’s own data! Very important Split this into multiple slides
  17. We’ve learned many best practises along the way in order to suppor tthis event driven architecture.
  18. I could ask the public some of them
  19. I could ask the public some of them
  20. I could ask the public some of them
  21. Yes, this name adheres to the rule. However we try not to be a CRUD application, try to use useful names.
  22. Afkortingen
  23. One of the most important things in architectures is how can you determine the impact. This is especially true with event driven architectures where you’re working with micro services.
  24. One of the most important things in architectures is how can you determine the impact. This is especially true with event driven architectures where you’re working with micro services.
  25. One of the most important things in architectures is how can you determine the impact. This is especially true with event driven architectures where you’re working with micro services.
  26. Working with AMQP requires a well thought through solution. Think CAP theorm, two-phase commit, acknowledgements, publisher confirms
  27. Why? Always useful! To discuss Event store Event replayer Event sourcing Veel informatie.
  28. Why? Always useful! To discuss Event store Event replayer Event sourcing
  29. Why? Always useful! To discuss Event store Event replayer Event sourcing
  30. Why? Always useful! To discuss Event store Event replayer Event sourcing
  31. Why? Always useful! To discuss Event store Event replayer Event sourcing
  32. Why? Always useful! To discuss Event store Event replayer Event sourcing Veel informatie
  33. Why? Always useful! To discuss Event store Event replayer Event sourcing Veel informatie
  34. We’ve learned many best practises along the way in order to suppor tthis event driven architecture.
  35. Foutmeldingen eindgebruiker
  36. We’ve learned many best practises along the way in order to suppor tthis event driven architecture.