SlideShare uma empresa Scribd logo
1 de 50
Desenvolvimento de
sistemas com mensageria
Olá!
Paula Santana
Desde 2008 em Tecnologia
Desenvolvimento Java
Arquitetura de Soluções
Praia > SP
Devs JavaGirl
Agenda
✘ Arquitetura de software
✘ Problemas que surgem
✘ Gigante X Complexo
✘ Event Driven
○ Topologias
○ Padrões
✘ Implementação
✘ Próximos passos
O que um programador faz?
Expectativa
Realidade
Solução
“Consiste na definição dos
componentes de software, suas
propriedades externas, e seus
relacionamentos com outros
softwares
Monolito
Origem: https://microservices.io/patterns/microservices.html
Microservice
Fonte: https://www.appcentrica.com/wp-content/uploads/2016/11/Microservices-Architecture-1.png
13
Resolve
Event
Driven
Problema
Fonte: https://www.goobec.com.br/blog/redes-sociais-dados-estatisticos-2018/
Sistemas Gigantes
Empresas que utilizam esta abordagem
Sistemas Gigantes Complexos
Volume de
Requisições /
Transações /
Operações
Muitas
integrações
Volumetria
de DAdos
Muitas
áreas de
Produto
Alta
disponibilidade
Legado
Milhares
de
Pedidos
Muitas
integrações
Microsserviços
Desenvolvedor
Outros Padrões
Eventos
Ação ou ocorrência que aconteceu
EventosProdutor Consumidor
Topologia
MediadorApache Camel, Spring Integration ou Mule ESB
BrokerKafka, ActiveMq, RabbitMq
Padrões
Notificação de
Evento
Serviço de
Clientes
Serviço de
Preferências
Atualiza
Endereço
BD
Broker de Eventos
cliente xxxx
atualizou os dados
Serviço de
Entrega
Serviço de
ofertas
Transferência de Estado
Transportado pelo evento
Serviço de
Clientes
Serviço de
Preferências
Atualiza
Endereço
BD
Broker de Eventos
cliente xxxx
atualizou os
dados
xxxxx
xxxxx
xxxx
Serviço de
EntregaBD BD
Fonte de Eventos - Event Sourcing
Profile
Webapp
Crédito
Débito
Transferência
Eventos
Broker de Eventos
Dados de
Leitura
Manipulação
de Eventos
Crédito
Débito
Transferência
Próximos Passos
Entenda as
soluções de
mercado e veja
as vantagens
de cada uma
Implementação
JMS
Java Message Service
Tib
IBM
MQseries
1983 1993
MSMQ
1997
ActiveMQ
2004
JMS
1998
PROBLEMA QUE O JMS RESOLVEU
Aplicação
SOLUÇÃO A
SOLUÇÃO B
API PARA
FALAR COM A
API PARA
FALAR COM B
“A especificação Java Message Service (JMS) foi criada
justamente para definir um conjunto de
funcionalidades comuns à maioria dos produtos de
mensageria e uma API padronizada que permitisse a
aplicações Java utilizarem os serviços de middlewares
orientados a mensagens, compatíveis com a API, de
uma maneira uniforme, para a criação, envio e
recebimento de mensagens.
JMS
39
Especificação
JMS JMS API
definições
PROVIDER JMS
Implementa
Arquitetura JMS
JMS Cliente
JNDI
JMS
Provider
“JNDI é uma API utilizada em aplicações que acessam
recursos externos, ela permite obter esses recursos
através do nome. Ela especifica a interface de serviço SPI
e esse mecanismo permite que o suporte de vários
serviços de diretório, como : LDAP, DNS, NIS, RMI, CORBA,
entre outros.
Implementação
Connection
Connection
Factory
Session
Message
Producer
Message
Consumer
Message
MOM
ConnectionFactory
->Connection
->Session
->MessageProducer
->send
Modelos de Entrega - Fila (ponto a ponto)
Pedido
Financeiro
Financeiro
Fila
Modelos de Entrega - Tópico (publish/subscribe)
Pedido
Financeiro
Transporte
Tópico
Dica de Ouro
Benefícios
✘ Menor Acoplamento
✘ Operações Assíncronas
✘ Facilidade em Adicionar novos
consumidores
✘ Altamente escalável e distribuído
Problemas
✘ Concorrência
✘ Complexidade
✘ Garantir Entrega
✘ Governança
me solta….
...que eu vou usar isso no meu projeto.
Obrigada!
Dúvidas?
@psanrosa13
psanrosa13@gmail.com
www.linkedin.com/in/paula-macedo-santana-dev/

Mais conteúdo relacionado

Semelhante a Desenvolvimento de sistemas com mensageria

Integração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integraçãoIntegração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integração
Joao Johanes
 
Desenvolvimento web com software livre
Desenvolvimento web com software livreDesenvolvimento web com software livre
Desenvolvimento web com software livre
Ruan Carvalho
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
Rafael França
 

Semelhante a Desenvolvimento de sistemas com mensageria (20)

PHP nas Nuvens
PHP nas NuvensPHP nas Nuvens
PHP nas Nuvens
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linux
 
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
 
Java Web, o Tutorial
Java Web, o TutorialJava Web, o Tutorial
Java Web, o Tutorial
 
Arquitetura para otimização de legado
Arquitetura para otimização de legadoArquitetura para otimização de legado
Arquitetura para otimização de legado
 
Mobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para NegociosMobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para Negocios
 
Desenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseadaDesenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseada
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
 
Integração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integraçãoIntegração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integração
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Desenvolvimento web com software livre
Desenvolvimento web com software livreDesenvolvimento web com software livre
Desenvolvimento web com software livre
 
Desenvolvimento web com Software Livre
Desenvolvimento web com Software LivreDesenvolvimento web com Software Livre
Desenvolvimento web com Software Livre
 
WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcamb
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
 
Computação em nuvem e Windows Azure
Computação em nuvem e Windows AzureComputação em nuvem e Windows Azure
Computação em nuvem e Windows Azure
 
Integração de software solucao e estilo
Integração de software   solucao e estiloIntegração de software   solucao e estilo
Integração de software solucao e estilo
 
Integração de software 2
Integração de software 2Integração de software 2
Integração de software 2
 
Infobase - Soluções para e-commerce
Infobase - Soluções para e-commerceInfobase - Soluções para e-commerce
Infobase - Soluções para e-commerce
 

Mais de Paula Santana

Mais de Paula Santana (19)

Boas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de modaBoas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de moda
 
Como começar quando se esta começando?
Como começar quando se esta começando?Como começar quando se esta começando?
Como começar quando se esta começando?
 
Desvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventosDesvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventos
 
Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14
 
Como começas quando se está começando
Como começas quando se está começandoComo começas quando se está começando
Como começas quando se está começando
 
Refatoracao de codigo
Refatoracao de codigoRefatoracao de codigo
Refatoracao de codigo
 
Desenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventosDesenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventos
 
Como fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaComo fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em java
 
Workshop git para iniciantes
Workshop git para iniciantesWorkshop git para iniciantes
Workshop git para iniciantes
 
Como uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulherComo uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulher
 
Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?
 
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
 
4 revolucao industrial
4 revolucao industrial4 revolucao industrial
4 revolucao industrial
 
Conhecendo o Jnosql
Conhecendo o JnosqlConhecendo o Jnosql
Conhecendo o Jnosql
 
Arquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcArquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdc
 
Testes de contrato
Testes de contratoTestes de contrato
Testes de contrato
 
Spring Rest
Spring RestSpring Rest
Spring Rest
 
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
 
Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?
 

Último

Último (8)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Desenvolvimento de sistemas com mensageria