DDF Architecture

Architecture Diagram

As depicted in the architectural diagram above,

DDF

runs on top of an OSGi Framework, a Java Virtual Machine, several choices of Operating Systems and the physical hardware infrastructure. The items within the dotted line represent the

DDF

out-of-the-box.

DDF

is a customized and branded distribution of Apache Karaf. 

DDF

could also be considered to be a more lightweight OSGi distribution as compared to Apache ServiceMix, FUSE ESB, or Talend ESB, all of which are also built upon Apache Karaf.  Similar to its peers,

DDF

incorporates additional upstream dependencies.

DDF

as a framework hosts

DDF

Applications, which themselves are extensible by adding components via OSGi. The best example of this is the DDF Catalog (API), which offers extensibility via several types of Catalog Components. The

DDF

Catalog API serves as the foundation for several Applications and resides in the Applications tier.

The Catalog Components consist of Endpoints, Plugins, Catalog Frameworks, Sources, and Catalog Providers. Customized components can be added to

DDF

.

Nomenclature

  • Capability - A general term used to refer to an ability of the system
  • Application - One or more features that together form a cohesive collection of capabilities
  • Component - Represents a portion of an Application that can be extended
  • Bundle - Java Archives (JARs) with special OSGi manifest entries. 
  • Feature - One or more bundles that form an installable unit;  Defined by Apache Karaf but portable to other OSGi containers.

OSGi Core

DDF

makes use of OSGi v4.2 to provide several capabilities:

  • A Microkernel-based foundation, which is lightweight due to its origin in embedded systems.
  • Enables integrators to easily customize components to run on their system.
    • Software applications are deployed as OSGi components, or bundles. Bundles are modules that can be deployed into the OSGi container (Eclipse Equinox OSGi Framework by default).
    • Bundles provide flexibility allowing integrators to choose the bundles that meet their mission needs.
    • Bundles provide reusable modules that can be dropped in any container.
  • Provides modularity, module-based security, and low-level services such as  Hypertext Transfer Protocol (HTTP), logging, events (basic publish/subscribe), and dependency injection.
  • Implements a dynamic component model that allows application updates without downtime. Components can be added or updated in a running system.
  • Standardized Application Configuration (ConfigurationAdmin and MetaType)

OSGi is not an acronym, but if more context is desired the name Open Specifications Group Initiative has been suggested.

More information is available on OSGi at http://www.osgi.org/.

Built on Apache Karaf 

  Apache Karaf is a FOSS product that includes an OSGi Framework and adds extra functionality, including:

  • Web Administration Console - useful for configuring bundles, installing/uninstalling features, and viewing services
  • System Console - provides command line administration of the OSGi container. All functionality in the Web Administration Console can also be done via this command line console.
  • Logging - provides centralized logging to a single log file (data/logs/ddf.log) utilizing log4j
  • Provisioning - of libraries or applications
  • Security - provides a security framework based on Java Authentication and Authorization Service (JAAS)
  • Deployer - provides hot deployment of new bundles by dropping them into the <INSTALL_DIR>/deploy directory
  • Blueprint- provides an implementation of the OSGi Blueprint Container specification that defines a dependency injection framework for dealing with dynamic configuration of OSGi services.
  • Spring DM - An alternative dependency injection framework.

    DDF

    is not dependent on specific dependency injection framework. Blueprint is recommended.

Additional Upstream Dependencies

DDF

is a customized distribution of Apache Karaf, and therefore includes all the capabilities of Apache Karaf. 

DDF

also includes additional FOSS components to provide a richer set of capabilities.

Integrated components include their own dependencies, but at the platform level,

DDF

includes the following upstream dependencies:

  • Apache CXF - Apache CXF is an open source services framework. CXF helps build and develop services using front end programming APIs, like JAX-WS and JAX-RS. (More info at http://cxf.apache.org)
  • Apache Commons - provides a set of reusable Java components that extends functionality beyond that provided by the standard JDK  (More info available at http://commons.apache.org)
  • OSGeo GeoTools - provides spatial object model and fundamental geometric functions, used by

    DDF

    spatial criteria searches.  (More info available at http://geotools.org/)
  • Joda Time - provides an enhanced, easier to use, version of Java date and time classes  (More info available at http://joda-time.sourceforge.net)

For a full list of dependencies view the Software Version Description Document.

Recommended Hardware

Because of its modular nature,

DDF

can require many or few system resources depending on which bundles and features are deployed.  In general,

DDF

will take advantage of available memory and processors.  A 64 bit JVM is required, and a typical installation is on a single machine with 16GB of memory and 8 processor cores.