automated abstraction of flow of control in a system of distributed software components

54
Automated Introspection of a Distributed Virtualization Platforms for Performance Analysis and Documentation Nima Kaviani, Michael Miximilien, Ignacio Silva-Lepe, Isabelle Rouvellou IBM Research – T.J. Watson Research Centre University of British Columbia, Vancouver, Canada

Upload: nimak

Post on 18-Dec-2014

1.607 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Automated Introspection of a Distributed Virtualization

Platforms for Performance Analysis and Documentation

Nima Kaviani, Michael Miximilien,

Ignacio Silva-Lepe, Isabelle Rouvellou

IBM Research – T.J. Watson Research Centre

University of British Columbia, Vancouver, Canada

Page 2: Automated Abstraction of Flow of Control in a System of Distributed  Software Components
Page 3: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Problem

Understanding Distributed Open-source Cloud Platforms

Page 4: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Problem

Page 5: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Problem

Track System Evolution

Page 6: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Problem

Austin Bexar Cactus Diablo

Essex

Folsom

Grizzly

Havana

Page 7: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Problem

Austin Bexar Cactus Diablo

Essex

Folsom

Grizzly

Havana

version 1.0

version 2.0

Page 8: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Problem

Austin Bexar Cactus Diablo

Essex

Folsom

Grizzly

Havana

version 1.0

version 2.0Online Enterprise

Page 9: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Problem

Software Resiliency & Testing

Page 10: Automated Abstraction of Flow of Control in a System of Distributed  Software Components
Page 11: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

11

CloudFoundry 1.0

CF Client Eclipse Plugin MobilePC

Router

NATS

Mysql Redis Mongo

.....

.

NATS MSGHTTP MSG

DEA

UAA

He

alth

Ma

na

ge

r

Stager

CloudControllerCloud

Controller

Service Pool

Cache

BlobStore

Page 12: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

12

CloudFoundry 2.0

CF Client Eclipse Plugin MobilePC

GoRouter

NATS

Mysql Redis Mongo

.....

.

NATS MSGHTTP MSG

DEA

UAA

He

alth

Ma

na

ge

r

CloudControllerCloud

Controller

Service Pool

Cache

BlobStore

Connector

Ext. Services

Apps in warden

Build Packs Dir Server

Page 13: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Code Introspection

capturing message exchanges

Page 14: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Code Introspection

capturing message exchanges

Aquarium: Aspect-oriented programming for Ruby

point-cuts advicejoin-points

Page 15: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

15

Aquarium

class Test def test_method puts “Hello World!” endend

Page 16: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

16

Aquarium

class Test def test_method puts “Hello World!” endend

join-points

Page 17: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

17

Aquarium

class Test def test_method puts “Hello World!” endend

Aspect.new :around, :calls_to => “test_method”, :type_and_descendents => “Test”, :method_options[:public] do |jpt, obj, *args| puts “Pre-Aspect Execution.” result = jpt.proceed puts “Post-Aspect Execution.”end

join-points

Page 18: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

18

Aquarium

class Test def test_method puts “Hello World!” endend

Aspect.new :around, :calls_to => “test_method”, :type_and_descendents => “Test”, :method_options[:public] do |jpt, obj, *args| puts “Pre-Aspect Execution.” result = jpt.proceed puts “Post-Aspect Execution.”end

join-points

point-cuts

Page 19: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

19

Aquarium

class Test def test_method puts “Hello World!” endend

Aspect.new :around, :calls_to => “test_method”, :type_and_descendents => “Test”, :method_options[:public] do |jpt, obj, *args| puts “Pre-Aspect Execution.” result = jpt.proceed puts “Post-Aspect Execution.”end

join-points

point-cuts

advice

Page 20: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

20

Aquarium

class Test def test_method puts “Hello World!” end

alias_method :_aspect_saved_Test_test_method, :test_method

def test_method *args, &block_for_method

# advice chaining    # advice invocation  end

  public :test_method  private :_aspect_saved_Test_test_methodend

Page 21: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

21

Aquarium

class Test def test_method puts “Hello World!” end

