The HydroShare architecture is a stack of storage and computation, web services, and user applications. A content management system, Django+Mezzanine, provides user interface, search, social media functions, and services. iRODS provides content storage. A web browser is the main interface to HydroShare, however a web services applications programming interface (API) supports access through other hydrologic modeling systems, and the architecture separates the interface layer and services layer exposing all functionality through these web services.
The architecture is organized into three categories: (1) Resource storage, (2) Resource exploration, and (3) actions on resources (Figure 1). These are implemented using system components that are relatively loosely coupled and interact through APIs. The loose coupling is a variant on Services Oriented Architecture (SOA) that enhances robustness as components can be upgraded and advanced relatively independently. It also supports extensibility. The Web Applications (Web Apps) approach is configured so that anyone can establish a Web App server that can act on HydroShare resources.
Figure 1. HydroShare Architecture
The organization of components parallels the organization of hardware and software on a personal computer. iRODS resource servers may be thought of as analogous to different hard disks on a PC, but supporting file storage across the internet and presenting that as a single folder, or collection. The HydroShare Django website supports resource exploration, providing discovery and access control, similar to PC explorer or file finder functionality. Then apps parallel the software programs on a PC. Here is where there is extensibility. Some software is provided by the system, but the full power of this paradigm comes from the system enabling anybody to establish an app server. A number of app servers have already been established. We have used the Tethys Platform open source software to create an app portal at http://apps.hydroshare.org. The HydroShare team has implemented a number of apps in this portal to support visualization of HydroShare resources and access to third party data such as data from the National Water Model. We have also established a Hyrax THREDDS server to enhance access to multidimensional data where we have adopted the netCDF file format from Unidata for resource storage. This enables HydroShare to leverage substantial Unidata community software for working with netCDF data. Also, with support from a supplement to the CyberGIS SSI project we have developed a collaborative partnership with the University of Illinois CyberGIS center. An app to execute hydrologic terrain analysis software at CyberGIS has been configured to act on HydroShare resources and save resources in HydroShare. Lastly, the Purdue members of our team have configured SWATShare, a HUBZero based system for sharing and executing SWAT models to save SWAT model instances in HydroShare. SWAT is the Soil Water Assessment Tool, a widely used Hydrologic Model. Apps have been developed to explore, execute and visualize SWAT models in HydroShare through interaction with SWATShare.