SlideShare una empresa de Scribd logo
1 de 11
Plug in style architecture for enterprise applications Approaches, exploration of some details  - by Kinshuk Adhikary ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Some of the terms used here are Eclipse style – see eclipse.org
There are two approaches – one,  the master center The core is  aware  of the life-cycle of plugin objects CORE – a repository of  ALL common concerns PLUGIN app, say HR Core is made aware whenever the plugin creates a new object, say Person AOP or other instrumentation can be used to communicate from the plugin Core uses this knowledge to update its identity store, ACLs or other KBs In extreme scenarios, core can even influence object creation, but this is NOT recommended
The 2 nd  approach –  one ring rules them all A non-intrusive core that mostly supplies knowledge (I like this one ! ) A little difficult, it entails “giving up the appearence of centralization while retaining the core of it :-)” CORE – is mainly a rules  repository, a knowledge base,  and a few common concerns  Plugin proxy #2 Plugin proxy #1 New plugin or  legacy app # 1 New plugin or  legacy app # 2 HTTP style messaging - via integration medium Every object in the proxy apps has “request scope” It only receives and processes just as much info as the core needs to process a KB The core has one main responsibility –  to supply an answer if asked a question . It may insist on being kept aware of other minimal things, to build its own KB It can also do things like keeping audit trail Each app is pretty much independent, unless the core has something better to offer
A hybrid of the two approaches may be nicer Because an enterprise is too complex a noodle to unravel easily Familiar with this kind of an enterprise diagram ? If not, you soon will be,  give it 5 years of IT success . Central HR The CEO dashboard Sales and CRM Accounts Document management Tech or domain apps Dept # 1 Time/issue trackers Data vendors Vendor locked ERP Region # 5 Project management Real time factory apps Partner vendors Management Users A PLUG-IN approach may resolve this problem somewhat. An ESB may  not, esp. if all the noodle goes into the ESB.
Minimal plugin responsibilities It must decide which of the core's interfaces it needs to implement to integrate itself sufficiently to the core, in addition to  mandatory ones It has to declare itself to the core as a valid plugin It has to implement the interfaces extended by the core (contribute to the extensions) It has to submit a list of such “contribution points” corresponding to each “extension point” it integrates with in the core, i.e. which classes in the plugin implement the core's mandated interfaces  It may have to call-back the core on create/update/delete of objects, via interceptors It may have to seek “answers” from core on permission, security, workflow etc. It may want to substitute the core's default resources as far as where this plugin is involved – by supplying a set of “features” Contributions by plugin Other extensions implemented Call-back to certain core methods Plugin local data and logic (optional) – a list of “features” Contribution points list
Responsibilities of the core It must decide what kinds of behavior it can extend to make plugins work better  It has to pick valid plugins on every start-up It has to call the plugin's implementations to enforce required behavior If the plugin supplies features (resources), then it has to substitute those It may have to maintain identities of objects It may have to maintain ACLs and supply permission flags on request It can also maintain higher level logics/rules about the interactions between various plugins and plugin objects – for example Person with Vendor The design of the core is really the  heart of a well designed plugin-style application set.
What sort of contributions does the core expect ? PostCreate, PostSave, PostDelete WriteLog, DoAudit, DoExport, DoImport GetPermissionEnvironment, GetObjectMetadata, GetObjectTree etc etc. Basically, any method that “will be implemented by the plugin but will be called by the core”. On a higher level... The plugin must supply the data to implement object identity, object security, logs, audits Other plugins when calling this one would only use some specified implementations and go via the core etc.
Resource sharing considerations Both the core as well as the plug-in may need to deal with the same resource. So, it is a good idea to split the resource (object, database row, file etc.) into some parts MetaData – for use mainly by the  core and maybe by other plugins Data, (fat) - for use mainly by the  plugin and rarely or almost  never by the core The shape of most business related objects would be something like the one at left IdentityData - for use by everyone
Build, test and distribution considerations The core can be a single build The individual plugins can be separate builds A combination would have to go thru automated tests for validity etc. In general, creating a good test bench is a good investment and makes distributed design and development easy Licensing considerations For SaaS type apps, this can be quite important The plugin approach makes it possible to introduce pay-by-plugin licenses
Design and analysis considerations What is the least, the absolute minimum the core ought to actually do ? To do so, what would be the least expectations from any arbitrary plugin ? Can useful plugin's be classified, by behaviors they (the plugin's) will exhibit ? What common utility does the core provide for each such class of plugin ? What therefore are the extension points the core extends to each class of plugin ? Will the core get more “loaded” as more and more plugins get “added” ? Others...
THANKS, To discuss please feel free to email at kinshuk_in@yahoo.com

