Slide 1

Slide 1 text

Runtime Metric Meets Developer Building Better Cloud Applications Using Feedback Jürgen Cito, Philipp Leitner, Harald C. Gall (University of Zurich) Aryan Dadashi, Anne Keller, Andreas Roth (SAP SE) SPLASH Pittsburgh 2015 - Onward

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Continuous Delivery

Slide 4

Slide 4 text

Continuous Delivery High velocity of change, push of smaller changes more frequently

Slide 5

Slide 5 text

Continuous Delivery High velocity of change, push of smaller changes more frequently ~50-60 releases per day

Slide 6

Slide 6 text

Continuous Delivery High velocity of change, push of smaller changes more frequently ~50-60 releases per day ~100 releases per day

Slide 7

Slide 7 text

Study on Software Development for the Cloud “The Making of Cloud Applications” - FSE’15 Adapted from https://xkcd.com/1423/ Interview with 25 software developers that deploy in the cloud Developer Me

Slide 8

Slide 8 text

Study on Software Development for the Cloud “The Making of Cloud Applications” - FSE’15 Adapted from https://xkcd.com/1423/ Topic: Solving problems that have been detected in production Nah, I rather go by intuition? Do you look at any metrics?

Slide 9

Slide 9 text

Log Overload

Slide 10

Slide 10 text

State-of-the-Art NewRelic ELK Stack

Slide 11

Slide 11 text

State-of-the-Art NewRelic ELK Stack

Slide 12

Slide 12 text

State-of-the-Art NewRelic ELK Stack

Slide 13

Slide 13 text

State-of-the-Art NewRelic ELK Stack

Slide 14

Slide 14 text

State-of-the-Art NewRelic ELK Stack

Slide 15

Slide 15 text

State-of-the-Art NewRelic ELK Stack

Slide 16

Slide 16 text

State-of-the-Art NewRelic ELK Stack

Slide 17

Slide 17 text

Feedback Driven Development

Slide 18

Slide 18 text

Feedback Driven Development Feedback Visualization Feedback Prediction

Slide 19

Slide 19 text

Feedback Driven Development Feedback Visualization Feedback Prediction

Slide 20

Slide 20 text

Feedback Driven Development Feedback Visualization Feedback Prediction integrating metrics into daily developer workflows

Slide 21

Slide 21 text

Feedback Driven Development Feedback Visualization Feedback Prediction integrating metrics into daily developer workflows bring metrics into context

Slide 22

Slide 22 text

Feedback Driven Development Feedback Visualization Feedback Prediction integrating metrics into daily developer workflows prevent bad things from happening bring metrics into context

Slide 23

Slide 23 text

Conceptual Overview

Slide 24

Slide 24 text

Code Artifacts Conceptual Overview

Slide 25

Slide 25 text

Code Artifacts Deployment Conceptual Overview

Slide 26

Slide 26 text

Code Artifacts Deployment Conceptual Overview Cloud Infrastructure

Slide 27

Slide 27 text

Code Artifacts Deployment Conceptual Overview Cloud Infrastructure VM1 VM2 Supplier Service User Interface Purch S

Slide 28

Slide 28 text

Code Artifacts Deployment observe Conceptual Overview Cloud Infrastructure VM1 VM2 Supplier Service User Interface Purch S

Slide 29

Slide 29 text

Code Artifacts Deployment observe Conceptual Overview Cloud Infrastructure VM1 VM2 Supplier Service User Interface Purch S

Slide 30

Slide 30 text

Code Artifacts Deployment ....... [26/06/2015:21205.0], responseTime, "CustomerService", 204 [26/06/2015:21215.0], responseTime, "CustomerService", 169 [26/06/2015:21216.0], cpuUtilization, "CustomerServiceVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, "CustomerServiceVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ Operations Data observe Conceptual Overview Cloud Infrastructure VM1 VM2 Supplier Service User Interface Purch S

Slide 31

Slide 31 text

Code Artifacts Deployment ....... [26/06/2015:21205.0], responseTime, "CustomerService", 204 [26/06/2015:21215.0], responseTime, "CustomerService", 169 [26/06/2015:21216.0], cpuUtilization, "CustomerServiceVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, "CustomerServiceVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ Operations Data observe Conceptual Overview Cloud Infrastructure VM1 VM2 Supplier Service User Interface Purch S

Slide 32

Slide 32 text

Code Artifacts Deployment ....... [26/06/2015:21205.0], responseTime, "CustomerService", 204 [26/06/2015:21215.0], responseTime, "CustomerService", 169 [26/06/2015:21216.0], cpuUtilization, "CustomerServiceVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, "CustomerServiceVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ Operations Data observe Conceptual Overview Cloud Infrastructure VM1 VM2 Supplier Service User Interface Purch S

Slide 33

Slide 33 text

