Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

196 views

Published on

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

Published in: Technology
  • Be the first to comment

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

×