docs/content/v2024.2/yugabyte-platform/yba-overview.md
YugabyteDB Anywhere (YBA) is a self-managed database-as-a-service that allows you to deploy and operate YugabyteDB database clusters (also known as universes) at scale.
In YBA, a database cluster is called a universe, and the terms are used interchangeably. More precisely, a universe in YBA always consists of one (and only one) primary cluster, and can optionally also include a single read replica cluster attached to the primary cluster.
You can use YBA to deploy YugabyteDB database clusters that will tolerate single node failures, multiple node failures, single availability zone failures, multiple availability zone failures, single region failures, cloud provider failures, and more.
YugabyteDB Anywhere also supports xCluster deployments (including for disaster recovery), where two YugabyteDB universes are deployed, and data is replicated asynchronously between them.
YBA supports these deployments in the following environments:
YBA supports the following additional features:
YBA supports common Day 2 management operations, including the following:
YBA operations can be performed through a GUI, or via automation tools that use its exposed REST APIs or Terraform provider.
YBA runs on standalone VMs or Kubernetes pods. YBA can in turn be used to deploy YugabyteDB database clusters on either VMs or Kubernetes pods.
A VM that is part of a YugabyteDB cluster runs multiple processes, including the YB-Master and YB-TServer services of the cluster, and other secondary agents, including the node agent, YB Controller backup agent, and Prometheus Node Exporter for host metrics export. The YB-Master and YB-TServer services can be deployed in the same VM or, for better isolation, in separate dedicated VMs. On Kubernetes clusters, the YB-Master and YB-TServer services always run in isolated pods. For more information on the architecture of YugabyteDB, see YugabyteDB Architecture.
YBA requires network connectivity to the YugabyteDB database clusters to perform day 2 operations and monitoring. And, of course, in any cluster, database cluster nodes require connectivity to each other. Network connectivity to the public Internet is optional: YBA supports both Internet-connected and air-gapped deployments.
YBA stores cloud provider metadata and other cluster metadata in its own embedded database. YBA also uses a local Prometheus instance to scrape and store metrics from YugabyteDB clusters.
To ensure fault tolerance of YBA itself, YBA can be configured in High Availability mode. In this setup, the primary YBA instance is synchronized with one or more standby instances to provide quick failover in case of an outage.
A provider configuration (also referred to as provider) describes your cloud. For example, the regions and zones that you will allow YugabyteDB to be deployed to. Additionally, in the case of public IaaS clouds, the service account YBA should use to create servers/VMs in your cloud.
YBA uses the cloud configuration information in a provider to deploy and manage universes.
YBA supports three major types of provider configurations:
| On-premises | Cloud | Kubernetes | |
|---|---|---|---|
| Advantages | Maximum flexibility | Maximum automation | It's Kubernetes |
| Platforms | Private cloud, bare metal, | ||
| AWS, Azure, GCP | AWS, Azure, GCP | Kubernetes | |
| Permissions for YBA | Minimal sudo access during provisioning | Cloud and OS permissions | As required for Kubernetes |
| Node provisioning | Manually created, with automatic provisioning using a script | Automatically created and provisioned | Via Helm |
Unlike the Kubernetes and cloud providers, where YBA has privileges and creates the VMs (or pods) automatically, with an on-premises provider you create the server VMs manually.
Use this option for any of the following situations:
With the on-premises provider, after creating VMs manually (that is, outside of YBA), you will add them to your on-premises provider's free pool of servers. Subsequently, when creating the universe, database nodes are taken from the on-premises provider's free pool of servers and added to the universe.
If you are deploying a universe to a public cloud (AWS, Azure, or GCP) and want maximum automation when managing clusters (creating them, scaling them, patching the OS, and so on), use a public cloud provider configuration. This approach does require that you provide YBA with cloud and OS privileges.
For example:
This approach allows for maximum automation. Also, you do have the option to specify a custom OS image that otherwise meets all other enterprise security rules.
If you are deploying a universe to Kubernetes, use a Kubernetes provider.