Open resouer opened 4 years ago
Should the experience of modeling an application cross over into modeling the roll-out steps of an application? We've tossed this idea around in the past but I don't think we've had a clear idea of how that would look declaratively. Most systems do this via CLI commands, relying on other systems to coordinate those commands. Service meshes do parts of this declaratively, but the configurations get very complex and seem to be a point of frustration for users.
Currently, CD projects are evolving to declarative workflow (e.g. Tekton, Spinnaker and Jenkins-X) so theoretically using OAM to model them should work.
But I agree the tricky part is about boundary (or, who is the "entry" point).
Most systems do this via CLI commands, relying on other systems to coordinate those commands.
IMHO this is what traditional systems did in an imperative workflow. Imperative workflow is easy to build, but not aligned well with the new wave of declarative systems like k8s and GitOps. Existing CD projects like Spinnaker have features beyond application model, but the application delivery part is an important area that we can improve and build declarative OAM traits and the traits can be used by those CD projects.
@resouer was there any progress to model delivery pipelines for OAM ?
@krmayankk we talked with team from Microsoft recently and the proposal is generating a Argo workflow from Application
entity (modeled with dependsOn
). Also, @hongchaodeng once implemented a datainput/output DAG in OAM k8s plugin as well.
In real world application delivery, a rollout Trait may not simply represent a rollout capability, but more like a pipeline, i.e. it includes several stages with rollback, automatic canary analysis and manual approval hooks etc.
In this case,
ApplicationConfiguration
is a combination of multiple “pipelines” from severalComponents
, each pipeline is controlled by correspondingTraits
.This scenario match the core concept of many CD projects like Spinnaker. But I am not sure if it's the best way that we want to use OAM as the present layer for CD project.