Essa apresentação é mais sobre arquitetura do que sobre software livre.
Event Driven Architecture (EDA)
É um estilo de arquitetura de software onde os eventos são os principais responsáveis por acionar e comunicar diferentes partes de um sistema.
É um estilo de arquitetura de software onde os eventos são os principais responsáveis por acionar e comunicar diferentes partes de um sistema.
Baseado na emissão, detecção, consumo e reação a eventos.
📌 Um evento é qualquer coisa que aconteceu e que pode ser descrita, como "pedido criado", "pagamento aprovado" ou "usuário fez login".
Imagine um restaurante com cozinha e garçons:
Agora imagine se o cozinheiro tivesse que perguntar a cada segundo: "tem pedido novo?", e o garçom tivesse que perguntar: "o prato está pronto?" o tempo todo.
Isso seria ineficiente e pouco escalável.
Entender e aplicar uma Arquitetura Orientada a Eventos pode te ajudar a:
Cadeia de Responsabilidade é um padrão de design comportamental que permite repassar solicitações ao longo de uma cadeia de manipuladores. Ao receber uma solicitação, cada manipulador decide se processa a solicitação ou a repassa ao próximo manipulador na cadeia.
https://refactoring.guru/design-patterns/chain-of-responsibility
A mensagem percorre uma "esteira" de filtros. Cada etapa consome, transforma/valida e republica, permitindo montar workflows encadeados.
[ ]
[
{
"transactionId": "1234",
"status": "CREATED",
"createdAt": "2021-01-01T00:00:00Z",
"payload": {
"value": 100.0,
"description": "Compra no supermercado",
"payer": "1234567890",
"payee": "9876543210"
}
}
]
[
{
"transactionId": "1234",
"status": "CREATED",
"createdAt": "2021-01-01T00:00:00Z",
"payload": {
"value": 100.0,
"description": "Compra no supermercado",
"payer": "1234567890",
"payee": "9876543210"
}
},
{
"transactionId": "1234",
"status": "BALANCE_CHECKED",
"createdAt": "2021-01-01T00:00:01Z",
"payload": {
"value": 100.0,
"description": "Compra no supermercado",
"payer": "1234567890",
"payee": "9876543210"
}
}
]
[
{
"transactionId": "1234",
"status": "CREATED",
"createdAt": "2021-01-01T00:00:00Z",
"payload": {
"value": 100.0,
"description": "Compra no supermercado",
"payer": "1234567890",
"payee": "9876543210"
}
},
{
"transactionId": "1234",
"status": "BALANCE_CHECKED",
"createdAt": "2021-01-01T00:00:01Z",
"payload": {
"value": 100.0,
"description": "Compra no supermercado",
"payer": "1234567890",
"payee": "9876543210"
}
},
{
"transactionId": "1234",
"status": "LIMIT_CHECKED",
"createdAt": "2021-01-01T00:00:02Z",
"payload": {
"value": 100.0,
"description": "Compra no supermercado",
"payer": "1234567890",
"payee": "9876543210"
}
}
]
[
{
"transactionId": "1234",
"status": "CREATED",
"createdAt": "2021-01-01T00:00:00Z",
"payload": {
"value": 100.0,
"description": "Compra no supermercado",
"payer": "1234567890",
"payee": "9876543210"
}
},
{
"transactionId": "1234",
"status": "BALANCE_CHECKED",
"createdAt": "2021-01-01T00:00:01Z",
"payload": {
"value": 100.0,
"description": "Compra no supermercado",
"payer": "1234567890",
"payee": "9876543210"
}
},
{
"transactionId": "1234",
"status": "LIMIT_CHECKED",
"createdAt": "2021-01-01T00:00:02Z",
"payload": {
"value": 100.0,
"description": "Compra no supermercado",
"payer": "1234567890",
"payee": "9876543210"
}
},
{
"transactionId": "1234",
"status": "ERROR",
"createdAt": "2021-01-01T00:00:03Z",
"payload": {
"value": 100.0,
"description": "Compra no supermercado",
"payer": "1234567890",
"payee": "9876543210",
"error": {
"code": "RISK_POLICY_VIOLATION",
"message": "Transação bloqueada por política de risco."
}
}
}
]
Quando usar????
Apache Kafka é um projeto da Apache Software Foundation licenciado sob Apache License 2.0, totalmente open source. Qualquer pessoa pode baixar o código-fonte, contribuir e usá-lo sem custo (inclusive para uso comercial).
RabbitMQ também é open source; o servidor é distribuído sob a Mozilla Public License 2.0 (MPL-2.0). O repositório oficial fica no GitHub, e a comunidade mantém plugins e clientes em várias linguagens.
https://eda.michels.app/