Skip to content

Architecture

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.

Learning Opportunity

For a deeper understanding read about the Azure Well-Architected Framework.

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.

Learning Opportunity

Understand Bicep development with the official Azure Verified Modules.

GitOps: Declarative Configuration Management

GitOps a term introduced by WeaveWorks uses declarative configurations like Kustomize configs, Helm charts to manage software. Instead of scripting everything manually, GitOps uses a set of declarative configuration files that define a software desired state.

GitOps uses versioned CI/CD on top of a declarative infrastructure, allowing developers to "stop scripting and start shipping," 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.

Learning Opportunity

Dive Deeper into GitOps for Azure Kubernetes Service.

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.

sequenceDiagram
    participant Azd as user
    participant Provision as command
    participant Azure as azure


    rect rgb(191, 223, 255)
    alt
    Note over Provision: featureCheck
    Note over Provision: credCheck
    end
    Azd->>+Provision: azd provision
    Provision->>Azure: arm deploy
    Provision-->>-Azd: complete
    alt
    Note over Provision: softwareCheck
    Note over Provision: entraAuth
    end
    end

    rect rgb(144,238,144)
    alt
    Note over Provision: firstUser
    Note over Provision: refreshToken
    end
    Azd->>Provision: azd deploy
    activate Provision
    Provision-->>Azd: complete
    deactivate Provision
    alt
    Note over Provision: settingsJson
    end
    end

Azure Infrastructure Diagram

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]

Resource Catagories

  • Azure Virtual Network


    Illustrate the default network design.

  • Kubernetes Node Pools


    Illustrate the design for the cluster nodepools.

  • Storage Resources


    Illustrate how Storage Accounts and Cosmos Databases connect to the network.

  • Ingress Load Balancers


    Illustrate how the Load Balancers created by Istio Gateways are available in the network.

Software

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 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.

Learning Opportunity

Understand more about the 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.

  • 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


    Easily revert to previous states if issues arise, enhancing system reliability.

  • Enhanced Security


    Changes are reviewed through pull requests, increasing security and collaboration.