SlideShare uma empresa Scribd logo
1 de 33
Daniel Bustamante
daniel.bustamante@sofka.com.co
Microservicios
reactivos con
Reactive Commons
Reactive Manifesto
Sistema Reactivo ~= Programación Reactiva
¿Sistemas reactivos?
● Debe reaccionar adecuadamente a sus usuarios (Responsivos)
● Debe reaccionar a las condiciones de carga variables (Elástico)
● Debe reaccionar adecuadamente a los fallos para mantenerse
disponible (Resiliente).
● Usan comunicación asíncrona dirigida por mensajes.
¿No deben cumplir todos los sistemas con estas
características?
¿Programación Reactiva?
● Enfoque de programación que modela el sistema como un conjunto
de flujos de datos asíncronos.
● Abstracciones basadas ampliamente en la programación funcional.
○ Funciones de orden superior
■ Functores (..map)
■ Monads (..flatMap)
○ Composición funcional
○ Evaluación perezosa (Lazy)
● Optimización en la utilización de recursos
● Hace simple lo que de otra forma sería bastante complejo
● Escalabilidad
Sistemas Reactivos
+
Programación Reactiva
Garantizando un flujo reactivo de principio a fin
By Neil J. Gunther
One Thread per Request
One Event Loop, Non-Blocking IO
Impacto del modelo de concurrencia en la
escalabilidad
https://www.vividcortex.com/blog/2013/12/09/analysis-of-paypals-node-vs-java-benchmarks/
Blocking Multi-Threading vs NonBlocking IO
Comunicación Asíncrona + Modelado de eventos de
Dominio y Comandos + Programación Reactiva
https://github.com/reactive-
commons/reactive-commons-java
Reactive Commons
El propósito de Reactive Commons es proporcionar un conjunto
de abstracciones e implementaciones de diversos patrones y
prácticas que apoyen la base para una arquitectura de
microservicios reactivos.
Project Architecture
Communication Patterns in
Reactive Commons
Event Notification
-
Domain Event
Code
Direct Message
-
Commad
Code
Async Request / Response
-
Query
Code
Limited and Small API
The Request-Response Pattern
Blocking Non Blocking
latency(Task) = A + B + C
latency(Task) = max(A, B, C)
Pattern Implementation: Reactive Request-Reply
Pattern Attributes
● Transparencia en la localización
● Resiliente
● Escalable (Balanceo de carga y escalabilidad horizontal)
● No bloqueante
● Trazable
Gracias

Mais conteúdo relacionado

Mais procurados

[Webinar]: Working with Reactive Spring
[Webinar]: Working with Reactive Spring[Webinar]: Working with Reactive Spring
[Webinar]: Working with Reactive SpringKnoldus Inc.
 
Let's make a contract: the art of designing a Java API
Let's make a contract: the art of designing a Java APILet's make a contract: the art of designing a Java API
Let's make a contract: the art of designing a Java APIMario Fusco
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJavaParadigma Digital
 
Remote Method Invocation
Remote Method InvocationRemote Method Invocation
Remote Method Invocationashishspace
 
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesThreading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesLauren Yew
 
Migration from AngularJS to Angular
Migration from AngularJS to AngularMigration from AngularJS to Angular
Migration from AngularJS to AngularAleks Zinevych
 
SOLID Design Principles applied in Java
SOLID Design Principles applied in JavaSOLID Design Principles applied in Java
SOLID Design Principles applied in JavaIonut Bilica
 
The Reactive Manifesto
The Reactive ManifestoThe Reactive Manifesto
The Reactive ManifestoReza Samei
 
SwiftUI and Combine All the Things
SwiftUI and Combine All the ThingsSwiftUI and Combine All the Things
SwiftUI and Combine All the ThingsScott Gardner
 
Angular & RXJS: examples and use cases
Angular & RXJS: examples and use casesAngular & RXJS: examples and use cases
Angular & RXJS: examples and use casesFabio Biondi
 
Java design patterns
Java design patternsJava design patterns
Java design patternsShawn Brito
 