Más contenido relacionado

La actualidad más candente

Software Development Innovation in Practice - 33rd Degree 2014
Software Development Innovation in Practice - 33rd Degree 2014Software Development Innovation in Practice - 33rd Degree 2014
Software Development Innovation in Practice - 33rd Degree 2014Wojciech Seliga
 
Go or No-Go: Operability and Contingency Planning at Etsy.com
Go or No-Go: Operability and Contingency Planning at Etsy.comGo or No-Go: Operability and Contingency Planning at Etsy.com
Go or No-Go: Operability and Contingency Planning at Etsy.comJohn Allspaw
 
UCD / IxD Introduction - User centric design, interaction design
UCD / IxD Introduction - User centric design, interaction designUCD / IxD Introduction - User centric design, interaction design
UCD / IxD Introduction - User centric design, interaction designsdavis6b
 
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013lokori
 
Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...Wojciech Seliga
 
Devoxx Poland 2015: 5-10-15 years with Java
Devoxx Poland 2015: 5-10-15 years with Java Devoxx Poland 2015: 5-10-15 years with Java
Devoxx Poland 2015: 5-10-15 years with Java Wojciech Seliga
 
SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...
SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...
SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...Wojciech Seliga
 
Interaction designers vs algorithms
Interaction designers vs algorithmsInteraction designers vs algorithms
Interaction designers vs algorithmscxpartners
 
Ten lessons I painfully learnt while moving from software developer
to entrep...
Ten lessons I painfully learnt while moving from software developer
to entrep...Ten lessons I painfully learnt while moving from software developer
to entrep...
Ten lessons I painfully learnt while moving from software developer
to entrep...Wojciech Seliga
 
Passionate Product Ownership
Passionate Product OwnershipPassionate Product Ownership
Passionate Product OwnershipAaron Sanders
 
Developer plantations - colonialism of XXI century (GeeCON 2017)
Developer plantations - colonialism of XXI century (GeeCON 2017)Developer plantations - colonialism of XXI century (GeeCON 2017)
Developer plantations - colonialism of XXI century (GeeCON 2017)Wojciech Seliga
 
Cloud lunchn learn_howtobecomeacloudarchitect_part1
Cloud lunchn learn_howtobecomeacloudarchitect_part1Cloud lunchn learn_howtobecomeacloudarchitect_part1
Cloud lunchn learn_howtobecomeacloudarchitect_part1Turja Narayan Chaudhuri
 
[EN] Great software development quotes
[EN] Great software development quotes[EN] Great software development quotes
[EN] Great software development quotesEudris Cabrera
 
Interusability: designing a coherent system UX
Interusability: designing a coherent system UXInterusability: designing a coherent system UX
Interusability: designing a coherent system UXClaire Rowland
 
Cloud lunchn learn_howtobecomeacloudarchitect_part3
Cloud lunchn learn_howtobecomeacloudarchitect_part3Cloud lunchn learn_howtobecomeacloudarchitect_part3
Cloud lunchn learn_howtobecomeacloudarchitect_part3Turja Narayan Chaudhuri
 
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRYLizzyManz
 
Rethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - BrandoliniRethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - BrandoliniCodemotion
 
Cloud lunchn learn_howtobecomeacloudarchitect_part2
Cloud lunchn learn_howtobecomeacloudarchitect_part2Cloud lunchn learn_howtobecomeacloudarchitect_part2
Cloud lunchn learn_howtobecomeacloudarchitect_part2Turja Narayan Chaudhuri
 
Brain Cell IT - About our company
Brain Cell IT - About our companyBrain Cell IT - About our company
Brain Cell IT - About our companyBrain Cell IT
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneEdorian
 

La actualidad más candente (20)

Software Development Innovation in Practice - 33rd Degree 2014
Software Development Innovation in Practice - 33rd Degree 2014Software Development Innovation in Practice - 33rd Degree 2014
Software Development Innovation in Practice - 33rd Degree 2014
 
Go or No-Go: Operability and Contingency Planning at Etsy.com
Go or No-Go: Operability and Contingency Planning at Etsy.comGo or No-Go: Operability and Contingency Planning at Etsy.com
Go or No-Go: Operability and Contingency Planning at Etsy.com
 
UCD / IxD Introduction - User centric design, interaction design
UCD / IxD Introduction - User centric design, interaction designUCD / IxD Introduction - User centric design, interaction design
UCD / IxD Introduction - User centric design, interaction design
 
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013
 
Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...
 
Devoxx Poland 2015: 5-10-15 years with Java
Devoxx Poland 2015: 5-10-15 years with Java Devoxx Poland 2015: 5-10-15 years with Java
Devoxx Poland 2015: 5-10-15 years with Java
 
SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...
SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...
SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...
 
Interaction designers vs algorithms
Interaction designers vs algorithmsInteraction designers vs algorithms
Interaction designers vs algorithms
 
Ten lessons I painfully learnt while moving from software developer
to entrep...
Ten lessons I painfully learnt while moving from software developer
to entrep...Ten lessons I painfully learnt while moving from software developer
to entrep...
Ten lessons I painfully learnt while moving from software developer
to entrep...
 
Passionate Product Ownership
Passionate Product OwnershipPassionate Product Ownership
Passionate Product Ownership
 
Developer plantations - colonialism of XXI century (GeeCON 2017)
Developer plantations - colonialism of XXI century (GeeCON 2017)Developer plantations - colonialism of XXI century (GeeCON 2017)
Developer plantations - colonialism of XXI century (GeeCON 2017)
 
Cloud lunchn learn_howtobecomeacloudarchitect_part1
Cloud lunchn learn_howtobecomeacloudarchitect_part1Cloud lunchn learn_howtobecomeacloudarchitect_part1
Cloud lunchn learn_howtobecomeacloudarchitect_part1
 
[EN] Great software development quotes
[EN] Great software development quotes[EN] Great software development quotes
[EN] Great software development quotes
 
Interusability: designing a coherent system UX
Interusability: designing a coherent system UXInterusability: designing a coherent system UX
Interusability: designing a coherent system UX
 
Cloud lunchn learn_howtobecomeacloudarchitect_part3
Cloud lunchn learn_howtobecomeacloudarchitect_part3Cloud lunchn learn_howtobecomeacloudarchitect_part3
Cloud lunchn learn_howtobecomeacloudarchitect_part3
 
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY
 
Rethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - BrandoliniRethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - Brandolini
 
Cloud lunchn learn_howtobecomeacloudarchitect_part2
Cloud lunchn learn_howtobecomeacloudarchitect_part2Cloud lunchn learn_howtobecomeacloudarchitect_part2
Cloud lunchn learn_howtobecomeacloudarchitect_part2
 
Brain Cell IT - About our company
Brain Cell IT - About our companyBrain Cell IT - About our company
Brain Cell IT - About our company
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it done
 

Similar a Plugin style EA

Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCPwhbath
 
