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

Post on 18-Dec-2014

1.607 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

Problem

Understanding Distributed Open-source Cloud Platforms

Problem

Problem

Track System Evolution

Problem

Austin Bexar Cactus Diablo

Essex

Folsom

Grizzly

Havana

Problem

Austin Bexar Cactus Diablo

Essex

Folsom

Grizzly

Havana

version 1.0

version 2.0

Problem

Austin Bexar Cactus Diablo

Essex

Folsom

Grizzly

Havana

version 1.0

version 2.0Online Enterprise

Problem

Software Resiliency & Testing

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

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

Code Introspection

capturing message exchanges

Code Introspection

capturing message exchanges

Aquarium: Aspect-oriented programming for Ruby

point-cuts advicejoin-points

15

Aquarium

class Test def test_method puts “Hello World!” endend

16

Aquarium

class Test def test_method puts “Hello World!” endend

join-points

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

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

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

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

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

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

Code Inspection

AOP - drawback

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

Capturing NATS

Capturing REST

REST Http Client

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

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

29

Analysis Server

MessageCorrelation

MessageType Resolution

MessageSource Resolution

MessageTarget Resolution

MessageCorrelation

MessageCorrelation

MessageFiltering

SequenceExec Extraction

SequenceExtraction

SequenceDiagram Docs

MessageTemplates

MessagePattern Changes

Documentation Generation

Message Exchange Patterns

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

Documentation Generation

Message Exchange Sequences

33

Message Exchange Sequences

Message Snapshots:

34

Message Exchange Sequences

Message Snapshots:

System Evolution

Message Pattern Changes

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

Evaluations

Evaluations

releasing the documentation

to the CloudFoundry community

39

Evaluation

5 days of active emailing / twitting people11 people responded

40

Evaluation

41

Evaluation

42

Evaluation

43

Evaluation

44

Evaluation

Challenges

Challenges

signature-based AOP is restrictive

Challenges

manual intervention is required

Future Plans

Future Plans

developing a DSL for instrumentation

Future Plans

assessing generalizability

Future Plans

software resiliency tests

Future Plans

increased automation

Future Plans

code dependency analysis

Contact

Nima Kaviani

nkaviani@cs.ubc.ca

@nimak

top related