Upload
lewis-byrd
View
213
Download
1
Embed Size (px)
Citation preview
Towards a unified Cyberaide architecture
Fugang WangMay 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
Web browser
Agent service
3rd party resources
Shell CLI Web Service
Shell CLI
App Logic
CLI Engine & Interface
Infrastructure Access
Workflow, meta-scheduling, user,
vo, and more
Command line tools and APIs from Globus, CoG Kit, MyProxy
Shell CLI Client
Java Client C# …
Mashup
Command line tools and APIs from Globus, CoG Kit, MyProxy
Mediator service
App Logics
Web Service
Web client code
JavaScript code
Resources for portal
pages
Deploy time -Tomcat
Runtime
Agenda:
Current architecture study and comparison;
Analysis of the current shell architecture;
Possible (three) approaches to unify the two project
Shell CLI
App Logic
Shell CLI Client
Shell CLI Web Service
CLI Engine & Interface
Infrastructure Access
Workflow, meta-scheduling, user,
vo, and more
Command line tools and APIs from Globus, CoG Kit, MyProxy
Java Client C# …
1. App logics is not exposed as Web service, instead, Shell CLI is.
2. 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.
3. No multi-user and session support.
=> Current shell works only on a server and in single user mode
1. Most functionalities proposed yet to be implemented, among which the most important are: multi-user and session support; meta-scheduling
Agenda:
Current architecture study and comparison;
Analysis of the current shell architecture;
Possible (three) approaches to unify the two project
Web client code
Shell CLI
App Logic
Shell CLI Client Web browser
Agent service
Mediator service
JavaScript code
3rd party resources
Shell CLI Web Service
CLI Engine & Interface
Infrastructure Access
Workflow, meta-scheduling, user,
vo, and more
Resources for portal
pages
Command line tools and APIs from Globus, CoG Kit, MyProxy
App Logics
Java Client C# …
Mashup
Command line tools and APIs from Globus, CoG Kit, MyProxy
Web Service
Deploy time -Tomcat
Runtime
Command line tools and APIs from Globus, CoG Kit, MyProxy
Web client code
Shell CLI
App Logic
Shell CLI Client Web browser
Agent service
Mediator service
JavaScript code
3rd party resources
Shell CLI Web Service
CLI Engine & Interface
Infrastructure Access
Workflow, meta-scheduling, user,
vo, and more
Resources for portal
pages
App Logics
Java Client C# …
Mashup
Web Service
Deploy time -Tomcat
Runtime
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
App Logic
Shell CLI Client
Shell CLI Web Service
CLI Engine & Interface
Infrastructure Access
Workflow, meta-scheduling, user,
vo, and more
Command line tools and APIs from Globus, CoG Kit, MyProxy
Java Client C# …
Shell Client
CLI Engine & Interface
Infrastructure Access
Workflow, meta-scheduling, user,
vo, and more
Command line tools and APIs from Globus, CoG Kit, MyProxy
Java Client C# …
Web Service
Cyberaide Shell
Cyberaide Core/Mediator
Shell CLI Web Service
User Activity
User Activity
Cyberaide WS
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
CLI Engine & Interface
Infrastructure Access
Workflow, meta-scheduling, user,
vo, and more
Command line tools and APIs from Globus, CoG Kit, MyProxy
Java Client C# …
Web Service
Cyberaide Shell
Cyberaide Core/Mediator
Shell CLI Web Service User Activity
Cyberaide WS
CLI Engine & Interface
Infrastructure Access
Workflow, meta-scheduling, user,
vo, and more
Command line tools and APIs from Globus, CoG Kit, MyProxy
C#
…
Web Service
Shell Java Client
User Activity
Cyberaide Client
Client in other language
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 or other (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
Infrastructure Access
Command line tools and APIs from Globus, CoG Kit, MyProxy
Web Service Cyberaide Core/MediatorInfrastruct
ure Access
Workflow, meta-scheduling, user,
vo, and more
Command line tools and APIs from Globus, CoG Kit, MyProxy
Web Service
Web client code
Web browser
Agent service
JavaScript code
Resources for portal
pages
Mashup
Deploy time -Tomcat
3rd party resources
Runtime
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
|-- 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
|-- 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
|-- 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