System Architecture
Infrastructure resources are those that support the execution of your Flows. These resources are managed by Ascend, and can be configured as part of your Instance.
Instance
An Instance is a managed resource that is dedicated to you and your team. Your instance can be configured to either run in Ascend Cloud, or run on your own infrastructure for greater control. Technically, an Instance maps to a dedicated namespace in a Kubernetes cluster that is fully isolated from all others. Instances are the primary container for all hosted infrastructure resources, including Environments, Workspaces, and Deployments. Every instance has a dedicated Instance Store, and a set of services that support the core functionality of the Ascend platform.
Instance Store
An Instance Store is where all of your Ascend metadata and history is stored. This includes builds, runs, and more. Ascend supports various Instance Stores, including Snowflake, BigQuery, and more.
Git Repository
Ascend supports integration with Git for version control, branching, and collaboration. A single Git repository can have one or more Ascend projects associated with it.
Environment
An Environment isolates resources for different stages of the software development lifecycle (e.g., development, staging, production). They provide separate security boundaries and allow you to manage resources specific to each stage. Technically, an Environment maps to a Kubernetes Service Account and a set of multi-cloud IAM roles that provide the necessary permissions for the Ascend platform to interact with the resources in that environment, as well as external resources such as Vaults and Connections.
Workspace
A Workspace is your isolated, containerized development environment within Ascend. It provides an IDE-like interface for building and running Projects & Flows, integrated with version control and CI/CD. A workspace runs within a single environment, and is bound by the security limitations of that environment. Workspace are designed to be used by a single developer at a time, as they are configured with a single project and branch at a time, and are the physical resource that executes code interactively. It is common to have multiple workspaces in a development environment, whereas workspaces in staging and production environments are more rare and users should be careful in directly building and executing code in these environments.
Deployment
A Deployment is a runtime environment for running Projects and their associated Flows in a production-like setting. Deployments support Automations and scheduled Flows. Every deployment runs within a single environment, and is bound by the security limitations of that environment. Deployments are most commonly used in staging and production environments, where they are used to run flows on a regular basis.
Vault
A Vault securely stores sensitive information (passwords, tokens, keys) used by your Connections and Components. Each Environment you create has an Ascend-managed Vault associated with it. In addition, Ascend supports various external vault implementations, AWS Secrets Manager, Azure Key Vault, and Google Cloud Secret Manager. You can grant access to your external vault for a specific Environment via your cloud provider's IAM roles, which allows the Workspaces and Deployments running within that Environment to access the vault.
Next Steps
A good rule of thumb when building in Ascend is to "start small, iterate fast".
Now that you understand the core concepts of Ascend, you are ready to get started.