Skip to content

Haishi2016/cloud-agnostic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloud-agnostic Deployment Scenarios

This repo contains a collection of cloud-agnostic deployment scenarios that use various open source and Azure capabilities.

🚧DISCLAIMER: Although We aim to provide relevant source code and artifacts for each scenario, some examples may be partial or not actively maintained due to limited resources. Our primary goal is to illustrate and summarize architectural patterns. Community contributions are warmly welcomed.

Use Azure Deployment Environments (ADE) to deploy Windows payloads to on-premises Windows machine

This sample uses Azure Deployment Environmnets (ADE) to manage a test bench running on on-premises Windows machines. It uses a custom container image that uses a self-hosted Eclipse Symphony to deploy a Windows-based benchmarking program to an on-premises Windows machine. Symphony uses a MQTT broker to reach the Symphony agent running on the Windows box to perform the actual deployment. ADE

Define cloud-agnistic data pipeline with OpenTofu and deploy to Azure IoT Operations (AIO)

This sample uses OpenTofu to define a cloud-agnostic data processing pipeline. When deployed to Azure, the pipeline is mapped to Azure IoT Operations (AIO) artifacts. When the SAME piepline is deployed locally (such as in a disconnected environment), it's mapped to use Eclipse Symphony to deploy a local pipeline.

OpenTofu

Deploy a hybrid cloud-agnostic app to a heterogeneous edge

This sample demonstrates how to use Radius to define a cloud-agnostic application and deploy it to an edge environment powered by Eclipse Symphony. Eclipse Symphony extends Radius' capabilities to support deployment of edge components across heterogeneous edge environments—environments composed of diverse device categories, including devices running different operating systems.

Radius

Dynamic region selection and region-less deployment of a cloud-agnostic app

This sample demonstrates how to use Eclipse Symphony to add a region selection process to the deployment process of a cloud-agnostic application described using Radius. It enables a region-less deployment workflow that guides users in deploying applications to the most appropriate regions. This architecture also integrates seamlessly with native region-less deployments, as those can be defined as additional environments within Radius.

Campaign

Automating deployment & configuration of Dapr cloud-agnostic app

This sample demonstrates how Eclipse Symphony can be used to automate the deployment of Dapr infrastructure (as a Symphony Target definition), as well as the deployment and configuration of Dapr sidecars using native Symphony Solution sidecar support.

Dapr

Application portability

This scenario summarizes four typical ways to achive application portability (across different clouds and edge environments).

burger-queen

  • Portability via platform parity

    When multiple platforms provide a shared capability portfolio, it becomes feasible to deploy an application across those platforms without modification. For example, Azure Arc aims to provide parity for selected Azure services so that applications written against Azure APIs can be deployed to Azure Arc environments.

    ✅Pros:

    • Deploy to different environments without modification
    • Similar service quality guarantees (often provided by the same vendor)

    ❌Cons:

    • True platform parity is difficult to achieve, so options are often limited
    • Vendor lock-in to platform vendor
  • Portability via platform abstraction

    In this pattern, platform capabilities—such as messaging or state stores—are abstracted behind common interfaces. This allows implementations for different platforms to be plugged in without impacting the rest of the system. For example, Eclipse Symphony follows this principle to ensure platform agnosticism.

    ✅Pros:

    • Great flexibility and tight control over abstraction
    • Platform parity is supported but not required; platform differences are hidden behind abstract interfaces

    ❌Cons:

    • More complex code and operational management
    • Leverage the lowest common denominator of platform capabilities
  • Portability via capability sidecars

    This pattern pushes platform-specific implementations into a separate service or sidecar. The application uses a capability proxy to communicate with the sidecar and acquire required capabilities. Dapr is a popular example of this model.

    ✅Pros:

    • Leverages existing platform implementation ecosystems
    • Simplifies application management since only sidecars need reconfiguration

    ❌Cons:

    • Vendor lock-in to the sidecar technology
    • Must conform to sidecar-defined interfaces
  • Portability via application servers

    If an application is built on top of certain application servers, such as J2EE, WebLogic, or Kubernetes, the application becomes portable wherever the application server is supported.

    ✅Pros:

    • Application servers offer additional abstractions that simplify building certain app types
    • Popular application servers benefit from strong community and tooling support

    ❌Cons:

    • Deep vendor lock-in to the application server
    • Portability is constrained by the adoption and ecosystem of the application server

portability

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published