Code Artifacts Deployment ....... [26/06/2015:21205.0], responseTime, "CustomerService", 204 [26/06/2015:21215.0], responseTime, "CustomerService", 169 [26/06/2015:21216.0], cpuUtilization, "CustomerServiceVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, "CustomerServiceVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ Operations Data observe readConnecti on getConnectio ns ids connectionPo ol readConnecti on getConnectio ns ids connectionPo ol readConnection getConnections ids connectionPool Feedback Annotated Dependency Graph Conceptual Overview Cloud Infrastructure VM1 VM2 Supplier Service User Interface Purch S

Slide 34

Slide 34 text

(a) Code in development environment (c) Annotated dependency graph combining code artefacts and operations data and creating feedback readConnections getConnections showConnections setConnectionImage setConnectionStatus ....... [26/06/2015:21205.0], responseTime, “showConnections, 204 [26/06/2015:21215.0], responseTime, “setConnectionImage, 169 [26/06/2015:21216.0], responseTime, “PaymentService”, 79 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ ....... [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, “PaymentServiceVM, 0.35 [26/06/2015:21219.4], ids, “connectionIDs, [1,16,32,189,216] ........ (b) Operations data gathered through monitoring getImage (d) Feedback Visualization in the IDE Feedback Mapping

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

readConnections

Slide 37

Slide 37 text

readConnections connections getConnections

Slide 38

Slide 38 text

readConnections connections getConnections getImage setConnectionImage setConnectionStatus

Slide 39

Slide 39 text

readConnections connections getConnections getImage setConnectionImage setConnectionStatus ....... [26/06/2015:21205.0], responseTime, “showConnections, 204 [26/06/2015:21215.0], responseTime, “setConnectionImage, 169 [26/06/2015:21216.0], responseTime, “PaymentService”, 79 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ ....... [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, “PaymentServiceVM, 0.35 [26/06/2015:21219.4], ids, “connectionIDs, [1,16,32,189,216] ........

Slide 40

Slide 40 text

readConnections connections getConnections getImage setConnectionImage setConnectionStatus ....... [26/06/2015:21205.0], responseTime, “showConnections, 204 [26/06/2015:21215.0], responseTime, “setConnectionImage, 169 [26/06/2015:21216.0], responseTime, “PaymentService”, 79 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ ....... [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, “PaymentServiceVM, 0.35 [26/06/2015:21219.4], ids, “connectionIDs, [1,16,32,189,216] ........

Slide 41

Slide 41 text

readConnections connections getConnections getImage setConnectionImage setConnectionStatus ....... [26/06/2015:21205.0], responseTime, “showConnections, 204 [26/06/2015:21215.0], responseTime, “setConnectionImage, 169 [26/06/2015:21216.0], responseTime, “PaymentService”, 79 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ ....... [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, “PaymentServiceVM, 0.35 [26/06/2015:21219.4], ids, “connectionIDs, [1,16,32,189,216] ........

Slide 42

Slide 42 text

readConnections connections getConnections getImage setConnectionImage setConnectionStatus ....... [26/06/2015:21205.0], responseTime, “showConnections, 204 [26/06/2015:21215.0], responseTime, “setConnectionImage, 169 [26/06/2015:21216.0], responseTime, “PaymentService”, 79 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ ....... [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, “PaymentServiceVM, 0.35 [26/06/2015:21219.4], ids, “connectionIDs, [1,16,32,189,216] ........ Feedback Specification

Slide 43

Slide 43 text

readConnections connections getConnections getImage setConnectionImage setConnectionStatus ....... [26/06/2015:21205.0], responseTime, “showConnections, 204 [26/06/2015:21215.0], responseTime, “setConnectionImage, 169 [26/06/2015:21216.0], responseTime, “PaymentService”, 79 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ ....... [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, “PaymentServiceVM, 0.35 [26/06/2015:21219.4], ids, “connectionIDs, [1,16,32,189,216] ........ Feedback Specification

Slide 44

Slide 44 text

readConnections connections getConnections getImage setConnectionImage setConnectionStatus ....... [26/06/2015:21205.0], responseTime, “showConnections, 204 [26/06/2015:21215.0], responseTime, “setConnectionImage, 169 [26/06/2015:21216.0], responseTime, “PaymentService”, 79 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ ....... [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, “PaymentServiceVM, 0.35 [26/06/2015:21219.4], ids, “connectionIDs, [1,16,32,189,216] ........ Feedback Specification

Slide 45

Slide 45 text

readConnections connections getConnections getImage setConnectionImage setConnectionStatus ....... [26/06/2015:21205.0], responseTime, “showConnections, 204 [26/06/2015:21215.0], responseTime, “setConnectionImage, 169 [26/06/2015:21216.0], responseTime, “PaymentService”, 79 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ ....... [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, “PaymentServiceVM, 0.35 [26/06/2015:21219.4], ids, “connectionIDs, [1,16,32,189,216] ........ Feedback Specification

Slide 46

Slide 46 text

readConnections connections getConnections getImage setConnectionImage setConnectionStatus ....... [26/06/2015:21205.0], responseTime, “showConnections, 204 [26/06/2015:21215.0], responseTime, “setConnectionImage, 169 [26/06/2015:21216.0], responseTime, “PaymentService”, 79 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ ....... [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, “PaymentServiceVM, 0.35 [26/06/2015:21219.4], ids, “connectionIDs, [1,16,32,189,216] ........ Feedback Specification

Slide 47

Slide 47 text

readConnections connections getConnections getImage setConnectionImage setConnectionStatus ....... [26/06/2015:21205.0], responseTime, “showConnections, 204 [26/06/2015:21215.0], responseTime, “setConnectionImage, 169 [26/06/2015:21216.0], responseTime, “PaymentService”, 79 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ ....... [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, “PaymentServiceVM, 0.35 [26/06/2015:21219.4], ids, “connectionIDs, [1,16,32,189,216] ........ Feedback Specification

Slide 48

Slide 48 text

readConnections connections getConnections getImage setConnectionImage setConnectionStatus ....... [26/06/2015:21205.0], responseTime, “showConnections, 204 [26/06/2015:21215.0], responseTime, “setConnectionImage, 169 [26/06/2015:21216.0], responseTime, “PaymentService”, 79 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, "CustomerServiceVM1", 0.35 [26/06/2015:21219.4], ids, "ids", [1,16,32,189,216] ........ ....... [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM2", 0.73 [26/06/2015:21216.0], cpuUtilization, “ConnectionsVM1", 0.69 [26/06/2015:21216.1], vmBilled, “PaymentServiceVM, 0.35 [26/06/2015:21219.4], ids, “connectionIDs, [1,16,32,189,216] ........ Feedback Specification

Slide 49

Slide 49 text

Feedback Visualization (SAP HANA)

Slide 50

Slide 50 text

Performance Spotter

Slide 51

Slide 51 text

Performance Spotter

Slide 52

Slide 52 text

Performance Spotter

Slide 53

Slide 53 text

Code Change overallRating readConnection New Code (a) Code changed by developer (b) Dependency graph before and after the code change (existing feedback is already attached) overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating Inferred Critical Entity [Feedback Propagation] [Statistical Inference] (c) Prediction through Statistical Inference of new nodes without feedback and Feedback Propagation of the changes (d) Feedback Prediction in the IDE ? Live Performance Prediction

Slide 54

Slide 54 text

New Code

Slide 55

Slide 55 text

New Code overallRating readConnection

Slide 56

Slide 56 text

New Code overallRating readConnection Code Change

Slide 57

Slide 57 text

New Code overallRating readConnection Code Change overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating

Slide 58

Slide 58 text

New Code overallRating readConnection Code Change overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating ?

Slide 59

Slide 59 text

New Code

Slide 60

Slide 60 text

overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating New Code

Slide 61

Slide 61 text

overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating New Code

Slide 62

Slide 62 text

overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating New Code

Slide 63

Slide 63 text

overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating [Statistical Inference] New Code

Slide 64

Slide 64 text

overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating [Statistical Inference] New Code

Slide 65

Slide 65 text

overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating [Statistical Inference] New Code Predicted Entity

Slide 66

Slide 66 text

overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating [Statistical Inference] New Code Predicted Entity

Slide 67

Slide 67 text

overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating [Statistical Inference] New Code Predicted Entity

Slide 68

Slide 68 text

overallRating readConnection size: suppliers getSuppliers Loop:suppliers getPurchaseRating [Statistical Inference] New Code [Feedback Propagation] Predicted Entity

Slide 69

Slide 69 text

Live Feedback Prediction (PerformanceHat)

Slide 70

Slide 70 text

PerformanceHat

Slide 71

Slide 71 text

PerformanceHat

Slide 72

Slide 72 text

PerformanceHat

Slide 73

Slide 73 text

Challenges

Slide 74

Slide 74 text

Confounding Factors

Slide 75

Slide 75 text

Confounding Factors

Slide 76

Slide 76 text

Confounding Factors

Slide 77

Slide 77 text

Real-Time Prediction

Slide 78

Slide 78 text

Real-Time Prediction computationally expensive for non-trivial programs

Slide 79

Slide 79 text

Real-Time Prediction computationally expensive for non-trivial programs technically challenging
 (stream processing)

Slide 80

Slide 80 text

Conservative implementation of Live Programming Impact of change in cloud runtimes (Scaling, Cost, etc.) Prediction in combination with Refactoring and Diagnosis Overlap with data driven IDEs (Onward! Keynote) Outlook @citostyle Jürgen Cito Slides: speakerdeck.com/citostyle “Modern software is all about data. Development environments should be, too.”