O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Building Event-Driven Integration Architectures with Azure Event Grid (GIB2019)

260 visualizações

Publicada em

Presentation delivered by Dan Toomey at the Global Integration Bootcamp in Melbourne, 30 March 2019

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Building Event-Driven Integration Architectures with Azure Event Grid (GIB2019)

  1. 1. 2019 - Melbourne Global Integration Bootcamp Dan Toomey @daniel2me https://www.mindovermessaging.com Building Event-Driven Integration Architectures with Azure Event Grid
  2. 2. Who am I? • Senior Integration Specialist, Deloitte • Microsoft Azure MVP • MCSE, MCT, MCPD, MCTS BizTalk & Azure • Pluralsight Author • www.mindovermessaging.com • @daniel2me
  3. 3. What is an Event? http://www.news.com.au
  4. 4. Types of Events https://www.biztalk360.com/integrate-2018-resources/eventing-serverless-and-the-extensible-enterprise/ Discrete Independent Report state change Actionable Series Time based Context partitioned Report condition Analyzable
  5. 5. Types of Events https://www.biztalk360.com/integrate-2018-resources/eventing-serverless-and-the-extensible-enterprise/ Discrete Independent Report state change Actionable Series Time based Context partitioned Report condition Analyzable
  6. 6. Event Driven vs. Event Sourcing https://martinfowler.com/articles/201701-event-driven.html Event Notification Broadcast state changes No expectation from consumer Decoupled logic Event Sourcing Persist state changes Auditability Replay capability
  7. 7. Event Driven vs. Event Sourcing https://martinfowler.com/articles/201701-event-driven.html Event Notification Broadcast state changes No expectation from consumer Decoupled logic Event Sourcing Persist state changes Auditability Replay capability
  8. 8. Why event-driven integration?
  9. 9. Why event-driven integration?
  10. 10. Why event-driven integration?
  11. 11. Why event-driven integration?
  12. 12. Messaging Models https://mindovermessaging.com/2018/12/10/how-to-explain-messaging-patterns-to-your-grandmother/
  13. 13. Messaging Models Telephone/Website • Synchronous • Need information immediately
  14. 14. Messaging Models Telephone/Website • Synchronous • Need information immediately Order • Asynchronous • Takes time to complete a task; CQRS
  15. 15. Messaging Models Telephone/Website • Synchronous • Need information immediately Order • Asynchronous • Takes time to complete a task; CQRS Subscription • Publish / Subscribe • Decoupling; flexibility; extensibility; scalability
  16. 16. Messaging vs. Eventing https://www.biztalk360.com/integrate-2018-resources/eventing-serverless-and-the-extensible-enterprise/ Messaging - INTENTS Expectations Conversations Contracts Control Transfer Value Transfer Eventing - FACTS History Context Order Schema
  17. 17. Messaging vs. Eventing https://www.biztalk360.com/integrate-2018-resources/eventing-serverless-and-the-extensible-enterprise/ Messaging - INTENTS Expectations Conversations Contracts Control Transfer Value Transfer Eventing - FACTS History Context Order Schema
  18. 18. Communication Patterns https://www.biztalk360.com/integrate-2018-resources/eventing-serverless-and-the-extensible-enterprise/
  19. 19. Communication Patterns https://www.biztalk360.com/integrate-2018-resources/eventing-serverless-and-the-extensible-enterprise/
  20. 20. https://cloudevents.io/ Serverless Working Group https://github.com/cloudevents/spec CNCF CloudEvents
  21. 21. CNCF CloudEvents { "cloudEventsVersion" : "0.1", "eventType" : "com.example.someevent", "source" : "/mycontext", "eventID" : "A234-1234-1234", "eventTime" : "2018-04-05T17:31:00Z", "extensions" : { "comExampleExtension" : "value" }, "contentType" : "text/xml", "data" : "<much wow="xml"/>" }
  22. 22. Example: Logging Event Publication
  23. 23. Example: Logging Event Publication (Series)
  24. 24. Example eventing platforms
  25. 25. Azure Event Hubs Image from https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-about
  26. 26. Azure Event Grid
  27. 27. Benefits Manage all events in one place
  28. 28. Reliability and performance
  29. 29. Messaging by the numbers… 99.9998%2,200,000,000,000 2 PB/day1.3 PB/day
  30. 30. What these big numbers mean… 99.9998%2,200,000,000,000 4.4 million failures
  31. 31. aeg-sas-key header aeg-sas-token r={resource}& e={expiration}& s={signature} Microsoft.EventGrid/ EventSubscriptions/Write /subscriptions/{id}/ resourceGroups/{rg-name}/ providers/{provider}/ {res-type}/{resource-name} /subscriptions/{id}/ resourceGroups/{rg-name}/ providers/Microsoft.EventGrid/ topics/{topic-name} • Microsoft.EventGrid/*/read • Microsoft.EventGrid/*/write • Microsoft.EventGrid/*/delete • Microsoft.EventGrid/ eventSubscriptions/ getFullUrl/action • Microsoft.EventGrid/topics/ listKeys/action • Microsoft.EventGrid/topics/ regenerateKey/action + Custom roles Security https://docs.microsoft.com/en-us/azure/event-grid/security-authentication
  32. 32. Blob Event Sample [ { "topic": "/subscriptions/{id}/resourceGroups/{rg}/providers/Microsoft.Storage/storageAccounts/{storageacc}", "subject": "/blobServices/default/containers/monitored/blobs/blob.json", "eventType": "Microsoft.Storage.BlobCreated", "eventTime": "2017-09-20T01:12:35.8066557Z", "id": "9ac0de1a-001e-00da-23ad-311d4a06bb2f", "data": { "api": "PutBlob", "clientRequestId": "9ac0de1a-9da0-11e7-9a3b-51cc40a2ca27", "requestId": "9ac0de1a-001e-00da-23ad-311d4a000000", "eTag": "0x9AC0FC4ADA5997D", "contentType": "application/json", "contentLength": 268, "blobType": "BlockBlob", "url": "https://{storageacc}.blob.core.windows.net/monitored/blob.json", "sequencer": "00000000000019200000000000F12B37", "storageDiagnostics": { "batchId": "9ac0de1a-e1a1-44c5-a0a1-a66b2a191fc4" } } } ]
  33. 33. Custom Event Sample { "topic": "/subscriptions/{id}/resourcegroups/{rg}/providers/microsoft.eventgrid/topics/{topic}", "id": " 9ac0de1a-83f2-4eb7-ab1f-e2e8d2ef1728", "eventType": "CryptoCurrencyPriceObtained", "subject": "cryptoCurrency/price/BTC", "eventTime": "2017-09-19T11:37:01.1513463+00:00", "data": { "AUD": 4991.89 } } custom data
  34. 34. Event Domain
  35. 35. Product Comparison Kafka Kinesis Solace Event Hubs Event Grid Cloud / On-Prem Both Cloud Only Both Cloud Only Cloud Only Managed Service      Auto-Scaling     Replay      Event Sourcing    *  Integrations Kafka AWS services Open Source connectors available Azure services, Kafka Azure services, anything via HTTP/Webhooks Protocols Kafka HTTP HTTP, AMQP,MQTT, JMS, Web Sockets, Native HTTP, AMQP, Kafka HTTP Open Source   Closed source, but open protocol   Max Message Size No Limit 1MB No Limit 256K 64K *via archiving
  36. 36. Event Grid, Event Hubs, Service Bus? https://buildazure.com/2017/09/07/a-tour-of-azure-messaging-services-queues-event-grid-iot-hub-and-more/ Service Bus : Transactions, control, pull Event Hub : Telemetry, streaming Event Grid : Event handling, reactive, push
  37. 37. Storage Blob Event Grid Webhook Webhook Storage Event Subscription ext = *.jpg Subscription ext = *.pdf
  38. 38. Microsoft Azure Resource Group Event Grid Azure Function Logic App Virtual machine Storage table Outlook Connector Azure Function Administrator
  39. 39. Questions? https://platform.deloitte.com.au/#contact https://platform.deloitte.com.au/articles
  40. 40. Let’s connect! dtoomey@deloitte.com.au @daniel2me linkedin.com/in/danieltoomey mindovermessaging.com

×