Microsoft Azure <3 Open Source Tech

A presentation at Global Azure Bootcamp in April 2019 in Linz, Austria by Hans-Peter Grahsl

Slide 1

Slide 1

❤ Microsoft Azure Open Source Tech

Slide 2

Slide 2

Microsoft + Open Source ? 2 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 3

Slide 3

GitHub Octoverse 2018 3 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 4

Slide 4

GitHub Octoverse 2018 4 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 5

Slide 5

GitHub Octoverse 2018 5 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 6

Slide 6

GitHub Octoverse 2018 6 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 7

Slide 7

HDInsight Services 7 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 8

Slide 8

HDInsight Services 8 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 9

Slide 9

$ whoami ” • Hans-Peter Grahsl • living & working in Graz • technical trainer at • independent engineer & consultant • associate lecturer • 9 irregular conference speaker @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 10

Slide 10

Application Needs ? • “It depends” ! • plenty of pieces & components • irrespective of concrete use cases • two architectural pieces… 10 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 11

Slide 11

operational data store 11 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 12

Slide 12

Cosmos DB 12 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 13

Slide 13

messaging platform 13 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 14

Slide 14

Event Hubs 14 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 15

Slide 15

15 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 16

Slide 16

Cosmos DB • global distribution • high availability & elastic scaling • multi-model & native NoSQL APIs • consistency choices • leading security, compliance & SLAs 16 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 17

Slide 17

Multi-Model • keys + values • documents • column families • graphs 17 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 18

Slide 18

Native API Support • SQL • Table Storage • MongoDB • Cassandra • Gremlin 18 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 19

Slide 19

Throughput Provisioning • request units (RUs) • abstract performance metric • combination of CPU + Memory + IOPS • backed by SLAs 19 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 20

Slide 20

exciting …in theory

Slide 21

Slide 21

Azure Docs on RUs “The cost of all database operations is normalized by Azure Cosmos DB and is expressed in terms of Request Units (RUs). The cost to read a 1-KB item is 1 Request Unit (1 RU) and minimum RUs required to consume 1 GB of storage is 40.” 21 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 22

Slide 22

22 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 23

Slide 23

daunting …in practice

Slide 24

Slide 24

Measure via API • write operation consumed ??? RUs • given 1000 provisioned RUs at most ☛ 1000 ÷ 20.19 ≅ 49 docs/sec • no parallel activity considered 24 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 25

Slide 25

Measure via API • read operation consumed ??? RUs • given 1000 provisioned RUs at most ☛ 1000 ÷ 3.11 ≅ 321 reads/sec • no parallel activity considered 25 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 26

Slide 26

Influences on RUs • indexing • property count • consistency level • query patterns • scripts …and any other concurrent operation 26 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 27

Slide 27

Cosmos DB for MongoDB API • native implementation • wire protocol compatibility • transparent re-use (code + tools) • migration benefits: in both ways 27 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 28

Slide 28

Showtime! 28 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 29

Slide 29

Important Note • feature support is limited of course • carefully check what does (NOT) work • wire protocol versions: 3.2 GA, 3.4 preview 29 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 30

Slide 30

Slide 31

Slide 31

3.6 ?? 4.0 31 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 32

Slide 32

Slide 33

Slide 33

Currently Missing Out On… • powerful operators from 3.2 + 3.4 - $graphLookup, $facet, $bucket(Auto) - $reduce, $zip, $switch, $replaceRoot, … • great features & major advances from 3.6 + 4.0 - views, change streams, - type conversions, schema validation, - multi-element array updates, array filters, - sessions & transactions, … 33 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 34

Slide 34

34 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 35

Slide 35

Event Hubs • distributed event ingestion platform • decouple producers ⬌ consumers • source for stream processing • high availability & scalability • fully-managed 35 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 36

Slide 36

Concepts: Event Hub 36 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 37

Slide 37

Concepts: Partition 37 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 38

Slide 38

Concepts: Partition Keys 38 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 39

Slide 39

Concepts: Partition Offsets 39 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 40

Slide 40

Concepts: Big Picture 40 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 41

Slide 41

Event Hubs for Apache Kafka • overlay on top of Event Hubs • binary compatible with Kafka 1.0+ • transparent re-use (code + tools) • migration benefits: in both ways 41 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 42

Slide 42

The Promise… “You update the connection string in configurations to point to the Kafka endpoint exposed by your event hub instead of pointing to your Kafka cluster. Then, you can start streaming events from your applications that use the Kafka protocol into Event Hubs.” 42 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 43

Slide 43

Showtime! 43 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 44

Slide 44

Unsupported Kafka Features • idempotent producers & transactions • message compression • size-based retention or log compaction • parition resize for existing topics • HTTP Kafka API support • Kafka Streams & KSQL 44 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 45

Slide 45

The devil is in the detail

Slide 46

Slide 46

THANK YOU Q&A? https://bit.ly/2W7KGn1 46 @hpgrahsl | #Azure @GlobalAzure, 27th April 2019, Linz - Austria

Slide 47

Slide 47