Automated Abstraction of Flow of Control in a System of Distributed Software Components

2,894 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,894
On SlideShare
0
From Embeds
0
Number of Embeds
1,705
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Automated Abstraction of Flow of Control in a System of Distributed Software Components

  1. 1. 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
  2. 2. Problem Understanding Distributed Open-source Cloud Platforms
  3. 3. Problem
  4. 4. Problem Track System Evolution
  5. 5. Problem Austin Bexar Cactus Diablo Essex Folsom Grizzly Havana
  6. 6. Problem Austin Bexar Cactus Diablo Essex Folsom Grizzly Havana version 1.0 version 2.0
  7. 7. Problem Austin Bexar Cactus Diablo Essex Folsom Grizzly Havana version 1.0 version 2.0 Online Enterprise
  8. 8. Problem Software Resiliency & Testing
  9. 9. 11 CloudFoundry 1.0 CF Client Eclipse Plugin MobilePC Router NATS Mysql Redis Mongo ..... . NATS MSGHTTP MSG DEA UAA Health Manager Stager Cloud Controller Cloud Controller Service Pool Cache BlobStore
  10. 10. 12 CloudFoundry 2.0 CF Client Eclipse Plugin MobilePC GoRouter NATS Mysql Redis Mongo ..... . NATS MSGHTTP MSG DEA UAA Health Manager Cloud Controller Cloud Controller Service Pool Cache BlobStore Connector Ext. Services Apps in warden Build Packs Dir Server
  11. 11. Code Introspection capturing message exchanges
  12. 12. Code Introspection capturing message exchanges Aquarium: Aspect-oriented programming for Ruby point-cuts advicejoin-points
  13. 13. 15 Aquarium class Test def test_method puts “Hello World!” end end
  14. 14. 16 Aquarium class Test def test_method puts “Hello World!” end end join-points
  15. 15. 17 Aquarium class Test def test_method puts “Hello World!” end end 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
  16. 16. 18 Aquarium class Test def test_method puts “Hello World!” end end 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
  17. 17. 19 Aquarium class Test def test_method puts “Hello World!” end end 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
  18. 18. 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_method end
  19. 19. 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_method end rewrite
  20. 20. 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_method end
  21. 21. Code Inspection AOP - drawback
  22. 22. 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 Signature Dependent
  23. 23. Capturing NATS
  24. 24. Capturing REST REST Http Client
  25. 25. 27 CloudFoundry 2.0 CF Client Eclipse Plugin MobilePC GoRouter NATS Mysql Redis Mongo ..... . NATS MSGHTTP MSG DEA UAA Health Manager Cloud Controller 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
  26. 26. 28 CloudFoundry 2.0 CF Client Eclipse Plugin MobilePC GoRouter NATS Mysql Redis Mongo ..... . NATS MSGHTTP MSG DEA UAA Health Manager Cloud Controller 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
  27. 27. 29 Analysis Server Message Correlation Message Type Resolution Message Source Resolution Message Target Resolution Message Correlation Message Correlation Message Filtering Sequence Exec Extraction Sequence Extraction Sequence Diagram Docs Message Templates Message Pattern Changes
  28. 28. Documentation Generation Message Exchange Patterns
  29. 29. 31 Message Exchange Patterns Channel 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
  30. 30. Documentation Generation Message Exchange Sequences
  31. 31. 33 Message Exchange Sequences Message Snapshots:
  32. 32. 34 Message Exchange Sequences Message Snapshots:
  33. 33. System Evolution Message Pattern Changes
  34. 34. 36 Message Pattern Changes Channel 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
  35. 35. Evaluations
  36. 36. Evaluations releasing the documentation to the CloudFoundry community
  37. 37. 39 Evaluation 5 days of active emailing / twitting people 11 people responded
  38. 38. 40 Evaluation
  39. 39. 41 Evaluation
  40. 40. 42 Evaluation
  41. 41. 43 Evaluation
  42. 42. 44 Evaluation
  43. 43. Challenges
  44. 44. Challenges signature-based AOP is restrictive
  45. 45. Challenges manual intervention is required
  46. 46. Future Plans
  47. 47. Future Plans developing a DSL for instrumentation
  48. 48. Future Plans assessing generalizability
  49. 49. Future Plans software resiliency tests
  50. 50. Future Plans increased automation
  51. 51. Future Plans code dependency analysis
  52. 52. Contact Nima Kaviani nkaviani@cs.ubc.ca @nimak

×