The entire code check in process took place over the weekend. I wanted to wrap my head around a directory structure for services going forward so that it can be easy for someone who wants to download the code and build. So through my thinking I came up with the idea that a service should have the following directory structure:
+--ServiceProjectName:
- +--Service
- +--Common
- +--Client
- +--lib
- --build.xml
- --README.txt
- --POM.xml
This structure follows my philosophy for grid service development which follows:
A grid service should have 3 components:
- The core or common components - these components do all of the work for the service from making database calls, structuring inputs and outputs, etc.
- Service Implementation -Since there are a couple of techniques for creating Globus services its interface should be implemented from the core components making the service implementation very thin. I have based my service implementation on GDTE which is a more generic service implementation than Introduce. However, if someone wanted to implement a service using Introduce then the common components are preserved in such a way that this is very easily done. Additionally, configuration file location and environment variables are accessible in locations as prescribed by the GTK4 development manuals.
- Client Implementation - the client implementation is based on the service implementation. In my TODO list I am going to try and make this more generic and base the client off of the WSDL GDTE tool generates a client stub, I will use it as a base. I will transform it into something generic later.
Included in my service is a GUI for the service configuration. A snap shot is below:
The AMDS configuration is fairly complex and since this service will be moving to production, I wanted to make it as easy as possible to administer from a UI as oppose to just having a configuration file. From the UI it is easily seen that its design is intended to manage a suite of AMDS services at one node. This taps into my ideas about the service ecosystem: The service should be easy to extend/develop, to deploy/undeploy, management/configure, and include a default usable client. The intended audience for this targeted functionality is not just for developers but also for the non-technical person when using the service. These specific ideas follow the IPhone App-Store Model of application development, a topic to go into detail later.
Lastly, here are my TODOs for this week:
- Complete the generic configuration of the AMDS service.
- Build the default client to be used with the AMDS Service
- Begin to think about multi-node access for the client (The client should be able to aggregate multiple node endpoints running the AMDS service)
- Upload the updated service and remaining artifacts to source control, with a base level instruction set.
No comments:
Post a Comment