oam-dev / spec

Open Application Model (OAM).
https://oam.dev
Other
3.06k stars 247 forks source link

Model complex application delivery scenarios #341

Open resouer opened 4 years ago

resouer commented 4 years ago

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 several Components, each pipeline is controlled by corresponding Traits.

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.

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

resouer commented 4 years ago

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

hongchaodeng commented 4 years ago

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.

krmayankk commented 3 years ago

@resouer was there any progress to model delivery pipelines for OAM ?

resouer commented 3 years ago

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