Strategy Pattern
Strategy PatternStrategy Pattern
Strategy PatternGuo Albert
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.David Gómez García
 
Workshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux AdvancedWorkshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux AdvancedVisual Engineering
 
Spring cloud for microservices architecture
Spring cloud for microservices architectureSpring cloud for microservices architecture
Spring cloud for microservices architectureIgor Khotin
 
Kotlin for Android Development
Kotlin for Android DevelopmentKotlin for Android Development
Kotlin for Android DevelopmentSpeck&Tech
 

Mais procurados (20)

[Webinar]: Working with Reactive Spring
[Webinar]: Working with Reactive Spring[Webinar]: Working with Reactive Spring
[Webinar]: Working with Reactive Spring
 
Solid principles
Solid principlesSolid principles
Solid principles
 
Let's make a contract: the art of designing a Java API
Let's make a contract: the art of designing a Java APILet's make a contract: the art of designing a Java API
Let's make a contract: the art of designing a Java API
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJava
 
Remote Method Invocation
Remote Method InvocationRemote Method Invocation
Remote Method Invocation
 
BDD from QA side
BDD from QA sideBDD from QA side
BDD from QA side
 
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesThreading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
 
Migration from AngularJS to Angular
Migration from AngularJS to AngularMigration from AngularJS to Angular
Migration from AngularJS to Angular
 
SOLID Design Principles applied in Java
SOLID Design Principles applied in JavaSOLID Design Principles applied in Java
SOLID Design Principles applied in Java
 
The Reactive Manifesto
The Reactive ManifestoThe Reactive Manifesto
The Reactive Manifesto
 
Complete Java Course
Complete Java CourseComplete Java Course
Complete Java Course
 
SwiftUI and Combine All the Things
SwiftUI and Combine All the ThingsSwiftUI and Combine All the Things
SwiftUI and Combine All the Things
 
Angular & RXJS: examples and use cases
Angular & RXJS: examples and use casesAngular & RXJS: examples and use cases
Angular & RXJS: examples and use cases
 
Java design patterns
Java design patternsJava design patterns
Java design patterns
 
Strategy Pattern
Strategy PatternStrategy Pattern
Strategy Pattern
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
 
Workshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux AdvancedWorkshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux Advanced
 
Spring cloud for microservices architecture
Spring cloud for microservices architectureSpring cloud for microservices architecture
Spring cloud for microservices architecture
 
Core java course syllabus
Core java course syllabusCore java course syllabus
Core java course syllabus
 
Kotlin for Android Development
Kotlin for Android DevelopmentKotlin for Android Development
Kotlin for Android Development
 

Semelhante a Reactive commons Slides

Object Oriented Programming vs Functional Programming - Valencia.rb
Object Oriented Programming vs Functional Programming - Valencia.rbObject Oriented Programming vs Functional Programming - Valencia.rb
Object Oriented Programming vs Functional Programming - Valencia.rbDaniel Pecos Martínez
 
Aplicaciones móviles multiplataforma con React Native y Redux
Aplicaciones móviles multiplataforma con React Native y ReduxAplicaciones móviles multiplataforma con React Native y Redux
Aplicaciones móviles multiplataforma con React Native y ReduxQuito Lambda
 
Alta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLAlta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLCarlos Gustavo Ruiz
 
03 C Modelacion matematica.pptx
03 C Modelacion matematica.pptx03 C Modelacion matematica.pptx
03 C Modelacion matematica.pptxlettizambrano
 
Mobility and security
Mobility and  securityMobility and  security
Mobility and securityJorge Soro
 
estructuras repetitivas for, while y funcionamiento de las herramientas case
estructuras repetitivas for, while y funcionamiento de las herramientas case estructuras repetitivas for, while y funcionamiento de las herramientas case
estructuras repetitivas for, while y funcionamiento de las herramientas case mariclau1998
 
estructuras repetitivas for, while y funcionamiento de las herramientas case
estructuras repetitivas for, while y funcionamiento de las herramientas case estructuras repetitivas for, while y funcionamiento de las herramientas case
estructuras repetitivas for, while y funcionamiento de las herramientas case mariclau1998
 
