Arquitectura de servicios distribuidos, trade-off, implementacion, experiencias y utilizacion de RabbitMQ como Message Broker entre servicios, beneficios de RabbitMQ. Experiencias con AWS Amazon Web Services.
RabbitMQ is an open source message-broker software that originally implemented the Advanced Message Queuing Protocol (AMQP).it accepts and forwards messages.
Microservicios es una aproximacion de desarrollo en pequeños servicios, independientes uno del otro, que pueden ejecutarse en procesos aislados y que se comunican mediante un mecanismo ligero basado en api http
The Emerging Integration Reference Architecture | MuleSoftMuleSoft
The way we build applications is changing. As the development model shifts from writing lots of code to composing APIs together, a new generation of middle tier application architecture is being born. What does this mean for you? Ross Mason, MuleSoft's Founder and CTO, will provide his perspective on the future of this growing movement.
RabbitMQ is an open source message-broker software that originally implemented the Advanced Message Queuing Protocol (AMQP).it accepts and forwards messages.
Microservicios es una aproximacion de desarrollo en pequeños servicios, independientes uno del otro, que pueden ejecutarse en procesos aislados y que se comunican mediante un mecanismo ligero basado en api http
The Emerging Integration Reference Architecture | MuleSoftMuleSoft
The way we build applications is changing. As the development model shifts from writing lots of code to composing APIs together, a new generation of middle tier application architecture is being born. What does this mean for you? Ross Mason, MuleSoft's Founder and CTO, will provide his perspective on the future of this growing movement.
This presentation about DevOps will help you understand what is DevOps, how is DevOps different from traditional IT, benefits of DevOps, the lifecycle of DevOps and tools used in DevOps processes. DevOps is one of the most trending IT jobs. It is a collaboration between development and operation teams which enables continuous delivery of applications and services to our end users. However, if you want to become a DevOps engineer, you must have knowledge of various DevOps tools (like Git, Maven, Selenium, Jenkins, Docker, Ansible, Nagios etc.) to achieve automation at each stage which helps in gaining Continuous Development, Continuous Integration, Continuous Testing and Continuous Monitoring in order to deliver a quality product to the client at a very fast pace. Now, let us get started and understand DevOps and does the various DevOps tools work.
Below are the topics explained in this DevOps presentation:
1. What is DevOps?
2. Benefits of DevOps
3. Lifecycle of DevOps
4. Tools in DevOps
Why learn DevOps?
Simplilearn’s DevOps training course is designed to help you become a DevOps practitioner and apply the latest in DevOps methodology to automate your software development lifecycle right out of the class. You will master configuration management; continuous integration deployment, delivery, and monitoring using DevOps tools such as Git, Docker, Jenkins, Puppet, and Nagios in a practical, hands-on and interactive approach. The DevOps training course focuses heavily on the use of Docker containers, a technology that is revolutionizing the way apps are deployed in the cloud today and is a critical skillset to master in the cloud age.
After completing the DevOps training course you will achieve hands-on expertise in various aspects of the DevOps delivery model. The practical learning outcomes of this Devops training course are:
An understanding of DevOps and the modern DevOps toolsets
The ability to automate all aspects of a modern code delivery and deployment pipeline using:
1. Source code management tools
2. Build tools
3. Test automation tools
4. Containerization through Docker
5. Configuration management tools
6. Monitoring tools
Who should take this course?
DevOps career opportunities are thriving worldwide. DevOps was featured as one of the 11 best jobs in America for 2017, according to CBS News, and data from Payscale.com shows that DevOps Managers earn as much as $122,234 per year, with DevOps engineers making as much as $151,461. DevOps jobs are the third-highest tech role ranked by employer demand on Indeed.com but have the second-highest talent deficit.
1. This DevOps training course will be of benefit the following professional roles:
2. Software Developers
3. Technical Project Managers
4. Architects
5. Operations Support
6. Deployment engineers
7. IT managers
8. Development managers
Learn more at https://www.simplilearn.com/cloud-computing/devops-practitioner-certification-training
SCS 4120 - Software Engineering IV
BACHELOR OF SCIENCE HONOURS IN COMPUTER SCIENCE
BACHELOR OF SCIENCE HONOURS IN SOFTWARE ENGINEERING
All in One Place Lecture Notes
Distribution Among Friends Only
All copyrights belong to their respective owners
Viraj Brian Wijesuriya
vbw@ucsc.cmb.ac.lk
I Love APIs 2015
Chris Munns, Amazon
@chrismunns
http://www.amazon.com/
As computing costs decreased and computing power grew over time, so increased the complexity of the problems computers were called to solve and complexity of software. Enterprise applications quickly went through the stage of monolithic applications to client-server to multiple tier and beyond – to the land of massively distributed architectures. We arrived at the point where enterprise software is well beyond the capability of a single person or even a reasonably practical group of people to understand and control. Are microsevices the answer? Join Chris Munns to learn about how microservices are scaled at Amazon.
PPT concetrates on :
1. Introduction to RabbitMQ .
2. Difference between AMQP and JMS
3. Different types of exchanges
4. Routing Key and Binding concept
Comparing Service-Oriented Architecture (SOA), Microservices and Service-Based Architecture (SBA - SOA and Microservices Hybrid) patterns.
Also discussing coupling and cohesion concepts in relation to the systems design.
Redis and Kafka - Simplifying Advanced Design Patterns within Microservices A...HostedbyConfluent
The adoption and popularity of the microservices architecture continues to grow across a spectrum of enterprises in every industry. Although a consensus on an implementation standard has yet to be reached, advanced design patterns and lessons learned about the complexities and pitfalls of deploying microservices at scale have been established by thought leaders and the development community. With Redis and Kafka becoming de facto standards across most microservices architectures, we will discuss how their combination can be used to simplify the implementation of event-driven design patterns that will provide real-time performance, scalability, resiliency, traceability to ensure compliance, observability, reduced technology sprawl, and scale to thousands of services. In this discussion, we will decompose a real-time event-driven payment-processing microservices workflow to explore capturing telemetry data, event sourcing, CQRS, orchestrated SAGA workflows, inter-service communication, state machines, and more.
Best practices in deploying IBM Operation Decision Manager Standard 8.8.0Pierre Feillet
This session was presented at Interconnect 2016 in session bdm-4361. It covers ODM 8.8.0 version. This deck explains the basics of ODM architecture and guides deployment for DevOps.
In this presentation, I will explain event driven architecture, describe the different types of events, demonstrate how events can be related and orchestrated, and provide a basic understanding of how this method can drive the architecture of enterprise systems. In addition to understanding the concepts of event driven architecture, we will explore a working sample built using an open-source .NET messaging framework called MassTransit.
MuleSoft Anypoint Platform and Three Tier ArchitectureHarish Kumar
Every business need to integrate the above three actors and their engagement to systems for the best possible outcome. How to do it and Best way to do it , An Introduction
Introduction to Microservices Patterns. In these slides we explore microservices vs monolith apis. We try to identify the challenges of moving to microservices ecosystem and try to analyze possible solutions for data consistency, inter-communication, event driven and distributed transactions.
SpringOne Platform 2017
Ryan Baxter, Pivotal
You have heard and seen great things about Spring Cloud and you decide it is time to dive in and try it out yourself. You fire up your browser head to Google and land on the Spring Cloud homepage. Then it hits you, where do you begin? What do each of these projects do? Do you need to use all of them or can you be selective? The number of projects under the Spring Cloud umbrella has grown immensely over the past couple of years and if you are a newcomer to the Spring Cloud ecosystem it can be quite daunting to sift through the projects to find what you need. By the end of this talk you will leave with a solid understanding of the Spring Cloud projects, how to use them to build cloud native apps, and the confidence to get started!
This is a small introduction to microservices. you can find the differences between microservices and monolithic applications. You will find the pros and cons of microservices. you will also find the challenges (Business/ technical) that you may face while implementing microservices.
This presentation about DevOps will help you understand what is DevOps, how is DevOps different from traditional IT, benefits of DevOps, the lifecycle of DevOps and tools used in DevOps processes. DevOps is one of the most trending IT jobs. It is a collaboration between development and operation teams which enables continuous delivery of applications and services to our end users. However, if you want to become a DevOps engineer, you must have knowledge of various DevOps tools (like Git, Maven, Selenium, Jenkins, Docker, Ansible, Nagios etc.) to achieve automation at each stage which helps in gaining Continuous Development, Continuous Integration, Continuous Testing and Continuous Monitoring in order to deliver a quality product to the client at a very fast pace. Now, let us get started and understand DevOps and does the various DevOps tools work.
Below are the topics explained in this DevOps presentation:
1. What is DevOps?
2. Benefits of DevOps
3. Lifecycle of DevOps
4. Tools in DevOps
Why learn DevOps?
Simplilearn’s DevOps training course is designed to help you become a DevOps practitioner and apply the latest in DevOps methodology to automate your software development lifecycle right out of the class. You will master configuration management; continuous integration deployment, delivery, and monitoring using DevOps tools such as Git, Docker, Jenkins, Puppet, and Nagios in a practical, hands-on and interactive approach. The DevOps training course focuses heavily on the use of Docker containers, a technology that is revolutionizing the way apps are deployed in the cloud today and is a critical skillset to master in the cloud age.
After completing the DevOps training course you will achieve hands-on expertise in various aspects of the DevOps delivery model. The practical learning outcomes of this Devops training course are:
An understanding of DevOps and the modern DevOps toolsets
The ability to automate all aspects of a modern code delivery and deployment pipeline using:
1. Source code management tools
2. Build tools
3. Test automation tools
4. Containerization through Docker
5. Configuration management tools
6. Monitoring tools
Who should take this course?
DevOps career opportunities are thriving worldwide. DevOps was featured as one of the 11 best jobs in America for 2017, according to CBS News, and data from Payscale.com shows that DevOps Managers earn as much as $122,234 per year, with DevOps engineers making as much as $151,461. DevOps jobs are the third-highest tech role ranked by employer demand on Indeed.com but have the second-highest talent deficit.
1. This DevOps training course will be of benefit the following professional roles:
2. Software Developers
3. Technical Project Managers
4. Architects
5. Operations Support
6. Deployment engineers
7. IT managers
8. Development managers
Learn more at https://www.simplilearn.com/cloud-computing/devops-practitioner-certification-training
SCS 4120 - Software Engineering IV
BACHELOR OF SCIENCE HONOURS IN COMPUTER SCIENCE
BACHELOR OF SCIENCE HONOURS IN SOFTWARE ENGINEERING
All in One Place Lecture Notes
Distribution Among Friends Only
All copyrights belong to their respective owners
Viraj Brian Wijesuriya
vbw@ucsc.cmb.ac.lk
I Love APIs 2015
Chris Munns, Amazon
@chrismunns
http://www.amazon.com/
As computing costs decreased and computing power grew over time, so increased the complexity of the problems computers were called to solve and complexity of software. Enterprise applications quickly went through the stage of monolithic applications to client-server to multiple tier and beyond – to the land of massively distributed architectures. We arrived at the point where enterprise software is well beyond the capability of a single person or even a reasonably practical group of people to understand and control. Are microsevices the answer? Join Chris Munns to learn about how microservices are scaled at Amazon.
PPT concetrates on :
1. Introduction to RabbitMQ .
2. Difference between AMQP and JMS
3. Different types of exchanges
4. Routing Key and Binding concept
Comparing Service-Oriented Architecture (SOA), Microservices and Service-Based Architecture (SBA - SOA and Microservices Hybrid) patterns.
Also discussing coupling and cohesion concepts in relation to the systems design.
Redis and Kafka - Simplifying Advanced Design Patterns within Microservices A...HostedbyConfluent
The adoption and popularity of the microservices architecture continues to grow across a spectrum of enterprises in every industry. Although a consensus on an implementation standard has yet to be reached, advanced design patterns and lessons learned about the complexities and pitfalls of deploying microservices at scale have been established by thought leaders and the development community. With Redis and Kafka becoming de facto standards across most microservices architectures, we will discuss how their combination can be used to simplify the implementation of event-driven design patterns that will provide real-time performance, scalability, resiliency, traceability to ensure compliance, observability, reduced technology sprawl, and scale to thousands of services. In this discussion, we will decompose a real-time event-driven payment-processing microservices workflow to explore capturing telemetry data, event sourcing, CQRS, orchestrated SAGA workflows, inter-service communication, state machines, and more.
Best practices in deploying IBM Operation Decision Manager Standard 8.8.0Pierre Feillet
This session was presented at Interconnect 2016 in session bdm-4361. It covers ODM 8.8.0 version. This deck explains the basics of ODM architecture and guides deployment for DevOps.
In this presentation, I will explain event driven architecture, describe the different types of events, demonstrate how events can be related and orchestrated, and provide a basic understanding of how this method can drive the architecture of enterprise systems. In addition to understanding the concepts of event driven architecture, we will explore a working sample built using an open-source .NET messaging framework called MassTransit.
MuleSoft Anypoint Platform and Three Tier ArchitectureHarish Kumar
Every business need to integrate the above three actors and their engagement to systems for the best possible outcome. How to do it and Best way to do it , An Introduction
Introduction to Microservices Patterns. In these slides we explore microservices vs monolith apis. We try to identify the challenges of moving to microservices ecosystem and try to analyze possible solutions for data consistency, inter-communication, event driven and distributed transactions.
SpringOne Platform 2017
Ryan Baxter, Pivotal
You have heard and seen great things about Spring Cloud and you decide it is time to dive in and try it out yourself. You fire up your browser head to Google and land on the Spring Cloud homepage. Then it hits you, where do you begin? What do each of these projects do? Do you need to use all of them or can you be selective? The number of projects under the Spring Cloud umbrella has grown immensely over the past couple of years and if you are a newcomer to the Spring Cloud ecosystem it can be quite daunting to sift through the projects to find what you need. By the end of this talk you will leave with a solid understanding of the Spring Cloud projects, how to use them to build cloud native apps, and the confidence to get started!
This is a small introduction to microservices. you can find the differences between microservices and monolithic applications. You will find the pros and cons of microservices. you will also find the challenges (Business/ technical) that you may face while implementing microservices.
Presentación hecha en el SpringIO 2012 en Madrid España. Donde se muestra un poco de la experiencia adquirida durante el desarrollo y puesta a producción de la plataforma de eCommerce mas grande de LatinoAmerica construida con Grails
Continous delivery regional scrum gathering ecuadorTech And Solve
Continuos Delivery es habitualmente sinónimo de automatización y esta a su vez puede implicar llevar errores a producción de forma automática.
En esta charla descubrimos que Continuos Delivery es el resultado de alterar exitosamente la cultura y los procesos organizacionales utilizando la automatización como una pieza importante para lograr y eficiencia y procesos repetibles.
SOA multiplataforma con rabbitmq y websocketsbmegias
Cómo montar una arquitectura SOA con mensajería y dirigida por eventos con RabbitMQ, y cómo llevar esas notificaciones al navegador con websockets y signalR
MuleSoft y la Arquitectura Orientada a Microservicios (MSA)Larry Magallanes
Qué es la arquitectura orientada a Microservicios (MSA) y cómo Mulesoft puede agilizar la adopción de este tipo de arquitectura. Patrones de Microservicios. Ventanas y Desventajas. Casos de éxito. Buenas prácticas.
¿Qué tienen en común compañías como Amazon, eBay, Facebook, Google y Netflix, desde el punto de vista de su arquitectura de software?
Microservicios, un nuevo estilo de arquitectura de software.
Es un diagrama para La asistencia técnica o apoyo técnico es brindada por las compañías para que sus clientes puedan hacer uso de sus productos o servicios de la manera en que fueron puestos a la venta.
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
2. Monolitos
Un sistema monolítico es el que se organiza en su totalidad de forma horizontal, allí la
información tiene que atravesar el sistema de la misma forma horizontal para llegar a
su destino, desde la base de datos, pasando por una o varias partes de todo el sistema,
hasta llegar al usuario.
● La lógica para manejar una petición la gestiona un solo proceso
● Se pueden correr los tests de la aplicación en la máquina de un desarrollador
● Puedes escalar horizontalmente levantando más instancias detrás de un load-
balancer.
● Escalar la aplicación requiere el escalado de la aplicación completa.
3. Microservicios
“El término arquitectura de microservicios ha surgido en los últimos años para describir
una forma particular de diseñar aplicaciones de software como conjuntos de servicios con
independencia de despliegue. Si bien no existe una definición precisa de este estilo
arquitectónico, hay ciertas características comunes alrededor de organización en torno a
la capacidad del negocio, el despliegue automatizado, la inteligencia en los endpoints y
el control descentralizado de idiomas y datos.”
Martin Fowler
5. Características:
● Composición vía servicios
● Organización en torno al negocio
● Productos, no proyectos
● Endpoints inteligentes, pipes tontos
● Gobierno descentralizado
● Gestión de datos descentralizada
● Automatización de la infraestructura
● Diseñado contra errores
● Diseño evolutivo
6. Composición:
● Componente: unidad de software que puede actualizarse y/o
reemplazarse.
● Librería: componente enlazado a un programa que es
invocado a través de funciones en memoria.
● Servicio: componente out-of-process que se comunica a
través de un mecanismo como un web service o un RPC.
7. Ventajas
● Pueden desplegarse independientemente de otros.
● Ofrecen una interfaz más explícita (facade).
Inconvenientes
● Las llamadas remotas son más caras, y por lo tanto las API
remotas necesitan ser de grano más grueso, lo que puede
convertirlas en más difíciles de usar.
● Es más complicado mover las responsabilidades entre los
componentes.
8. Organización en torno al negocio
"Cualquier organización que diseña un sistema (definido en
términos generales) producirá un diseño cuya estructura es una
copia de la estructura de comunicación de la organización."
Melvyn Conway, 1967
Los equipos de desarrollo deberían ser responsables de construir y poner en
funcionamiento cada producto, y cada producto ser dividido en un número de
microservicios que se comuniquen a través de un bus de mensajes.
9. Los arquitectos de microservicios favorecen la idea de que un equipo debe ser
plenamente responsable de un producto software durante toda su vida útil.
"You build, you run it"
La mentalidad de producto se enlaza con el negocio. En lugar de pensar el
software como un conjunto de funcionalidades terminadas, hay una relación
continua donde la pregunta es cómo el software ayuda a sus usuarios a
mejorar el negocio.
Productos, no proyectos
10. Endpoints inteligentes, pipes tontos
Las aplicaciones construidas a partir microservicios pretenden estar
tan desacopladas y cohesionadas como sea posible, que poseen su
propia lógica de dominio y actúan más como filtros, de forma que se
reciba una petición, se aplique la lógica correspondiente y se produzca
una respuesta.
Se prefieren protocolos REST simples en lugar de otros más complejos
● Request - response con APIs de recursos
● Bus de mensajes: RabbitMQ, ZeroMQ, etc.
11. Gobierno descentralizado
Gobierno centralizado
● Tendencia a estandarizar la tecnología
● Puede no usarse la herramienta más correcta para cada trabajo
Gobierno descentralizado
● Al dividir los componentes del monolito en servicios tenemos la
posibilidad de elegir la herramienta más adecuada para cada una
de ellas.
OJO: sólo porque puedas hacer algo, no significa que debas hacerlo.
12. Gestión de datos descentralizada
El modelo conceptual del mundo será diferente entre los sistemas.
La vista de un cliente por parte del sistema de ventas difiere de la de soporte.
Este problema es común entre aplicaciones, pero también puede ocurrir
dentro de las aplicaciones, en particular cuando la aplicación se divide en
componentes separados.
Una manera útil de pensar en esto es la noción de bounded context de DDD.
DDD divide un dominio complejo en múltiples contextos limitados, y trazando
las relaciones entre ellos. Este proceso es útil para arquitecturas monolíticas y
microservicios, pero hay una correlación natural entre los límites del servicio y
de contexto.
13. Las aplicaciones monolíticas prefieren una base de datos lógica
para persistir datos.
Las empresas a menudo prefieren una sola base de datos a través
de una gama de aplicaciones.
14. Gestión de datos descentralizada
La arquitectura de microservicios prefieren dejar que cada
servicio de gestionar su propia base de datos:
● Persistencia políglota
● Consistencia eventual (reglas de negocio, UI)
Las transacciones distribuidas son difíciles de implementar.
Las arquitecturas de microservicios hacen hincapié en la
coordinación no-transaccional entre los servicios.
15. Automatización de la infraestructura
Queremos tener tanta confianza como sea posible en que el software está
funcionando, por lo que se corren tantos tests automatizados como sea
posible.
Para promocionar el código en la cadena, deberemos automatizar el
despliegue del código a cada nuevo entorno.
17. Diseñado contra errores
Las aplicaciones deben ser diseñadas para tolerar un error en
un servicio.
Cualquier llamada de servicio podría fallar debido a la falta de
disponibilidad del proveedor. El cliente debe responder a esto
tan elegantemente como sea posible.
Es importante ser capaz de detectar los fallos de forma rápida y,
si es posible, restaurar automáticamente el servicio.
18. Énfasis en la supervisión en tiempo real de la aplicación,
comprobando:
● Los elementos arquitectónicos (peticiones por segundo)
● Métricas de negocio relevantes (ventas por minuto)
El monitoreo semántico puede ofrecer un sistema de alerta
temprana de que algo va mal, permitiendo a los desarrolladores
realizar su seguimiento.
19. Diseño evolutivo
Siempre que pensemos cómo dividir un software en componentes nos
enfrentamos a la decisión de cómo dividir las piezas.
¿Cuáles son los principios en los que decidimos el tramo hasta nuestra
aplicación?
Las propiedades claves de un componente son el reemplazo independiente y
actualización, lo que implica que buscamos puntos en los que podemos
imaginar la reescritura de un componente sin afectar a sus colaboradores.
De hecho, muchos arquitectos llevan este concepto más lejos, esperando que
los servicios sean desechados en lugar de evolucionarlos con el tiempo.
20. Conclusion...
“Muchos equipos de desarrollo han encontrado que los microservicios de estilo
arquitectónico sea un enfoque superior a una arquitectura monolítica. Sin
embargo, otros equipos han encontrado que son una carga para la
productividad que agota. Al igual que cualquier estilo arquitectónico, los
microservicios presentan costes y beneficios. Para hacer una elección sensata,
hay que entender bien el concepto y aplicarlo en su contexto específico.”
Martin Fowler
http://martinfowler.com/articles/microservice-trade-offs.html
21. Beneficios
❏ Los microservicios refuerzan la estructura
modular, lo que es particularmente
importante para los equipos más grandes.
❏ Implementaciones independientes: un
servicio sencillo es más fácil de implementar
y, puesto que son autónomos, son menos
propensos a causar fallos en el sistema
cuando van mal.
❏ Diversidad tecnológica: con microservicios
se pueden mezclar varios lenguajes, los
marcos de desarrollo y tecnologías de
almacenamiento de datos.
Costos
❖ Distribución: los sistemas distribuidos son
más difíciles de programar, ya que las
llamadas remotas son lentas y pueden fallar.
❖ Consistencia eventual: el mantenimiento
de una fuerte consistencia es muy difícil en
un sistema distribuido, lo que significa que
cada servicio debe gestionar la consistencia
del sistema.
❖ Complejidad operacional: se necesita un
equipo de operaciones maduro para
manejar una gran cantidad de servicios, que
se despliegan regularmente.
22. Nuestra experiencia en su implementación
El proyecto implementó el concepto de microservicios
originalmente desarrollando 3 servicios con sus respectivas SDK
y un gateway.
En un principio API Gateway resolvería el negocio y derivaría los
request a los respectivos servicios, además en sus primeras
definiciones se encontraban pocas conexiones entre sí.
23.
24. Luego al integrar ms-social notamos que la connexion entre
servicios aumentó considerablemente.
Tuvimos que refactorizar el endpoint de usuarios para mejor sus
tiempos de respuesta y no encarecer los tiempos de ms-social ya
que este hacia múltiples consultas a ms-user, para esto incluimos
Elasticsearch services de amazon.
La llegada de social
25.
26.
27. Problemas de rendimiento
La inclusión de espacios de ms-platform en ms-social y sus ACL (usuarios que pueden o no
ver/escribir en un espacio) y la forma de informar estos ACL a la UI género un excesivo y recursivo
tráfico interno, entre ms-social, ms-user y ms-platform, debido a que ms-platform contenía los
espacios de una plataforma, las relaciones con usuarios/grupo. Entonces ms-social consulta ms-
platform las relaciones y los ACL a ms-user que tenia que consultar a ms-platform para poder
responder.
28. Mejorando tiempos
Con concurrencia AWS comenzó a responder de forma aleatoria en los
tiempos de respuestas, afectando directamente en el funcionamiento de los
servicios. Escritura/Lectura en DynamoDb, inconsistencias e indexado de
Elasticsearch, tiempos de ejecuciones en Lambda.
Conclusion:
Optamos por llevar a Lambda a nuestros servidores.
30. Definiciones de productos más complejas
Al alterar las definiciones de producto en el requerimiento de los muros, DynamoDB
dejó de brindar el soporte que necesitábamos para satisfacer estas definiciones. Y el
tiempo de respuesta desde una Notificación desde ms-social a lambda escribiendo en
DynamoDB y volviendo al Muro presentaba un retardo importante.
Conclusion:
Optamos por deprecar esta solución y utilizar Mysql para satisfacer los requerimientos
simples como: “ver en el muro mi post recien creado”.
31. Si suponemos que cada request tarda 100ms impactaría de esta forma
33. ¿Y el problema de ACL ?
Lamentablemente AWS limita el servicio de Elasticsearch quitando las posibilidades de
explotar esta herramienta al máximo y aumentar nuestro rendimiento.
Las tareas lambda procesaban información sensible para los ACL y generaba severos
retardos.
El servicio de SNS comenzó a notificar eventos lanzados por ms-user mezclados
provocando inconsistencias en el indexado de elasticsearch.
Conclusion:
Optamos por tener Elasticsearch en nuestros servidores.
Migrar de SNS a nuestro propio Message Broker “RabbitMQ”.
Migrar de tareas Lambda a workers en el correspondiente microservicio.
36. A nivel negocio RabbitMQ nos sirvió para desacoplar nuestros servicios de AWS,
flexibilizar el uso de mensajería y utilizarlo como middleware entre los servicios.
Permitirnos escalar a los workers, mantener sincronizados en orden de notificaciones
para tener consistencia en los datos de elasticsearch y optimizar los tiempos.
38. ¿Que es RabbitMQ?
“Dentro de la informática, RabbitMQ es un software de negociación de mensajes de
código abierto, y entra dentro de la categoría de middleware de mensajería. Implementa
el estándar Advanced Message Queuing Protocol (AMQP).”
Wikipedia.
Es un sistema de mensajería que permite a las aplicaciones
conectarse y escalar. Estas pueden conectarse entre sí, como con
componentes de una aplicación más grande, o a dispositivos de
usuarios transmitiendo datos. La mensajería es asincrónica,
desacoplada a las aplicaciones mediante la separación de envío y
recepción de datos.
39. Sus principales características
Confiable: ofrece características que le permiten operar fuera de rendimiento con la
fiabilidad, incluyendo la persistencia, acuses de recibo de entrega, confirma editor, y
alta disponibilidad.
Enrutamiento Flexible: los mensajes se enrutan a través de intercambios antes de
llegar a las colas. RabbitMQ cuenta con varios tipos de cambio integradas para la lógica
de enrutamiento típico. Para el enrutamiento más complejo puede enlazar los
intercambios entre sí o incluso escribir su propio tipo de cambio como un plugin.
Clustering: Varios servidores RabbitMQ en una red local pueden ser agrupados juntos,
formando un único agente lógico.
Mensajería estándar, alta disponibilidad, multiprotocolo, muchos clientes, la interfaz
de usuario para su gestión, seguimiento, plugins ...