> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streamnative.io/llms.txt
> Use this file to discover all available pages before exploring further.

# StreamNative Cloud Concepts

StreamNative Cloud offers a veriety of resources to help you build and manage messaging and data streaming applications. This page provides an overview about the StreamNative Cloud resources, that you can use to organize your Pulsar clusters and other StreamNative Cloud resources.

## Organizations

The top-level resource in StreamNative Cloud is the organization. An organization is logical grouping of resources that you can use to manage access to your StreamNative Cloud resources and to organize your resources in a way that make sense for your organization. Most users will only need on organization, but you can create multiple organizations if you need to separate resources for different departments or teams.

To learn more about organizations, see [Organizations](/cloud/security/access/resource-hierarchy/organizations).

## Instances

Within each StreamNative Cloud organization, you can have one or more [Instances](https://pulsar.apache.org/docs/concepts-architecture-overview/#clusters).
An Instance represents an environment within a cloud provider that can contain multiple clusters and deployed components, such as Connectors, Functions, and SQL workspaces. Different departments or teams can use separate instances to isolate their resources from each other.

An Instance can be either fully **Hosted** on StreamNative's cloud account or deployed on your public cloud account via the Bring-Your-Own-Cloud (BYOC) option. An instance can contain one or more clusters.

To learn more about instances, see [Instances](/cloud/clusters/manage-instances/instance).

### Clusters

Within each Instance, you can have one or more Clusters. Each cluster is deployed in a cloud region within the cloud provider that the Instance is configured to use. Each cluster exposes different service endpoints that allow client libraries to connect and perform various operations - producing and consuming messages, running functions and connectors, executing SQL queries, managing Flink jobs, and handling other resources.

Clusters within an instance can replicate among themselves using [geo-replication](https://pulsar.apache.org/docs/concepts-replication/).

To learn more about clusters, see [Clusters](/cloud/clusters/manage-clusters/cluster).

## Users

Within each StreamNative Cloud organization, you can invite one or more users. Each user represents the identify of a person who can be authenticated and granted access to StreamNative Cloud resources and Pulsar resources within each Pulsar cluster.

To learn more about users, see [Users](/cloud/security/authentication/user-accounts).

## Service Accounts

Within each StreamNative Cloud organization, you can create one or more service accounts. Each service account represents an application programmatically accessing StreamNative Cloud resources and Pulsar resources within each Pulsar cluster.

A Service Account can be used across multiple Pulsar instances. However, the authentication credentials or API keys are different when they are used in different Pulsar instances.

To learn more about service accounts, see [Service Accounts](/cloud/security/authentication/service-accounts/service-accounts).

## Secrets

Within each StreamNative Cloud organization, you can create one or more secrets to store and manage sensitive data such as passwords, tokens, and private keys. A Secret may contain numerous keys. You can create Secrets and refer to them in connectors and Pulsar Functions. Currently, secrets are shared across multiple Pulsar instances within an organization.

To learn more about secrets, see [Secrets](/cloud/security/secret).

## Interact with the Cloud Resources

StreamNative Cloud gives you two ways to interact with the resources.

### StreamNative Cloud Console

<span id="console-cloud-resource" />

The StreamNative Cloud console provides a web-based, graphical user interface that you can use to manage your StreamNative Cloud organizations and resources. When you use the StreamNative Cloud console, you either create a new organization or choose an existing organization, and then use the resources that you create in the context of that organization.

### Command-line interface

<span id="cli-cloud-resources" />

If you prefer to work at the command line, you can perform most StreamNative Cloud tasks by using [snctl](/tools/cli/snctl/snctl-overview) to interact with the StreamNative Cloud resources within an organization. The CLI let you manage development workflow and StreamNative Cloud resources in a terminal window.

### Infrastructure-as-Code (IaC) tools

<span id="iac-cloud-tools" />

If you prefer to manage and provision the StreamNative Cloud resources through Infrastructure-as-Code (IaC) tools such as Terraform, you can declare those StreamNative Cloud resources using [Terraform Provider](https://github.com/streamnative/terraform-provider-streamnative). With these tools, you can create configuration files that contain your StreamNative Cloud resource specifications, which make it easier to edit and distribute.

## Interact with StreamNative Clusters

StreamNative Cloud gives you multiple ways to interact with the StreamNative Clusters.

### StreamNative Cloud Console

<span id="console-pulsar-clusters" />

In addition to managing StreamNative Cloud organizations and resources, you can also use StreamNative Cloud console to manage resources, configuration, and policies within a StreamNative Cluster.

### Command-line interface

<span id="cli-pulsar-clusters" />

If you prefer to work at the command line, you can interact with the StreamNative Cluster by using [pulsarctl](/tools/cli/pulsarctl/pulsarctl-overview). The CLIs let you manage the Pulsar resources in a terminal window.

### Infrastructure-as-Code (IaC) tools

<span id="iac-pulsar-tools" />

If you prefer to manage and provision the Pulsar resources through Infrastructure-as-Code (IaC) tools such as Terraform and Kubernetes, you can declare those Pulsar resources using [Terraform Provider](https://github.com/streamnative/terraform-provider-pulsar) or [Pulsar Resource Operators](https://github.com/streamnative/pulsar-resources-operator). With these tools, you can create configuration files that contain your Pulsar resource specifications, which make it easier to eidt and distribute.

### Client libraries

StreamNative supports various client libraries that enable you to easily interact with the StreamNative Clusters to produce & consume messages, running connectors & functions, and create & manage resources.

* [Build Applications with Pulsar Clients](/cloud/build/pulsar-clients/qs-connect)
* [Build Applications with Kafka Clients](/cloud/build/kafka-clients/kafka-on-cloud)
* [Connect to External Systems](/cloud/connect/connector-index)
* [Process Data Streams with Pulsar Functions](/cloud/process/pulsar-functions/functions-index)