Programacion modular
Programacion modularProgramacion modular
Programacion modularCarmen Silva
 
React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?Adrian Diaz Cervera
 
Sistemas distribuidos 2
Sistemas distribuidos 2Sistemas distribuidos 2
Sistemas distribuidos 2Tensor
 
Sistemas distibuidos
Sistemas distibuidosSistemas distibuidos
Sistemas distibuidosTensor
 
Sistemas distribuidos 2
Sistemas distribuidos 2Sistemas distribuidos 2
Sistemas distribuidos 2Tensor
 
Programa analítico MAT103, ALGEBRA LINEAL
Programa analítico MAT103, ALGEBRA LINEALPrograma analítico MAT103, ALGEBRA LINEAL
Programa analítico MAT103, ALGEBRA LINEALValentin Guzman
 

Semelhante a Reactive commons Slides (20)

Presentación react con redux SLUD 2017
Presentación react con redux SLUD 2017Presentación react con redux SLUD 2017
Presentación react con redux SLUD 2017
 
Solid Principles
Solid PrinciplesSolid Principles
Solid Principles
 
Object Oriented Programming vs Functional Programming - Valencia.rb
Object Oriented Programming vs Functional Programming - Valencia.rbObject Oriented Programming vs Functional Programming - Valencia.rb
Object Oriented Programming vs Functional Programming - Valencia.rb
 
Aplicaciones móviles multiplataforma con React Native y Redux
Aplicaciones móviles multiplataforma con React Native y ReduxAplicaciones móviles multiplataforma con React Native y Redux
Aplicaciones móviles multiplataforma con React Native y Redux
 
Reacciona!
Reacciona!Reacciona!
Reacciona!
 
Trabajoartemio
TrabajoartemioTrabajoartemio
Trabajoartemio
 
Alta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLAlta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQL
 
Modelamiento openc 2015
Modelamiento openc 2015Modelamiento openc 2015
Modelamiento openc 2015
 
Modelamiento openc 2015
Modelamiento openc 2015Modelamiento openc 2015
Modelamiento openc 2015
 
03 C Modelacion matematica.pptx
03 C Modelacion matematica.pptx03 C Modelacion matematica.pptx
03 C Modelacion matematica.pptx
 
Mobility and security
Mobility and  securityMobility and  security
Mobility and security
 
estructuras repetitivas for, while y funcionamiento de las herramientas case
estructuras repetitivas for, while y funcionamiento de las herramientas case estructuras repetitivas for, while y funcionamiento de las herramientas case
estructuras repetitivas for, while y funcionamiento de las herramientas case
 
estructuras repetitivas for, while y funcionamiento de las herramientas case
estructuras repetitivas for, while y funcionamiento de las herramientas case estructuras repetitivas for, while y funcionamiento de las herramientas case
estructuras repetitivas for, while y funcionamiento de las herramientas case
 
Programacion modular
Programacion modularProgramacion modular
Programacion modular
 
React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?
 
Sistemas distribuidos 2
Sistemas distribuidos 2Sistemas distribuidos 2
Sistemas distribuidos 2
 
Sistemas distibuidos
Sistemas distibuidosSistemas distibuidos
Sistemas distibuidos
 
Sistemas distribuidos 2
Sistemas distribuidos 2Sistemas distribuidos 2
Sistemas distribuidos 2
 
Programa analítico MAT103, ALGEBRA LINEAL
Programa analítico MAT103, ALGEBRA LINEALPrograma analítico MAT103, ALGEBRA LINEAL
Programa analítico MAT103, ALGEBRA LINEAL
 
Optimizacion en IMRT
Optimizacion en IMRTOptimizacion en IMRT
Optimizacion en IMRT
 

Último

Trabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaTrabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaKANTUPAULAPORCELYUCR
 
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSBeatrizGonzales19
 
Caso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralCaso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralAitana
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptxEncomiendasElSherpa
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfGuillermoBarquero7
 

Último (6)

Trabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaTrabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - Ofimática
 
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
 
Caso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralCaso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business Central
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdf
 

Reactive commons Slides