term paper for cbd models
term paper for cbd modelsterm paper for cbd models
term paper for cbd modelsSukhdeep Singh
 
Discussion 1 post responses.Please respond to the following.docx
Discussion 1 post responses.Please respond to the following.docxDiscussion 1 post responses.Please respond to the following.docx
Discussion 1 post responses.Please respond to the following.docxcuddietheresa
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure rupeshchanchal
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)FarjanaAhmed3
 
30 days or less: New Features to Production
30 days or less: New Features to Production30 days or less: New Features to Production
30 days or less: New Features to ProductionKarthik Gaekwad
 
Best practice adoption (and lack there of)
Best practice adoption (and lack there of)Best practice adoption (and lack there of)
Best practice adoption (and lack there of)John Pape
 
Component design and implementation tools
Component design and implementation toolsComponent design and implementation tools
Component design and implementation toolsKalai Vani V
 
Ci tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsCi tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsLinards Liep
 
Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3Diane Allen
 
System analysis and design
System analysis and designSystem analysis and design
System analysis and designRobinsonObura
 
Workshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfWorkshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfTobiasGoeschel
 
CucumberSeleniumWD
CucumberSeleniumWDCucumberSeleniumWD
CucumberSeleniumWDVikas Sarin
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introductionVishal Singh
 
How to improve Developer Documentations ?
How to improve Developer Documentations ?How to improve Developer Documentations ?
How to improve Developer Documentations ?Utsav Parashar
 
Agile Business Intelligence
Agile Business IntelligenceAgile Business Intelligence
Agile Business IntelligenceDavid Portnoy
 

Similar a Plugin style EA (20)

Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCP
 
term paper for cbd models
term paper for cbd modelsterm paper for cbd models
term paper for cbd models
 
Discussion 1 post responses.Please respond to the following.docx
Discussion 1 post responses.Please respond to the following.docxDiscussion 1 post responses.Please respond to the following.docx
Discussion 1 post responses.Please respond to the following.docx
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
 
Quality Software Development
Quality Software DevelopmentQuality Software Development
Quality Software Development
 
L16 Documenting Software
L16 Documenting SoftwareL16 Documenting Software
L16 Documenting Software
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
30 days or less: New Features to Production
30 days or less: New Features to Production30 days or less: New Features to Production
30 days or less: New Features to Production
 
Best practice adoption (and lack there of)
Best practice adoption (and lack there of)Best practice adoption (and lack there of)
Best practice adoption (and lack there of)
 
oracle
oracleoracle
oracle
 
Component design and implementation tools
Component design and implementation toolsComponent design and implementation tools
Component design and implementation tools
 
Ci tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsCi tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepins
 
Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3
 
System analysis and design
System analysis and designSystem analysis and design
System analysis and design
 
Workshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfWorkshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdf
 
CucumberSeleniumWD
CucumberSeleniumWDCucumberSeleniumWD
CucumberSeleniumWD
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
 
How to improve Developer Documentations ?
How to improve Developer Documentations ?How to improve Developer Documentations ?
How to improve Developer Documentations ?
 
Functional spec
Functional specFunctional spec
Functional spec
 
Agile Business Intelligence
Agile Business IntelligenceAgile Business Intelligence
Agile Business Intelligence
 

