Autoscaler

The Autoscaler autonomous applicatoin is designed to enable automatic redeployment across various providers, ensuring flexibility and resilience in deployment strategies. Below is a detailed explanation of its key features and functionalities:

Provider Selection Configuration

This feature allows users to configure criteria for selecting deployment providers and determining the number of instances to run. Users can specify detailed selection parameters to optimize deployment according to their requirements.

Deployment Modes

  1. Standalone Mode:

    • Operates as a sidecar container.
    • Accepts pod configurations for a base protocol.
    • Utilizes the provider selection configuration and a self-contained wallet for redeployment.
  2. Network Mode:

    • Functions as a separate network or autonomous application.
    • Accepts the same pod and provider selection configurations, but likely through an additional specific protocol.
    • Includes a payment system to manage the autoscaler, which tracks per-application balances.

Routing and Service Discovery

The application provides robust service discovery and DNS hosting for the deployed applications. It includes the following capabilities:

  • DNS of Autoscaler Network:
    • Linked to a real domain, making it discoverable as an authoritative DNS nameserver.
    • Facilitates efficient routing and service discovery within the network.

Load Balancing

The application offers potential load balancing features. This is useful for redistributing the load across application containers. It supports "true" scale-to-zero, deploying on a provider and scaling to zero as needed, though it is typically preferable to scale within the provider's environment.

Key Management

This system manages keys for decrypting application secrets, enabling secure and effective deployments. It ensures that all necessary security credentials are handled correctly during the deployment process and can be used by other applications requiring secure key management.

The Key Management is general and reusable component that could be splitted as a separate applicatoin