HI devs, To align with architectural refactoring suggestion, I would like to modify the module structure as below. We no longer need different type of Gfac providers with that.
core { has all core interfaces and basic classes of gfac-core , orchestrator-core , message-core , monitor core, registry core, workflow-core} service - all thrift services and service handlers orchestrator - orchestrator specific classes *task-adapter *- *replace gfac nested module with this.* message - amqp implemention distribution XBaya server - { use different mode input to start server as orchestrator , Gfac or/and api-server } commons registry app-catalog security workflow XBaya-gui Integration-test Thanks, Shameera. On Sat, May 30, 2015 at 12:34 PM, Shameera Rathnayaka < shameerai...@gmail.com> wrote: > Hi Suresh, > >> >> I do not think bundling all core into one module is a good idea. When >> there is distinct enough functionality why combine? There are advantages >> with micro-service architecture both in terms of rapid evolution as well as >> ease of light weight deployments. For instance lets take API server and >> Orchestrator example. API server gets hit for all the calls, but only a >> fraction of them are intended for Orchestrator. Even in your approach of >> starting different services from one module, the dependencies are all class >> loaded (unless we put sophistication in startup scripts). >> > >> If two modules have significant overlapping functionality then + 1 to >> discuss those as case by case and combine them as necessary. But can you >> explain a little more on why you want to combine distinct functional >> modules? >> > > A good example is Apache Spark, it is a rapid evolving project, and it > also has different major components ( Sprak SQL, Spark Streaming, MLlib and > GraphX) > > but all share one core component[1]. No doubt they need light weight > deployments more than us, as they have higher user community. So why do we > make our repository bulky with modules unless it doesn't provide any > considerable advantage. > > If we really w > ant to > separate distribution bundle for each component ( apiServer , Orchestrator > and Gfac ) let > ' > s use different bin.xml file > s > to do it instead of using different modules. But reality is we only use > all in one distribution. > > Thanks, > Shameera. > > >> >> Suresh >> >> On May 29, 2015, at 11:29 AM, Suresh Marru <sma...@apache.org> wrote: >> >> + 1. >> >> I was planning to bring up this issue also. Probably it will not address >> what you are raising, but here is a tree output from airavata labs code I >> was toying with locally. I did not yet compare it with what you proposed, I >> will do so later today. >> >> ├── airavata-api >> │ ├── airavata-api-interface-descriptions >> │ ├── airavata-api-java-stubs >> │ ├── airavata-api-server >> │ ├── airavata-data-models >> │ ├── api-security-manager >> ├── clients >> │ ├── airavata-client-cpp-sdk >> │ ├── airavata-client-java-sdk >> │ ├── airavata-client-php-sdk >> │ ├── airavata-client-python-sdk >> │ ├── airavata-sample-examples >> │ └── airavata-xbaya-gui >> ├── components >> │ ├── commons >> │ ├── component-interface-descriptions >> │ ├── component-services >> │ │ ├── credential-store-service >> │ │ ├── orchestrator-service >> │ │ ├── task-executor-service >> │ │ └── workflow-interpreter-service >> │ ├── component-clients >> │ │ ├── credential-store-client >> │ │ ├── orchestrator-client >> │ │ ├── task-executor-client >> │ │ ├── workflow-interpreter-client >> │ │ └── messaging >> │ ├── task-adaptors >> │ │ ├── compute >> │ │ └── data-movement >> │ ├── registry >> │ │ ├── app-catalog >> │ │ ├── experiment-catalog >> │ │ └── resource-catalog >> │ └── workflow-interpreter >> ├── distribution >> ├── integration-tests >> >> >> >> On May 29, 2015, at 10:15 AM, Shameera Rathnayaka <shame...@apache.org> >> wrote: >> >> Hi Devs, >> >> As we are using different modules to package different type of >> functionalities, which will help us to maintain loosely couple codes. Now >> the project has 49 leaf module ( one to hit half century :) ). If we allow >> project to grow this way, having too fine grain modules will be huge >> headache in future. IMO we should clean this ASAP before it become really >> mess. Actually we half way there, I experienced cyclic dependency issues >> when I was writing workflow implementation and email monitoring. Please see >> the modules in current repo below. >> >> <module-name> ( <num of child modules> ) >> >> modules ( 43 ) >> app-catalog ( 2 ) >> commons ( 1 ) >> configurations ( 2 ) >> credential-store ( 3 ) >> distribution ( 8 ) >> gfac ( 10 ) >> integration test ( 1 ) >> messaging ( 2 ) >> orchestrator ( 3 ) >> registry ( 3 ) >> security ( 1 ) >> server ( 1 ) >> test-suit ( 1 ) >> workflow ( 1 ) >> workflow-modal ( 3 ) >> xbaya ( 1 ) >> airavata-api ( 5 ) >> tools ( 1 ) >> >> Most of the current modules have interfaces and implementations together, >> but this violate our main goal which reduce inter module dependencies. >> Following is what I am suggesting, WDYS? >> >> core { has all core interfaces and basic classes of gfac-core , >> orchestrator-core , message-core , monitor core, registry core, >> workflow-core} >> service - all thrift services and service handlers >> orchestrator - orchestrator specific classes >> gfac >> SSH >> BES >> Local >> message - amqp implemention >> distribution >> XBaya >> server - { use different mode input to start server as orchestrator >> , Gfac or/and api-server } >> commons >> registry >> app-catalog >> security >> Workflow >> XBaya-gui >> Integration-test >> >> Thanks, >> Shameera. >> >> >> >> > > > -- > Best Regards, > Shameera Rathnayaka. > > email: shameera AT apache.org , shameerainfo AT gmail.com > Blog : http://shameerarathnayaka.blogspot.com/ > -- Best Regards, Shameera Rathnayaka. email: shameera AT apache.org , shameerainfo AT gmail.com Blog : http://shameerarathnayaka.blogspot.com/