ANTI-HERO
A distributed system for balancing durability and resource cost

Flexible & Scalable
Configure ANTI-HERO exactly how you want or take a hands off approach, your choice
Semi-Decentralized
Breathe easy knowing that ANTI-HERO will continue to operate, even in the midst of server failures
Balanced
By leveraging existing infrastructure, ANTI-HERO provides fault tolerance with minimal extra cost.
A distributed system stronger than its weakest link
Fault Tolerant
Automatic Failure Detection
ANTI-HERO utilizes a node partnering system to leverage existing infrastructure while also providing the added benefit of fault tolerance. Paired nodes can work independently under normal conditions and when necessary, automatically detect failures and take over for their partner.

Semi-Decentralized
Centralized orchestration, but only as needed
Worker nodes only report to the centralized orchestrator as needed. Under normal operating conditions, no centralized communication is needed. As a result, even if communication between worker nodes and the Orchestrator temporarily falters, transactions can continue.
What technologies are used?
The basis of ANTI-HERO are the intercommunicating APIs which were built using Python framework Flask (later modifications used FastAPI). Additionally, the background worker and test client were also written using Python. ANTI-HERO's web view is a React-based single page application that connects directly to the servers running ANTI-HERO.
How is the data stored?
Each worker node and Orchestrator have their own local standalone PostgreSQL database. ANTI-HERO utilizes SQLAlchemy in order to interface with the PostgreSQL database, however any database compatible with SQLAlchemy can be configured for use with the system.