Elastic Web Services (EWS)
Elastic Web Services (EWS) is an integration tool with a query API (XML-RPC and REST) to relational databases, built on the Linux-Apache-PHP platform. Queries can run synchronously or asynchronously, either as queries predefined by the administrator or as free queries over a group of data defined by the administrator. Access to the data is controlled on several layers – in the application itself, in the database and, optionally, by a Web Application Firewall (WAF).
EWS application overview
The application consists of three components:
Application programming interface (API)
The query API, drawing data from relational databases (specially tuned for Oracle Database), is provided to third parties either through a REST interface or through the XML-RPC protocol (which calls predefined queries, so-called stored queries, with the POST method and communicates in XML); both use HTTP as the transport layer. Output is generated in XML and, for REST, also in JSON or GeoJSON (where possible).
User interface (GUI) provides a tool for simulating queries and their output in XML, JSON and GeoJSON:
- simulating XML-RPC calls with the query builder,
- simulating XML-RPC calls of predefined queries.
For registered users it also provides basic management of their account.
Administration interface (GUI) provides tools for basic administration of the application:
- managing users and roles,
- managing and registering connectors to data sources,
- registering, validating and publishing predefined queries,
- managing data groups for free queries.
EWS system architecture
The architecture consists of several technology components, each of which provides high availability (HA) on its own layer of the OSI model.
The entry point to the system is HAProxy (HTTP-layer failover) with KeepAliveD (IP-layer failover), which distributes requests according to the health of the individual nodes and balances the traffic – switching between active and passive state (active/passive failover).
The EWS application code runs on Apache 2.4.x web servers with the PHP 7.x scripting language.
The application services are therefore provided in HA mode, for both the development and the production environment; these share the high-availability layers (KeepaliveD, HAProxy) but have separate application environments – a separate web server for production and for development.