Resoa

from Wikipedia, the free encyclopedia
Resoa

Resoalogo.png
Basic data

Maintainer Resoa.org
Current  version 0.9.9
(October 2012)
operating system platform independent
programming language Java
category Framework
License GPL ( Free Software )
resoa.org

Resoa (Rest Service Oriented Architecture) is an open source framework for the development and operation of Internet-based applications in a distributed computer network. The focus of the IT architecture is on performance , high reliability and scalability . Applications are developed in Java ; external communication is based on HTTP / REST and JSON .

Components

Resoa is essentially based on 3 components which, installed several times on different servers, connect to a computer network ( grid / cloud computing ):

Resoa Nodes
Nodes form the container for Java Business Services . Services are combined in domains and “deployed” on a node.
Resoa rest
Rest servers provide an interface for calling Java services over the Internet. They also act as an HTTP server for static content. The communication is essentially based on AJAX / JSON .
Resoa controller
Controllers know the grid infrastructure, they manage the communication between all components and control the use of Java service domains on nodes as well as web applications on rest of the servers. In addition, they act as a central instance for a grid- wide session management, so the calling of Java services can be restricted on the basis of a user / role concept.

Development principles

The business model is designed in XSD . Using JAXB can from the model automates Java source code to be created, which serves as basis for the implementation of the application logic.

Resoa offers the possibility of automatically creating JavaScript libraries from classes compiled using JAXB . In addition to the mapping of the corresponding Java classes, these contain helpful functions for GUI development, e.g. B. an automatic filling of web forms and a class-integrated JSON de / serialization .

The implementation of the business processes takes place in Java. No interfaces have to be implemented here, the identification of a correct Resoa Service is based on the function arguments.

Resoa offers a solution for the direct storage of business objects in BTREE based databases . The objects are serialized in JSON . It can in this case also relations are defined between the objects, the corresponding treatment of the resulting memory accesses are ACID transaction-based.

Several Resoa services are aggregated to service domains (Jar files). Domains can be used on multiple nodes.

Deployment and runtime environment

A Resoa Grid is defined by at least one controller, one node and one rest server. The grid topology is planned on a folder / file basis. The essential information about the existing business service domains and web applications is described in a GridDomains.xml file, which is located in the root folder of a topology definition. For each component of the grid, a corresponding folder is created in the corresponding category (controller / node / rest), where the deployment information required for the component is stored in a file DeployDescriptor.xml .

Resoa has a tool that automatically generates the deployment files required by a controller from the grid folder / file information. In addition, the scripts for starting and an encrypted license files are generated for each component. The license files ensure that internal grid communication meets the highest security requirements.

Setting up a runtime environment requires the following steps:

  • Installation of Java and Resoa libraries
  • Copy the start scripts from the corresponding grid topology folder to the server
  • Start the application

Each component connects to a controller when it is started and receives all relevant information from there. The controller can also update this information at runtime without having to restart a component.

The rest of the server and nodes maintain connections with each other if there are dependencies due to the deployment configuration. Nodes providing the same domain also exchange data, primarily to ensure synchronization of the local BTREE databases.

If a node goes offline, the web / rest request is forwarded to another node that provides the corresponding business service domain. If several nodes are available, the selection is made randomly. When a new node starts, it automatically connects to all the rest of the servers that have web applications with dependencies on a provided service domain, as well as to other nodes that are available for these domains.

history

Resoa has its roots in exchange trading systems. The aim was to develop a software architecture with which data streams from stock exchanges can be evaluated in real time and complex analyzes can be carried out. The results from this served as basic information for a fully automated trading system for futures and options. The information to be processed on a daily basis comprised several gigabytes, and an analysis of historical data should also be integrated. The calculations had to be carried out simultaneously for several thousand listed stocks in the millisecond range.

A small team of developers from Germany and Russia, who were able to collect their know-how from many years of work for Cortal Consors , began in 2003 with the design and development on a private basis. Numerous open source solutions were subjected to an in-depth analysis, and ultimately, after some fundamental changes, the basic architecture of the current Resoa components was created. It very soon became obvious that the merging of “web services” with “grid computing” would be a central issue for all internet-based applications. In 2008, this led to the decision to further develop the existing components in such a way that general use as a development framework and runtime environment is possible. At the end of July 2009 the first version 0.9.1 was published.

literature

  • Ron Bennett: Architecture Body of Knowledge . Architunity, Cedar Park 2011.
  • Raja Ramanathan, K. Raja: Handbook of Research on Architectural Trends in Service-Driven Computing . Information Science Reference, Hershey 2014, ISBN 978-1-4666-6178-3 .

Web links