Plugin style EA

  • 1.
  • 2. There are two approaches – one, the master center The core is aware of the life-cycle of plugin objects CORE – a repository of ALL common concerns PLUGIN app, say HR Core is made aware whenever the plugin creates a new object, say Person AOP or other instrumentation can be used to communicate from the plugin Core uses this knowledge to update its identity store, ACLs or other KBs In extreme scenarios, core can even influence object creation, but this is NOT recommended
  • 3. The 2 nd approach – one ring rules them all A non-intrusive core that mostly supplies knowledge (I like this one ! ) A little difficult, it entails “giving up the appearence of centralization while retaining the core of it :-)” CORE – is mainly a rules repository, a knowledge base, and a few common concerns Plugin proxy #2 Plugin proxy #1 New plugin or legacy app # 1 New plugin or legacy app # 2 HTTP style messaging - via integration medium Every object in the proxy apps has “request scope” It only receives and processes just as much info as the core needs to process a KB The core has one main responsibility – to supply an answer if asked a question . It may insist on being kept aware of other minimal things, to build its own KB It can also do things like keeping audit trail Each app is pretty much independent, unless the core has something better to offer
  • 4. A hybrid of the two approaches may be nicer Because an enterprise is too complex a noodle to unravel easily Familiar with this kind of an enterprise diagram ? If not, you soon will be, give it 5 years of IT success . Central HR The CEO dashboard Sales and CRM Accounts Document management Tech or domain apps Dept # 1 Time/issue trackers Data vendors Vendor locked ERP Region # 5 Project management Real time factory apps Partner vendors Management Users A PLUG-IN approach may resolve this problem somewhat. An ESB may not, esp. if all the noodle goes into the ESB.
  • 5. Minimal plugin responsibilities It must decide which of the core's interfaces it needs to implement to integrate itself sufficiently to the core, in addition to mandatory ones It has to declare itself to the core as a valid plugin It has to implement the interfaces extended by the core (contribute to the extensions) It has to submit a list of such “contribution points” corresponding to each “extension point” it integrates with in the core, i.e. which classes in the plugin implement the core's mandated interfaces It may have to call-back the core on create/update/delete of objects, via interceptors It may have to seek “answers” from core on permission, security, workflow etc. It may want to substitute the core's default resources as far as where this plugin is involved – by supplying a set of “features” Contributions by plugin Other extensions implemented Call-back to certain core methods Plugin local data and logic (optional) – a list of “features” Contribution points list
  • 6. Responsibilities of the core It must decide what kinds of behavior it can extend to make plugins work better It has to pick valid plugins on every start-up It has to call the plugin's implementations to enforce required behavior If the plugin supplies features (resources), then it has to substitute those It may have to maintain identities of objects It may have to maintain ACLs and supply permission flags on request It can also maintain higher level logics/rules about the interactions between various plugins and plugin objects – for example Person with Vendor The design of the core is really the heart of a well designed plugin-style application set.
  • 7. What sort of contributions does the core expect ? PostCreate, PostSave, PostDelete WriteLog, DoAudit, DoExport, DoImport GetPermissionEnvironment, GetObjectMetadata, GetObjectTree etc etc. Basically, any method that “will be implemented by the plugin but will be called by the core”. On a higher level... The plugin must supply the data to implement object identity, object security, logs, audits Other plugins when calling this one would only use some specified implementations and go via the core etc.
  • 8. Resource sharing considerations Both the core as well as the plug-in may need to deal with the same resource. So, it is a good idea to split the resource (object, database row, file etc.) into some parts MetaData – for use mainly by the core and maybe by other plugins Data, (fat) - for use mainly by the plugin and rarely or almost never by the core The shape of most business related objects would be something like the one at left IdentityData - for use by everyone
  • 9. Build, test and distribution considerations The core can be a single build The individual plugins can be separate builds A combination would have to go thru automated tests for validity etc. In general, creating a good test bench is a good investment and makes distributed design and development easy Licensing considerations For SaaS type apps, this can be quite important The plugin approach makes it possible to introduce pay-by-plugin licenses
  • 10. Design and analysis considerations What is the least, the absolute minimum the core ought to actually do ? To do so, what would be the least expectations from any arbitrary plugin ? Can useful plugin's be classified, by behaviors they (the plugin's) will exhibit ? What common utility does the core provide for each such class of plugin ? What therefore are the extension points the core extends to each class of plugin ? Will the core get more “loaded” as more and more plugins get “added” ? Others...
  • 11. THANKS, To discuss please feel free to email at kinshuk_in@yahoo.com