From f2af465a250d736e5e9dc68ca84aca566e69a6fa Mon Sep 17 00:00:00 2001 From: danielscholl Date: Tue, 8 Oct 2024 17:23:40 -0500 Subject: [PATCH] Documentation work. (#219) --- docs/src/design_architecture.md | 122 +++++++++++++++++++++++------- docs/src/feature_flags.md | 77 ++++++++++--------- docs/src/getting_started.md | 104 +++++++++++++++++++++---- docs/src/images/cost_analysis.png | Bin 0 -> 144157 bytes docs/src/index.md | 78 ++++++++++--------- 5 files changed, 267 insertions(+), 114 deletions(-) create mode 100644 docs/src/images/cost_analysis.png diff --git a/docs/src/design_architecture.md b/docs/src/design_architecture.md index bf627993..640eb78f 100644 --- a/docs/src/design_architecture.md +++ b/docs/src/design_architecture.md @@ -1,18 +1,20 @@ # Architecture -!!! Hint - OSDU Developer is built using the following principles from the Azure Well-Architeced Framework. - For a deeper understanding, we recommend reading our article on Micosoft Learn +Personal OSDU™ instances are built using principles from the Azure Well-Architected Framework which provide a set of best practices and design considerations for azure workloads. + +??? Tip "Learning Opportunity" + + For a deeper understanding read about the [Azure Well-Architected Framework](https://learn.microsoft.com/en-us/azure/well-architected/). - This provides valuable insights into best practices and design - considerations of azure workloads. + #### IaC: Declarative Resource Definition Infrastructure as Code (IaC) uses declarative definitions to specify the desired state of cloud resources. Bicep is a domain-specific language (DSL) used for deploying Azure resources declaratively. It simplifies authoring ARM templates and allows you to define the desired state of your Infrastructure as Code (IaC). Azure Resource Manager (ARM) processes the Bicep file to ensure the Azure environment matches the defined desired state, correcting any drift through redeployment. -!!! Note - Microsoft recommends when developing with Bicep to use official [Azure Verified Modules](https://azure.github.io/Azure-Verified-Modules/). +??? Tip "Learning Opportunity" + + Understand Bicep development with the official [Azure Verified Modules](https://azure.github.io/Azure-Verified-Modules/). #### GitOps: Declarative Configuration Management @@ -21,8 +23,14 @@ Infrastructure as Code (IaC) uses declarative definitions to specify the desired GitOps uses versioned CI/CD on top of a declarative infrastructure, allowing developers to "[stop scripting and start shipping](https://twitter.com/kelseyhightower/status/953638870888849408)," as Kelsey Hightower put it. This declarative configuration is helpful to define the entire softwarestack as code and continuously deliver changes with confidence to environments. +??? Tip "Learning Opportunity" + + Dive Deeper into [GitOps for Azure Kubernetes Service](https://learn.microsoft.com/en-us/azure/architecture/example-scenario/gitops-aks/gitops-blueprint-aks). -## Command Sequence + +## CLI Command Sequencing + +The Azure Developer CLI (azd) provides a set of commands to provision and deploy resources to Azure. These commands offer the ability to include hooks to inject custom logic into the deployment process. This custom logic is written with powershell scripts to ensure cross-platform compatability. This sequence diagram illustrates the interactions within the Azure CLI developer command structures. @@ -64,41 +72,101 @@ sequenceDiagram end ``` -## Infrastructure +## Azure Infrastructure Diagram -This diagram provides a visual representation of the infrastructure as deployed. It is intended to help illustrate the various components and interactions within Azure. +This diagram provides a broad visual representation of the infrastructure as deployed. It is intended to help illustrate the various components and interactions within Azure. ![[0]][0] -### Components +### Resource Catagories + +
+ +- :material-lan:{ .lg .middle } __Azure Virtual Network__ + + --- + + Illustrate the default network design. + +- :material-kubernetes:{ .lg .middle } __Kubernetes Node Pools__ + + --- -1. Azure Virtual Network - Illustrate the default network design. -2. Kubernetes Node Pools - Illustrate the design for the cluster nodepools. -3. Storage Resources - Illustrate how Storage Accounts and Cosmos Databases connect to the network. -4. Ingress Load Balancers - Illustrate how the Load Balancers created by Istio Gateways are available in the network. + Illustrate the design for the cluster nodepools. + +- :material-database:{ .lg .middle } __Storage Resources__ + + --- + + Illustrate how Storage Accounts and Cosmos Databases connect to the network. + +- :material-server-network:{ .lg .middle } __Ingress Load Balancers__ + + --- + + Illustrate how the Load Balancers created by Istio Gateways are available in the network. + +
## Software -In this workspace, we utilize a GitOps approach for efficient and reliable software management. This method leverages a Git repository as the source of truth for defining and updating the software configurations and deployments within the infrastructure. +This workspace utilizes a GitOps approach for efficient and reliable software management. This method leverages a Git repository as the source of truth for defining and updating software configurations and deployments within the infrastructure. ### GitOps Configuration -A GitOps configuration resides in this Git repository and uses a customized [repo-per-team](https://fluxcd.io/flux/guides/repository-structure/#repo-per-team) pattern. This repository includes: +A GitOps configuration resides in this Git repository and uses a gitops repository pattern. This repository includes: -- **Configuration Files**: YAML files defining the desired state of our components and applications. +
-- **Charts**: Helm charts used for defining, installing, and upgrading Kubernetes applications. +- :material-file-cog:{ .lg .middle } __Configuration Files__ -### GitOps Advantages + --- + + YAML files defining the desired state of our components and applications. + +- :material-package-variant-closed:{ .lg .middle } __Charts__ -- **Consistency and Standardization**: Ensures consistent configurations across different environments. -- **Audit Trails**: Every change is recorded in Git, providing a clear audit trail. -- **Rollbacks and Recovery**: Every change is recorded in Git, providing a clear audit trail. -- **Enhanced Security**: Changes are reviewed through pull requests, increasing security and collaboration. + --- + + Helm charts used for defining, installing, and upgrading Kubernetes applications. + +
+ +??? Tip "Learning Opportunity" + + Understand more about the [repo-per-team](https://fluxcd.io/flux/guides/repository-structure/#repo-per-team) pattern. + +### GitOps Advantages A GitOps approach simplifies the process of deploying and managing software, making it easier to maintain and update, as well as providing a configurable way of leveraging other software configurations by pointing to alternate repositories hosting other configurations. By leveraging this method, we ensure that our deployments can be extended to things that not only include the default software load. -![[1]][1] +
+ +- :material-sync:{ .lg .middle } __Consistency and Standardization__ + + --- + + Ensures consistent configurations across different environments. + +- :material-history:{ .lg .middle } __Audit Trails__ + + --- + + Every change is recorded in Git, providing a clear audit trail. + +- :material-backup-restore:{ .lg .middle } __Rollbacks and Recovery__ + + --- + + Easily revert to previous states if issues arise, enhancing system reliability. + +- :material-shield-check:{ .lg .middle } __Enhanced Security__ + + --- + + Changes are reviewed through pull requests, increasing security and collaboration. + +
+ -[0]: images/architecture.png "Architecture Diagram" -[1]: images/architecture_2.png "Gitops Diagram" \ No newline at end of file +[0]: images/architecture.png "Architecture Diagram" \ No newline at end of file diff --git a/docs/src/feature_flags.md b/docs/src/feature_flags.md index 6749427a..dc442a78 100644 --- a/docs/src/feature_flags.md +++ b/docs/src/feature_flags.md @@ -1,10 +1,38 @@ # Feature Flags -Feature flags can be set prior to running provision with the command `azd env set ` +Feature flags are configuration settings used to modify the default behavior of an OSDU™ personal instance. -## Reusable Entra App +
-Entra App configurations are by default automatically created but one can be reused or created manually as well. +- :material-toggle-switch-outline: __Toggle__ alternate functionality +- :material-cloud-outline: __Deploy__ alternate infrastructure +- :material-cog-outline: __Override__ default settings +- :material-wrench-outline: __Configure__ custom software + +
+ + +!!! warning "CLI Deployment Only" + Feature flags are implemented as named environment variables which correspond to ARM template parameter objects. + +!!! tip "Setting Feature Flags" + Set feature flags prior to provisioning. + ```bash + azd env set + ``` + +## Azure Region and Subscription + +Azure subscriptions and region location are set interactively by default but can be directly specified. + +| Feature Flag | Description | +|---------------------------|-----------------------------------------------------------------------------| +| AZURE_SUBSCRIPTION_ID | Azure subscription ID for resource deployment | +| AZURE_LOCATION | Azure location for resource deployment | + +## Microsoft Entra ID Application Registration + +Application registrations are created automatically with a naming convention of osdu-{environment}-{subscription} but can be manually created and provided. | Feature Flag | Description | |---------------------------|-----------------------------------------------------------------------------| @@ -13,20 +41,23 @@ Entra App configurations are by default automatically created but one can be reu | AZURE_CLIENT_PRINCIPAL_OID| Skip Principal ID lookup and use provided. | | AZURE_TENANT_ID | Skip Tenant ID lookup and use provided. | -## Custom Infrastructure +## Deploy Custom Infrastructure -Infrastructure customizations can be managed and modified using the following feature flags. +Infrastructure customizations can be modified using the following feature flags. | Feature Flag | Description | |---------------------------|-----------------------------------------------------------------------------| | ENABLE_BURSTABLE | User cheaper Burstable server types in the cluster | | CLUSTER_INGRESS | Specifies the Ingress type for the cluster (External, Internal, or Both) | | CLUSTER_VM_SIZE | Overrides the default server type with a custom VM size | +| ENABLE_BLOB_PUBLIC_ACCESS | Enables public access for storage account blob (False by default) | +| ENABLE_MANAGE | Enables a Bastion Host with a virtual machine for private admin access | -## Custom Software -Software customizations can be managed and modified using the following feature flags. +## Configure Custom Software + +Software customizations can be modified using the following feature flags. | Feature Flag | Description | |---------------------------|-----------------------------------------------------------------------------| @@ -38,43 +69,17 @@ Software customizations can be managed and modified using the following feature | SOFTWARE_BRANCH | Customizes the branch used for software definition | -## Experimental Software +## Configure Experimental Software -Experimental Software can be managed and modified using the following feature flags. +Experimental Software can be enabled using the following feature flags. | Feature Flag | Description | |---------------------------|-----------------------------------------------------------------------------| | ENABLE_EXPERIMENTAL | Enables loading of experimental software (False by default) | | ENABLE_ADMIN_UI | Enables loading of the Admin UI (False by default) | -## Storage Access - -Control public access to Storage. - -| Feature Flag | Description | -|---------------------------|-----------------------------------------------------------------------------| -| ENABLE_BLOB_PUBLIC_ACCESS | Enables public access for storage account blob (False by default) | - - -## Private Access - -Modify the infrastructure and network by enabling Bastion Host with a virtual machine to use for access. - -| Feature Flag | Description | -|---------------------------|-----------------------------------------------------------------------------| -| ENABLE_MANAGE | Enables a Bastion Host with a virtual machine for private admin access | - - -## Cluster Network - -Modify the cluster network configuration to utilize Azure CNI with Dynamic IP allocation. - -| Feature Flag | Description | -|---------------------------|-----------------------------------------------------------------------------| -| ENABLE_POD_SUBNET | Enables a separate subnet for pod networking in the AKS cluster | - -## Virtual Network Injection +## Enable Virtual Network Injection Modify the network configuration for use with a pre-existing virtual network. diff --git a/docs/src/getting_started.md b/docs/src/getting_started.md index bf20d66c..935ef7a3 100644 --- a/docs/src/getting_started.md +++ b/docs/src/getting_started.md @@ -1,10 +1,67 @@ # Getting Started -Before starting it is important to ensure the Azure Subscription is properly configured for a personal instance. +Prerequisites and configuration steps for deploying personal OSDU™ instances in an Azure Subscription. + +## Subscription Quota + +It is recommended to have at least 50 vCPUs in a region along with the ability to deploy Cosmos DB instances which can be resource constrained in some regions. Defaults for MSDN accounts can be increased by requesting a [quota increase](https://learn.microsoft.com/en-us/azure/quotas/regional-quota-requests). + +!!! note "Ensure Sufficient Quota" + The choice between BS and DS family vCPUs depends on your specific deployment requirements: + + - Increase DS family vCPU quota if necessary. + - Increase BS family vCPU quota if using `ENABLE_BATCH`. + +| Quota Name | Minimum Quantity | +|------------|------------------| +| Total Regional vCPUs | 100 | +| Standard BS Family vCPUs | 50 | +| Standard DS Family vCPUs | 50 | + + +!!! tip "Available Cosmos DB Regions" + Use the following command to determine the availability of Cosmos DB regions: + + === "Bash" + ```bash + az provider show --namespace Microsoft.DocumentDB \ + --query "resourceTypes[?resourceType=='databaseAccounts'].locations" \ + --output json + ``` + + === "PowerShell" + ```powershell + az provider show --namespace Microsoft.DocumentDB ` + --query "resourceTypes[?resourceType=='databaseAccounts'].locations" ` + --output json + ``` + + +## Estimating Costs + +Costs will vary widely based on the selected region, instance size, and usage. The following table provides a rough guideline for an idle instance. + +!!! note "Costs Will Vary" + Idle instance with no activity consumes approximately __$40.00__ per day. + +| Resource | Daily | Resource | Daily | +|----------|--------------|----------|--------------| +| Virtual Machines | $14.59 | Load Balancer | $0.60 | +| Log Analytics | $9.76 | Redis Cache | $0.49 | +| Storage | $2.75 | Key Vault | $0.09 | +| Azure Cosmos DB | $2.46 | Virtual Network | $0.08 | +| Microsoft Defender for Cloud | $1.82 | Container Registry | $0.06 | +| Container Instances | $0.03 | Bandwidth | $0.004 | +| Service Bus | $0.001 | | | + + ## Resource Providers -To ensure the successful deployment, the following Azure Resource Providers must be registered in the subscription. +The following Azure Resource Providers must be registered in your subscription. + +!!! tip "Register Resource Providers" + For instructions to register providers refer to the [Azure Resource Providers and Types documentation](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/resource-providers-and-types). | Resource Provider | Description | |-----------------------------------|-----------------------------------------------------------------------------| @@ -30,24 +87,41 @@ To ensure the successful deployment, the following Azure Resource Providers must | Microsoft.ServiceBus | Provides reliable messaging and publish/subscribe capabilities | | Microsoft.Storage | Manages Azure Storage accounts and resources | -### Registering Resource Providers +## Required Role Assignments + +To deploy and manage an OSDU™ personal instance, you need the following Azure role assignments: + +!!! tip "Assigning Roles" + For instructions on assigning roles, refer to the [Azure Role Assignments documentation](https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-steps). + +| Role | Purpose | +|-----------------------------------------|-------------------------------------------------------------------------------------------| +| Contributor | Manage all resources in the subscription, except for assigning roles or managing policies | +| Role Based Access Control Administrator | Manage access to Azure resources by assigning roles using Azure RBAC | +| Resource Policy Contributor | Create and manage resource policies | + +## Microsoft Entra App Registration + +Register an application in Microsoft Entra ID. This is required for OSDU™ personal instance integration with Microsoft Entra ID and delegate access with identity management. -To register the necessary resource providers for your subscription, please refer to the [Azure Resource Providers and Types documentation](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/resource-providers-and-types). +These credentials will be used in your ARM template deployment to authenticate and authorize the deployment process. -This documentation provides detailed instructions on how to register resource providers using the Azure portal, Azure CLI, and other methods. +!!! important + Only required when using custom ARM template deployments or using CLI feature setting overrides. -## Role Assignments +!!! tip "Registering Applications" + For instructions on registering applications, refer to the [Quickstart documentation](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app?tabs=certificate). -The following role assignments are required for users within the subscription to ensure the proper functioning of this solution: -| Role | Purpose | Role ID | -|-------------------------------|----------------------------------------------------------------------------------------------------------|--------------------------------------------------| -| Contributor | Grants full access to manage all resources, but does not allow you to assign roles in Azure RBAC, manage assignments in Azure Blueprints, or share image galleries. | `b24988ac-6180-42a0-ab88-20f7382dd24c` | -| Role Based Access Control Administrator | Manages access to Azure resources by assigning roles using Azure RBAC. This role does not allow you to manage access using other ways, such as Azure Policy. | `f58310d9-a9f6-439a-9e8d-f62e7b41a168` | -| Resource Policy Contributor | Users with rights to create/modify resource policies, create support tickets, and read resources/hierarchy. This role is essential for managing resource policies effectively. | `36243c78-bf99-498c-9df9-86d9f8d28608` | +| Name | Description/Value | +|------|-------------| +| Directory (tenant) ID | Unique identifier for the Microsoft Entra tenant | +| Application (client) ID | Unique identifier for the registered application | +| Object ID | Unique identifier for the application object in Microsoft Entra | +| Application (client) Secret | Confidential key used to authenticate the application | +| Single-page application redirect URI | http://localhost:8080 | -### Assigning Roles +!!! warning "Secure Your Secret" + The client secret is sensitive information. Make sure to store it securely and never commit it to version control systems. -To assign roles to users within your Azure subscription, follow the steps outlined in the [Azure Role Assignments documentation](https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-steps). -This documentation provides you with detailed instructions on how to assign roles using the Azure portal, Azure CLI, and other methods. \ No newline at end of file diff --git a/docs/src/images/cost_analysis.png b/docs/src/images/cost_analysis.png new file mode 100644 index 0000000000000000000000000000000000000000..c26ab230c7e8f66e5196c29042d6c8e65761aea3 GIT binary patch literal 144157 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ΠR|5gHL%D@0j+L3k&#KnP-)Jp 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�-DpJ41 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 literal 0 HcmV?d00001 diff --git a/docs/src/index.md b/docs/src/index.md index 63448e5b..46e26c7d 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -1,22 +1,27 @@ # Overview -OSDU Developer is an open-source solution designed to enable the creation of lightweight, personal instances of [OSDU™](https://osduforum.org/osdu-data-platform-primer-1/) running on the Azure Public Cloud. These personal instances are tailored specifically for developers and work with the [Azure Developer CLI](https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/overview). This allows engineers to explore and author applications or work directly on technology prior to transitioning to a fully managed service offering. A simplified one-click deployment capability, with fewer development features, is also available. +OSDU Developer is an open-source solution designed to enable the creation of lightweight, personal instances of the [Open Subsurface Data Universe (OSDU™)](https://osduforum.org/osdu-data-platform-primer-1/) platform running on the Azure Public Cloud. These personal instances are tailored specifically for engineers and are integrated with the [Azure Developer CLI (AZD)](https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/overview) for deployment along with a customized environment setup. The solution allows engineers to explore, integrate services, author applications, or work directly with specific technology prior to the transition to a fully managed service. + +An alternate deployment approach uses a simplified [custom ARM template deployment](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2Fosdu-developer%2Fmain%2Fazuredeploy.json). This method has a slightly more complicated implmentation of parameters with fewer integrations and automation as compared to the AZD deployment. As a result, it is less suited for a tight development loop but can be affective for quick personal deployments. !!! Note - Microsoft recommends using [Azure Data Manager for Energy (ADME)](https://azure.microsoft.com/en-us/products/data-manager-for-energy) for production workloads and integration testing. + Microsoft recommends using [Azure Data Manager for Energy (ADME)](https://azure.microsoft.com/en-us/products/data-manager-for-energy) for any production workloads and integration testing. -The primary goal of this solution is to provide an environment that functions within an inner loop process, delivering faster feedback for developers. This personal environment is user-friendly while maintaining compliance with varying organizational standards. It offers a flexible framework to facilitate deeper exploration of OSDU™ capabilities. +This solution aims to create an environment for efficient inner loop workflows, enabling rapid feedback for engineers. It balances user-friendliness with organizational compliance, offering a flexible pattern to work with for an in-depth exploration or expansion of OSDU™ capabilities. By providing enhanced transparency into the underlying components, it empowers developers to gain deeper insights and troubleshoot more effectively. Personal OSDU™ instances offer developers a unique advantage in early-stage development and integration, allowing for rapid prototyping and testing of OSDU™ based solutions. This approach aligns with modern software development practices, emphasizing the importance of rapid iteration and testing in application prototyping and cloud integration scenarios. ![[0]][0] -Deploying personal instances provides valuable insights into early-stage development and integration processes. This approach emphasizes transparency, cost-efficiency, and flexibility, empowering developers to engage in essential application and cloud development scenarios. +- **Observability**: Direct access to the underlying infrastructure and components +- **Faster feedback**: Accelerated development loops with established patterns for service development and rapid iteration +- **Compliant**: Ability to align with specific organizational standards and security requirements +- **Flexible**: Customized environments to suit diverse project needs -??? Tip "Learning Opportunities" +??? Tip "Learning Opportunity" Learn more about how inner and outer loop concepts can enhance developer productivity by viewing a discussion with Scott Hanselman, VP of Developer Community at Microsoft, on the Planet Argon Podcast: [The Fear Factor in Maintainable Software](https://www.youtube.com/watch?v=V5OhIjn7pJo). ## Personas -The Open Subsurface Data Universe (OSDU) platform is utilized by a variety of personas within the energy industry. +The OSDU™ platform serves a diverse range of professionals within the energy industry. Each persona may interacts with personal instances in different and unique ways, leveraging different capabilities and features to meet specific needs or challenges.
@@ -24,56 +29,50 @@ The Open Subsurface Data Universe (OSDU) platform is utilized by a variety of pe --- - Build applications leveraging OSDU APIs to manage subsurface data efficiently. - + Build applications leveraging APIs with the need to debug and interact efficiently. -- :fontawesome-solid-database:{ .lg .middle } __Data Engineers__ +- :fontawesome-solid-chart-line:{ .lg .middle } __Data Scientists__ --- - Ensure proper data ingestion, transformation, and accessibility within the OSDU ecosystem. - + Analyze data or explore integration options to derive insights using machine learning and statistical methods. -- :fontawesome-solid-chart-line:{ .lg .middle } __Data Scientists__ +- :fontawesome-solid-cloud:{ .lg .middle } __Cloud Architects__ --- - Analyze large volumes of subsurface data to derive insights using machine learning and statistical methods. - + Explore alternate designs and implementations for the platform and integrate it with additional cloud services or AI services. -- :fontawesome-solid-cloud:{ .lg .middle } __Cloud Architects__ +- :fontawesome-solid-database:{ .lg .middle } __Data Engineers__ --- - Design scalable, secure infrastructure to support the OSDU platform and integrate it with cloud services. - + Ensure proper data preparation and ingestion within the ecosystem to derive patterns for larger production datasets. -- :fontawesome-solid-user-tie:{ .lg .middle } __Domain Experts__ +- :fontawesome-brands-git-alt:{ .lg .middle } __DevOps Engineers__ --- - Utilize their specialized knowledge to develop domain-specific applications and services on the OSDU platform. + Streamline the deployment, monitoring, and maintenance of the platform and applications, ensuring efficient development and operations. -- :fontawesome-brands-git-alt:{ .lg .middle } __DevOps Engineers__ +- :fontawesome-solid-user-tie:{ .lg .middle } __Domain Experts__ --- - Streamline the deployment, monitoring, and maintenance of OSDU platform applications, ensuring efficient development and operations. + Utilize their specialized knowledge to develop domain-specific applications or services within the platform.
-- **DevOps Engineers**: Focus on the deployment, monitoring, and maintenance of applications on the OSDU platform, ensuring streamlined and efficient development and operational processes. - ## Benefits -:material-eye-outline: **Observability:** Interact directly with resources and software components within the solution to enhance observability through logs, dashboards, and source code debugging. +:material-eye-outline: **Transparent:** Interact directly with resources and software components within the solution to enhance observability through logs, dashboards, and source code debugging. -:material-cash: **Affordability:** Deploy with minimal resource consumption by omitting costly features like disaster recovery and backups, minimizing operational costs. +:material-cash: **Affordable:** Deploy with minimal resource consumption by omitting costly features like disaster recovery and backups, minimizing operational costs. -:material-swap-horizontal-bold: **Flexibility:** The solution provides adaptable infrastructure to meet various organizational needs, including: +:material-swap-horizontal-bold: **Configurable:** The solution provides adaptable infrastructure to meet various organizational needs, including: === "Virtual Network Injection" @@ -90,30 +89,37 @@ The Open Subsurface Data Universe (OSDU) platform is utilized by a variety of pe ## Scenarios -Several different scenarios illustrate the practical applications of this approach: +OSDU™ private instances are designed to support a wide range of use cases, catering to various needs within a software development lifecycle. By providing a flexible and customizable environment, it enables developers, engineers, and other professionals to explore and leverage the OSDU™ platform in multiple ways. Here are several key scenarios that illustrate the practical applications of this approach: -:material-cog: __Service Development__ +
-Create, update, debug, and work directly with OSDU services. +- :material-cog:{ .lg .middle } __Service Development__ + --- -:fontawesome-solid-laptop-code: __Application Development__ + Build, test, debug, and work directly with OSDU™ services and experimental features. -Streamlined development for applications before integration with a managed service offering. +- :fontawesome-solid-laptop-code:{ .lg .middle } __Application Development__ + --- -:fontawesome-solid-lightbulb: __Technology Innovation__ + Streamlined development for applications before integration with a managed service offering. -Fork and extend projects to explore deeper integration with various technologies such as Azure Fabric, Co-Pilot, and Power Platform. +- :fontawesome-solid-lightbulb:{ .lg .middle } __Technology Innovation__ + --- -:material-school: __Training and Onboarding__ + Fork and extend projects to explore deeper integration with various technologies such as Fabric, Co-Pilot, and the Power Platform. -Train new employees on the OSDU™ platform, offering hands-on experience in a controlled environment. +- :material-school:{ .lg .middle } __Training and Onboarding__ + --- + Train new employees on the OSDU™ platform, offering hands-on experience in a controlled environment. + +
-## Features +## Feature List | **Feature** | **Description** | |------------------------|--------------------------------------------------------------------------------------------------------------------|