alias_method :_aspect_saved_Test_test_method, :test_method

def test_method *args, &block_for_method

# advice chaining    # advice invocation  end

  public :test_method  private :_aspect_saved_Test_test_methodend

rewrite

Page 22: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

22

Aquarium

class Test def _aspect_saved_Test_test_method puts “Hello World!” end

def test_method *args, &block_for_method

# advice chaining    # advice invocation    # making a call to :_aspect_saved_Test_test_method  end

  public :test_method  private :_aspect_saved_Test_test_methodend

Page 23: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Code Inspection

AOP - drawback

Page 24: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Code Inspection

AOP - drawback

Aspect.new :around, :calls_to => “test_method”, :type_and_descendents => “Test”, :method_options[:public] do |jpt, obj, *args| puts “Pre-Aspect Execution.” result = jpt.proceed puts “Post-Aspect Execution.”end

SignatureDependent

Page 25: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Capturing NATS

Page 26: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Capturing REST

REST Http Client

Page 27: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

27

CloudFoundry 2.0

CF Client Eclipse Plugin MobilePC

GoRouter

NATS

Mysql Redis Mongo

.....

.

NATS MSGHTTP MSG

DEA

UAA

He

alth

Ma

na

ge

r

CloudController

Service Pool

Cache

BlobStore

Connector

Ext. Services

Apps in warden

Build Packs Dir Server

PROFILER

PR

PR

PR PR

PR

PR

PR PR PR

PR

Page 28: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

28

CloudFoundry 2.0

CF Client Eclipse Plugin MobilePC

GoRouter

NATS

Mysql Redis Mongo

.....

.

NATS MSGHTTP MSG

DEA

UAA

He

alth

Ma

na

ge

r

CloudController

Service Pool

Cache

BlobStore

Connector

Ext. Services

Apps in warden

Build Packs Dir Server

PROFILER

PR

PR

PR PR

PR

PR

PR PR PR

PR

Analysis Server

Page 29: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

29

Analysis Server

MessageCorrelation

MessageType Resolution

MessageSource Resolution

MessageTarget Resolution

MessageCorrelation

MessageCorrelation

MessageFiltering

SequenceExec Extraction

SequenceExtraction

SequenceDiagram Docs

MessageTemplates

MessagePattern Changes

Page 30: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Documentation Generation

Message Exchange Patterns

Page 31: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

31

Message Exchange PatternsChannel Name: dea.advertise

Content: Name Type

app_id_to_count Hash

available_memory FixNum

id String

prod FalseClass

stacks Array

Subscribers: Cloud_Controller

Publishers: DEA

Page 32: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Documentation Generation

Message Exchange Sequences

Page 33: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

33

Message Exchange Sequences

Message Snapshots:

Page 34: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

34

Message Exchange Sequences

Message Snapshots:

Page 35: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

System Evolution

Message Pattern Changes

Page 36: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

36

Message Pattern ChangesChannel Name: dea.advertise

Content: Name Type

app_id_to_count Hash

available_memory FixNum

id String

prod NilClass FalseClass

runtimes stacks Array

Subscribers: Cloud_Controller

Publishers: DEA

Page 37: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Evaluations

Page 38: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Evaluations

releasing the documentation

to the CloudFoundry community

Page 39: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

39

Evaluation

5 days of active emailing / twitting people11 people responded

Page 40: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

40

Evaluation

Page 41: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

41

Evaluation

Page 42: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

42

Evaluation

Page 43: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

43

Evaluation

Page 44: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

44

Evaluation

Page 45: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Challenges

Page 46: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Challenges

signature-based AOP is restrictive

Page 47: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Challenges

manual intervention is required

Page 48: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Future Plans

Page 49: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Future Plans

developing a DSL for instrumentation

Page 50: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Future Plans

assessing generalizability

Page 51: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Future Plans

software resiliency tests

Page 52: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Future Plans

increased automation

Page 53: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Future Plans

code dependency analysis

Page 54: Automated Abstraction of Flow of Control in a System of Distributed  Software Components

Contact

Nima Kaviani

[email protected]

@nimak