190 likes | 279 Views
Towards a unified Cyberaide architecture. Fugang Wang May 29, 2009. Agenda: Current architecture study and comparison; Analysis of the current shell architecture; Possible (three) approaches to unify the two project. Agenda: Current architecture study and comparison;
E N D
Towards a unified Cyberaide architecture Fugang Wang May 29, 2009
Agenda: • Current architecture study and comparison; • Analysis of the current shell architecture; • Possible (three) approaches to unify the two project
Agenda: • Current architecture study and comparison; • Analysis of the current shell architecture; • Possible (three) approaches to unify the two project
Runtime Web browser Shell CLI Client Java Client C# … Deploy time - Tomcat Web client code Shell CLI Web Service JavaScript code Resources for portal pages Shell CLI Agent service CLI Engine & Interface Mashup App Logic Infrastructure Access Workflow, meta-scheduling, user, vo, and more Web Service Mediator service 3rd party resources App Logics Command line tools and APIs from Globus, CoG Kit, MyProxy Command line tools and APIs from Globus, CoG Kit, MyProxy
Agenda: • Current architecture study and comparison; • Analysis of the current shell architecture; • Possible (three) approaches to unify the two project
Shell CLI Client App logics is not exposed as Web service, instead, Shell CLI is. Current Shell CLI is not capable of behaving as a script interpreter. Current Shell CLI web service and client show only a proof-of-concept that WS-Security is supported. No multi-user and session support. => Current shell works only on a server and in single user mode Java Client C# … Shell CLI Web Service Shell CLI CLI Engine & Interface App Logic • Most functionalities proposed yet to be implemented, among which the most important are: multi-user and session support; meta-scheduling Infrastructure Access Workflow, meta-scheduling, user, vo, and more Command line tools and APIs from Globus, CoG Kit, MyProxy
Agenda: • Current architecture study and comparison; • Analysis of the current shell architecture; • Possible (three) approaches to unify the two project
Runtime Web browser Shell CLI Client Java Client C# … Deploy time - Tomcat Web client code Shell CLI Web Service JavaScript code Resources for portal pages Shell CLI Agent service CLI Engine & Interface Mashup App Logic Infrastructure Access Workflow, meta-scheduling, user, vo, and more Web Service Mediator service 3rd party resources App Logics Command line tools and APIs from Globus, CoG Kit, MyProxy Command line tools and APIs from Globus, CoG Kit, MyProxy
Runtime Web browser Shell CLI Client Java Client C# … Deploy time - Tomcat Web client code Shell CLI Web Service JavaScript code Resources for portal pages Shell CLI Agent service CLI Engine & Interface Mashup App Logic Infrastructure Access Workflow, meta-scheduling, user, vo, and more Web Service Mediator service 3rd party resources App Logics Command line tools and APIs from Globus, CoG Kit, MyProxy
Side by side solution: • Pros: • The easiest way to mix up the two projects; • Least change; • The JavaScript project should work. • Cons: • Parts with low cohesion are put into a module that makes the already cumbersome module even more complicated; • Does not solve the current problems of the shell. • Works need to be done if adopted: • Mix up the Mediator service from JavaScript project with Shell-Cli. The most complicated part would be the maven project management configuration.
Shell CLI Client Shell Client Java Client C# … Java Client C# … Shell CLI Web Service Shell CLI Web Service User Activity User Activity CLI Engine & Interface Cyberaide WS Shell CLI Workflow, meta-scheduling, user, vo, and more CLI Engine & Interface Cyberaide Shell App Logic Cyberaide Core/Mediator Web Service Infrastructure Access Workflow, meta-scheduling, user, vo, and more Infrastructure Access Command line tools and APIs from Globus, CoG Kit, MyProxy Command line tools and APIs from Globus, CoG Kit, MyProxy
Split tier solution: • Pros: • Efforts needed comparable to the previous one; • Keep only the code that dependent with Globus/CoG Kit into one mediator server; • The mediator service could be reused by both projects when performing interaction with underlying cyberinfrastructure. • With some modification of the current shell it could support multi-user. • Cons: • The functionalities of the shell(except infrastructure access related operations) are still not shared among users. • Works need to be done if adopted: • Split the current Shell-cli; merge the functionalities related to infrastructure access from the two projects into one module; maven project management need to be modified.
Shell Client Client in other language Java Client C# … Shell Java Client Shell CLI Web Service User Activity User Activity C# CLI Engine & Interface CLI Engine & Interface Cyberaide WS … Workflow, meta-scheduling, user, vo, and more Cyberaide Client Cyberaide Shell Cyberaide Core/Mediator Web Service Web Service Workflow, meta-scheduling, user, vo, and more Infrastructure Access Infrastructure Access Command line tools and APIs from Globus, CoG Kit, MyProxy Command line tools and APIs from Globus, CoG Kit, MyProxy
Separated shell module solution: • Pros: • Isolated business logic from user interface; • Fully support share and collaboration among users; • Removed the current shell-cli-client tier. • Cons: • Drastic change of the current code; • The web service would be cumbersome since every functionality would be exposed through web service; • Clients in other language will have to develop their own interface, CLI orother(If the current shell cannot behave as a script interpreter then we have to do this any way; otherwise we still can add a web service layer upon the shell CLI and clients from other language would be client of that service) • Works need to be done if adopted: • Change virtually every piece of code currently have; remodel the maven project management
Runtime Web browser Deploy time - Tomcat Web client code JavaScript code Resources for portal pages 3rd party resources Mashup Agent service Cyberaide Core/Mediator Web Service Web Service Workflow, meta-scheduling, user, vo, and more Infrastructure Access Infrastructure Access Command line tools and APIs from Globus, CoG Kit, MyProxy Command line tools and APIs from Globus, CoG Kit, MyProxy
Appendix: Current code base tree of the Cybershell project
|-- Version.java |-- account | |-- IUserAccount.java | |-- UserAccountFile.java | |-- UserAccountMem.java | `-- UserAccountUtil.java |-- calendar | |-- CalendarCLI.java | |-- CalendarTask.java | |-- CalendarTimer.java | |-- CalendarUtil.java | |-- GoogleCalendar.java | |-- GridshellCalendarEventEntry.java | |-- Less.java | |-- StringContainer.java | `-- package.html |-- core | |-- CoGFilter.java | |-- CoGObject.java | |-- CoGObjectsUtil.java | |-- CoGPrinter.java | |-- CoGTypes.java | |-- CoGTypesUtil.java | |-- CogException.java | |-- CommandPlugin.java | |-- CyberShell.java | |-- CyberaideProperties.java | |-- ObjTest.java | |-- ObjectCLI.java | |-- SampleCLI.java | |-- ShellContext.java | |-- ShellInterpreter.java | |-- ShellManager.java | |-- deprecated | | |-- CogElement.java | | |-- CogElementArray.java | | |-- CogElementArrayInterface.java | | |-- CogElementInterface.java | | `-- package.html | `-- package.html |-- execution | |-- Execution.java | |-- ExecutionCLI.java | |-- Login.java | |-- LoginCLI.java | |-- SubmitCLI.java | `-- package.html |-- info | |-- InfoCLI.java | |-- InfoService.java | |-- ManCLI.java | |-- idea.txt | |-- package.html | `-- timer | |-- StopWatch.java | |-- Timer.java | |-- TimerListener.java | `-- package.html |-- io | |-- StandardIO.java | |-- StandardInputStream.java | `-- StandardOutputStream.java
|-- sh | |-- ProcFilesystem.java-old | |-- RemoteSysInfoInterface.java-old | |-- ScriptExecute.java-old | |-- ScriptStatus.java-old | |-- SysInfo.java-old | |-- SysInfoInterface.java-old | |-- SysLoad.java-old | |-- SysProbe.java-old | |-- SysinfoCLI.java | |-- XMLHTMLFormat.java-old | |-- l | `-- package.html |-- ssh | |-- Execution.java | |-- ExecutionSSH.java | |-- JobManager.java | |-- ResourceException.java | |-- SSH.java | |-- SSHJob.java | |-- SSHJobEventListener.java | |-- SecureSession.java | |-- package.html | `-- testssh.java |-- transcript | |-- IBMApi.java | |-- IBMDigester.java | |-- IbmCLI.java | |-- TranslateService.java | |-- User.java | `-- package.html |-- job | |-- Experiment.java | |-- ExperimentCLI.java | |-- ExperimentManager.java | |-- GlobusWSGram.java | |-- Workflow.java | `-- WorkflowNode.java |-- package.html |-- people | |-- PeopleSetCLI.java | `-- package.html |-- qbets | |-- Qbets.java | `-- QbetsCLI.java |-- scheduling | |-- Scheduler.java | |-- SchedulerCLI.java | |-- SchedulerFIFO.java | |-- SchedulerFactory.java | `-- package.html |-- security | |-- Myproxy.java | |-- SecurityCLI.java | `-- package.html |-- set | |-- CoGID.java | |-- CoGSet.java | |-- CoGSetUtil.java | `-- SetCLI.java
|-- util | |-- ConditionVariable.java | |-- Path.java | `-- package.html |-- vocli | `-- VOCLI.java |-- volib | |-- Admin.java | |-- Job.java | `-- Proxy.java |-- web | |-- container | | |-- Agent.java | | `-- package.html | |-- mediator | | |-- CogMediator.java | | |-- CogQueue.java | | |-- Executable.java | | |-- WFKarajan.java | | |-- WFStatus.java | | |-- WFType.java | | |-- Workflow.java | | `-- package.html | `-- package.html `-- ws 24 directories, 123 files