The Proxy Service is a GoLang application designed for managing incoming HTTP requests.
It uses a Proxy Config to define API requests and specifies where and under what conditions to direct them.
The Proxy Service then performs the following steps:
- Receives the request.
- Optionally verifies authorization cookies.
- Adds
request_context(with IP, user-agent, etc.) and other configurable parameters to the request body. - Applies request balancing rules to distribute requests evenly among multiple servers.
- Calls the necessary service, such as a NodeJS application or a PostgreSQL function.
- Processes the response. If the response contains Proxy Tasks (in the
proxy:[]section), it executes these tasks, either synchronously (waiting for a response) or in the background.
- Flexible interaction between various services.
- Load balancing across servers.
- Multi-threaded transaction execution.
- Background mode support ensures fast client response.
- Support for EventStream for server-client communication.
- Collector for gathering data from multiple transactions with subsequent single transaction updates.
- Task scheduler with multiple operating modes.
- Enhanced security through supporting a single entry point to services. For example, to work with a database, it's sufficient to create a user with permissions only to run one function, without access to tables.
- Collects metrics for further visualization via Grafana and Prometheus.
Detailed description is under Wiki section