From c05f2115cbefd9c5f1b5b2f5b52f8d27ad33ae1d Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Wed, 11 Oct 2023 18:41:11 -0700 Subject: [PATCH] Adding Collaboration concepts doc" Signed-off-by: Ryan Nowak --- .github/config/en-custom.txt | 3 + .../concepts/application-graph/index.md | 2 +- .../concepts/collaboration-concept/index.md | 48 ++++++++++++ .../env-with-apps-example.png | Bin 84673 -> 0 bytes .../concepts/environments-concept/index.md | 70 ------------------ docs/content/concepts/overview/index.md | 2 +- 6 files changed, 53 insertions(+), 72 deletions(-) create mode 100644 docs/content/concepts/collaboration-concept/index.md delete mode 100644 docs/content/concepts/environments-concept/env-with-apps-example.png delete mode 100644 docs/content/concepts/environments-concept/index.md diff --git a/.github/config/en-custom.txt b/.github/config/en-custom.txt index 23a711af1..ee19e4fe2 100644 --- a/.github/config/en-custom.txt +++ b/.github/config/en-custom.txt @@ -1002,3 +1002,6 @@ fh qd vf zht +Elasticache +FinOps +SecOps diff --git a/docs/content/concepts/application-graph/index.md b/docs/content/concepts/application-graph/index.md index c2d0b2b0d..7ceb8bd08 100644 --- a/docs/content/concepts/application-graph/index.md +++ b/docs/content/concepts/application-graph/index.md @@ -72,4 +72,4 @@ GET /planes/radius/local/resourceGroups/default/providers/Applications.Core/cont Now that you have an understanding of the Radius app graph, learn how you can deploy Radius applications to prepared landing zones with Radius Environments: -{{< button text="Radius Environments" page="environments-concept" color="success" >}} +{{< button text="Radius Environments" page="collaboration-concept" color="success" >}} diff --git a/docs/content/concepts/collaboration-concept/index.md b/docs/content/concepts/collaboration-concept/index.md new file mode 100644 index 000000000..b1a18d69c --- /dev/null +++ b/docs/content/concepts/collaboration-concept/index.md @@ -0,0 +1,48 @@ +--- +type: docs +title: "Concept: Collaboration in Radius" +linkTitle: "Collaboration" +description: "Learn how Radius Environments and Recipes support collaboration between platform engineers, application developers, and IT operators." +weight: 300 +slug: collaboration +--- + +## What we heard + +As part of our research into cloud-native application management we talked to many enterprise application teams and IT operators about their desired approach. For some enterprises their current DevOps began to break down as they increased their adoption of the cloud. Every DevOps team was making different decisions about which cloud provider they'd use, how they'd store their code, how their build pipelines worked, what services they'd use for compute, how they'd maintain application state, how logging and observability worked, and more. Best practices for engineering and operations weren't effectively shared. Also, DevOps teams made different decisions about the scale of their resources, making it challenging or impossible for enterprises to optimize the cost of using the cloud. Finally, without consistent, verifiable security practices, security mistakes were getting made which, at their worst resulted in a loss of business and customer trust. These issues in operations, cost, and security needed to be addressed consistently across the enterprise. + +We learned that there weren't great tools for collaboration between IT organizations and the developers they were supporting. Collaboration between developers and operators required detailed coordination, resulting in back-and-forth manual processes that slow down development velocity. Most organizations resorted to building custom pipelines or ticketing systems for infrastructure deployments, but these only ease part of the pain without addressing the underlying manual processes. Teams needed a better way to collaborate with each other. + +An emerging group of enterprises have a created a *platform engineering* effort to define and build their internal developer platform. Platform engineering teams focus on streamlining the developer-experience for their organization by optimizing for developer productivity when following the enterprise's chosen practices. Platform engineers define the set of recommended practices for application teams based on DevOps principles, and then provide self-service capabilities for application teams to use. When an organization adopts a platform engineering mindset, the internal developer platform is the product, and the application developers are the customer. Platform engineering is a large effort and will encompass many topics outside of the scope of application management. + +A few common challenges emerged from our conversations. The platform engineering philosophy also aims to address these concerns: + +- Developers benefit from paved-paths for best-practices: enterprises gain operational efficiency by standardizing how applications are deployed, report diagnostics, and provision cloud resources. When this is done well, developers find and use the recommended technologies with ease. When this is done poorly, developers struggle with many templates, dependencies, and other assets to manage over time. +- Developer velocity is improved by self-service for the cloud: Platform engineering efforts optimize the developer workflow with self-service tools that provide guardrails to drive adherence to best-practices. These guardrails help manage costs and increase an organization's security posture by providing correctly configured tools and infrastructure. In addition, self-service minimizes inefficient manual workflows that add friction to the development process. + + +## Introducing the Environment + +Environments in Radius provide a landing-zone for Applications that is configured with the organization's chosen best-practices, settings, and Recipes. Environments encapsulate and store configuration for the compute platform, networking configuration, diagnostics systems, and other operational concerns. Environments enable a *separation of concerns* between developers and the IT organizations supporting those developers. Environments allow the configuration to vary across different types of deployments (like a staging deployment), deployment regions or even different clouds. + +Platform engineers and IT operators collaborate with application teams by managing the set of Environments developers can use. These Environments may be static and pre-configured, or may be created on-demand by infrastructure-as-code as part of an internal developer platform. Platform engineers can configure Environments to ease adoption of recommended practices, for example by configuring the recommended diagnostics systems. Application developers can deploy their Applications across multiple Environments and have assurance that the correct configuration is applied. Environments reduce the cognitive load for developers since the configuration was created by platform engineers and stored by Radius. + +When an Application is deployed, Radius will *bind* the Application to the configuration of the target Environment and apply the relevant settings. Storing the operational configuration in the Environment increases developer velocity because the Application does not need to change when it is deployed across Environments configured for different purposes or leveraging different infrastructure. + +{{< button text="Learn more about Environments" page="/guides/deploy-apps/environments/overview" newtab="true" >}} + +## Recipes as part of the Environment + +Recipes use infrastructure-as-code templates stored in the Environment to create cloud resources on-demand when an Application is deployed. Since the Recipes are stored in the Environment, the set of available cloud resources and the configuration used for provisioning can be tightly controlled. Recipes use the credentials stored in the Environment when provisioning cloud resources to limit those who need access to cloud accounts. The Recipes configured in an Environment are versioned, and can be updated in a granular way to lower the risk of unforeseen changes. When a Recipe is executed, it automatically catalogs the infrastructure used as part of the Radius Application Graph where it is visible to the whole organization. Because Recipes are part of the Environment, they can also vary across environments. For example, a cache might need to be bigger in one cloud region, like Europe, than it was in a different cloud region, like North America. For a multi-cloud Application, an enterprise could create an Environment for an AWS region and a different Environment for an Azure region. The recipe to create a Redis cache in the AWS Environment might deploy Amazon Elasticache for Redis and the recipe in the Azure Environment might deploy Azure Cache for Redis. The Application would just use the Redis cache recipe, unaware of what underlying infrastructure was deployed to provide the cache. Lastly, the infrastructure created by Recipes is stored by Radius, so it can be automatically cleaned up to help manage costs. + +Within an IT or platform engineering team, many organizations have defined specialized roles like SecOps, FinOps, and cloud centers-of-excellence to address their complex needs for using the cloud. Recipes are designed for these engineers to standardize and govern the organizations use of the cloud while still supporting self-service deployment. Since the Recipes are stored in the Environment they do not need to be shared directly with or understood and managed by application developers. By providing Recipes, platform engineers can streamline and simplify the interface to the cloud used by application developers. Since Recipes execute as part of Application deployment, the provisioning of cloud resources is part of an existing process rather than a manual step. + +Applications use Recipes to create cloud infrastructure during deployment without describing how that infrastructure will be provisioned. For example a developer, might include a Redis Cache as part of an Application. When the Application is deployed, the Redis Cache will be created according to the Recipe, ensuring that it uses a supported configuration. Recipes make it easy for the Application to connect to the cloud resources by automatically configuring access-policies, networking, and connection settings for the Application code. Since that Application can rely on the recipe to provision the correct infrastructure and deliver the correct configuration, it is easy to deploy the same Application to different Environments without code changes. + +{{< button text="Learn more about Recipes" page="/guides/recipes/overview" newtab="true" >}} + +## Part of platform engineering + +Platform engineering is a relatively new trend and so the exact set of tools and practices that will make organizations successful are still to be determined. We designed Radius to aid platform engineering efforts as part of the internal developer platform. Radius provides Environments and Recipes to help ensure that cloud resources meet enterprise requirements for operations, cost, and security. We also think that the Radius Application Graph, described elsewhere, will help everyone visualize and reason about their Applications. With these components we hope to help Platform Engineers build simple but powerful platforms for their developers to use while improving the collaboration between developers and the broader IT organization. + +The Environment and Recipe model also works for DevOps teams. When we spoke with DevOps teams we learned that there were usually a small group of people with stronger expertise in creating and managing cloud resources. We'd expect these people to be the people creating Environments and Recipes for use by their team. diff --git a/docs/content/concepts/environments-concept/env-with-apps-example.png b/docs/content/concepts/environments-concept/env-with-apps-example.png deleted file mode 100644 index 475040ba897c45397a89bd64be5e506a27cbcfb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84673 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%0DqJhuNC!yg+e%|TnLx%zHSH%+5S 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 F{6C?4!5{zt diff --git a/docs/content/concepts/environments-concept/index.md b/docs/content/concepts/environments-concept/index.md deleted file mode 100644 index e94a70f6d..000000000 --- a/docs/content/concepts/environments-concept/index.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -type: docs -title: "Radius Environments" -linkTitle: "Environments" -description: "Learn about Radius Environments" -weight: 300 -slug: environment -toc_hide: true ---- - -## Introduction - -Radius Environments are a prepared landing zone for applications. They contain a prepared pool of compute, networking, and shared resources. s deployed to that environment "bind" to that infrastructure. Configuration on the environment allow for operators to enforce organizational requirements and best practices for app teams. - -Environments provide a grouping structure for applications and the resources they share. For example, an org might choose to setup separate Radius Environments for staging and production. When appropriate, multiple applications can be deployed into the same environment. - -{{< image src="env-with-apps-example.png" alt="Diagram of multiple Radius Environments deployed to Azure. One environment contains 1 app, the other environment contains multiple apps." width="350px" >}} - -## Concerns that environments manage - -### Separation of concerns - -In many small to medium-sized organizations, a full stack developer might write application code, author the Radius app definition, and create the Radius Environment. In larger orgs, there may be separate teams of central operations and developers, where the central teams build environment templates which development teams leverage and deploy to. The separation of an app from an environment makes a separation of concerns possible. - -With Radius Environments, central operations and IT teams can define and share environments with development teams for them to deploy applications into. Ops teams can focus on configuring the compute, dependencies, networking, and other infrastructure concerns through [Recipes]({{< ref "guides/recipes/overview">}}), while developers focus on the business and application concerns. This allows each team to focus on what matters most to them, without needing to become experts in every aspect of the infrastructure and application. - -### Developer productivity - -Once an environment template is defined, developers can get up and running with a prepared development, pre-production, or production environment in minutes. No more waiting for manual provisioning, configuration or inter-team coordination. Simply use the [Recipes]({{< ref "guides/recipes/overview" >}}) linked to your Radius Environment and deploy your application. - -### Replication and consistency - -When an application team needs to scale an application to additional regions or instances, environments can be "stamped out" in minutes and ready for app deployments. Integrations with CI/CD systems such as GitHub Actions allow this process to be automated and repeatable. - -### Organization best-practices - -Organizational best-practices such as cost-optimization, resource sharing, and logging can all be codified and enforced with a Radius Environment. - -## Environment features - -| Feature | Description | -|---------|-------------| -| **Compute runtime** | Define compute runtimes such as a Kubernetes cluster or Azure serverless compute *(coming soon)* where your application's services run. | -| **Shared infrastructure** | Deploy shared resources that are available to all applications deployed into the environment. -| **Diagnostics** *(coming soon)* | Configure and manage diagnostic configuration such as collection policies, retention periods, and archival settings. -| **Networking** *(coming soon)* | Define networking requirements such that applications are automatically configured with network isolation best-practices. -| **Identity & access** *(coming soon)* | Limit access to deployments, resources and capabilities based on user roles and assignments. -| **Dependencies** *(coming soon)* | Define environment requirements such as policy, packages, or other organization requirements. -| **Infrastructure provisioning** | Automatically provision infrastructure at deployment time through [Recipes]({{< ref "guides/recipes/overview" >}}). -| **Dependency management** *(coming soon)* | Manage dependencies and environment capabilities such as packages, frameworks, and other configuration. - -## Example: Handoff between teams - -In this example there are two teams within an organization: a central operations team and a development team. The central ops team is responsible for managing the environment and the central infrastructure resources, and the development team is responsible for the application definition and deployment. - -A typical workflow for this team structure would look like: - -1. The ops team initializes a new environment, configured with a compute runtime setup with networking, identity, diagnostics, and other configuration that matches their org's requirements. -1. The developer authors a Radius Application template, including containers for their services, portable resources for their infrastructure, and routes/gateways for their networking. -1. The developer deploys the app template to the Radius Environment - - The app's containers automatically run on the container runtime - - The resource automatically configures security best practices and injects connection information into the consuming container - -When the developer deploys their application, these org-level concerns are automatically wired up based on the environment. Developers don't have to think about credentials or how networking is configured, enabling them to focus on their applications instead. - -## Next step - -Now that you have an understanding of Radius Environments, learn more about the Radius API: - -{{< button text="Radius API" page="api-concept" size="btn-lg" color="success" >}} \ No newline at end of file diff --git a/docs/content/concepts/overview/index.md b/docs/content/concepts/overview/index.md index 61b0f7068..c4b5da2e3 100644 --- a/docs/content/concepts/overview/index.md +++ b/docs/content/concepts/overview/index.md @@ -40,7 +40,7 @@ The result is no longer just a flat list of resources - it's a fully codified ab ### Drastically reduce infra ops time -[App environments]({{< ref environments-concept >}}) are landing zones for applications. They are the place where you can deploy, manage, and scale your apps. +[App environments]({{< ref collaboration-concept >}}) are landing zones for applications. They are the place where you can deploy, manage, and scale your apps. {{< image alt="Diagram showing Radius Environments" src="environments.png" width="600px" >}}