General Architecture

NwaySP is basically a platform that schedule services and manage there input / output. There are a lot available types of services. One of The strength of NwaySP is to allow an administrator to remotely manager and analyze services.

NwaySP is separated into three parts :

  • Engine : Creating, and executing services.
    • WebService of Control.
    • JMX interface via RMI connector.
    • Java Melody Web Application to monitor the engine.
  • Web Console : Manage and Supervise the platform.
  • Command Line Tool : Manage and Supervise the platform.

Additionally, there are three other used components

  • Database : PostgreSQL / H2 / Neo4J : Holding all the data of the application
  • Message Oriented Middleware : Active MQ : Handling Asynchronous messaging.
  • Caches : The needed caches to improve performance.

Engine Architecture

The platform is made to run on different servers with different sets of configurations. You can scale the whole system horizontally. Adding a server will add processing power. The database can also be clustered without any problem.

Some details about a Engine

An engine is composed of a Service Manager, Service containers, Services, Components, InBounds, OutBound and Intercepters. An engine is to be constantly connected to a database. It exposes webservices to allow direct control.

ServiceManager : It will create, hold and destroy services.

Engine Detail

Here is the detail of the schema :

  • Service Containers : It is a logical gathering of A Service Implementation (just one), Components, InBounds, OutBounds and Intercepters.
  • Service Implementation : It is a piece of code that will be executed. It defines a configuration pattern, inbound and outbound data requirements.
  • InBounds : It is a piece of code that will control the trigger of a Service as well as its inbound data. It defines a configuration pattern.
  • OutBounds : It is a piece of code that will handle the outbound data of a Service. It defines a configuration pattern.
  • Components : It is a piece of code that is used by any Service Container or Service Implementation or InBound or OutBound or another Component. It defines a configuration pattern. It is a way to plugin a new functionality to a Service Container. InBounds, andOutBounds are considered as components.
  • Intercepters : It is not configurable. It is a piece of Code that can be plugin has an addons. It is called during runtime at specific moments.

We will call a Service, an abstraction of a Service Container. A service, is a Service Container that is composed by all the items seen above, and especially by a Service Implementation.

Messaging System

The messaging System can be divided into two categories :

  • Internal Messaging System : Implementation of Topic and Queue concept right into NwaySP. It uses the Database. You can manage it via the Web Console
  • JMS like Messaging : Each Engine launches an Active MQ that can be local or interconnected with other instances.

Each one has it good and bad points. However, JMS like Messaging will provide you will more flexibility and more performance.

The Web Console is a Web Application

It fully Ajax based application that handles a large amount of functionalities. You can for instance :

  • Manage Servers
  • Manage Service
  • Manage Service's Output
  • Manage Service's Configuration
  • Manage Asynchronous Message System
  • Manage Statistics generated by Services
  • Manage Engine Logs
  • Use Twitter and Flickr API Key Tools
  • Etc...
Screenshot of Web Console

Here is a Screenshot showing the Home Page with expended left menu.

Functionality Matrix

Any engine can be controlled remotely by Using WebServices or Database Commands or Using Shell Scripts. Here are some actions that you can do to an Engine.

Command Shell (ssh) WebService Database Web Console and Command Line Tool Caching System
Start or Stop Engine YES NO NO NO NO
Start or Stop Web Engine YES NO NO NO NO
Add / Delete Services or Groups NO NO YES YES NO
Create / Destroy Services YES YES YES YES NO
Start / Stop Services YES YES YES YES NO
Monitor Services YES NO YES YES NO
Manage Platform YES NO YES YES NO