Skip to content

[Epic] Fully modular Deploy App #154

@benjamsf

Description

@benjamsf

1. Epic Request

What's your request about? Describe the solution you'd like

  1. Operating perspective: I can deploy Deploy App with tak, with tak & mtx, with N products with DA integrations available, on will.
  2. Developing perspective: I can integrate my product to be deployed with Deploy App clearly & easily.
  3. Product management perspective: I can easily enable / disable deployment of N products with DA integrations available.

Describe the Business Problem

  • Different products have different users
  • Different products have different infra requirements
  • Different products have different developer teams

Operating perspective

When in operation, the product should serve different users with products they actually need. The deployment logic should reflect this with minimum hassle.

Developer perspective:

We don't want to dream of centralized top-down organization to control every & each developer team. Instead we want enable them working in a cellular organization. Where Deploy App is a core enabler. A Deploy App operator will then choose, what integrations they want to use (though Deploy App will enforce & suggest best practices and the intended usage flow).

Product mgmt perspective

When an Operator has embraced Deploy App, they should be capable of choosing AND dropping product integrations AND a failing product integration should not sink the entire ship (instead - automatical Oops this certain thing wont happen today).

2. Additional Information

How should this feature be implemented?

Flow:

  • Operating flow
%% ──────────────── Operating flow ────────────────
sequenceDiagram
    participant DT as Developer Team
    participant OP as Deploy App Operator Team
    participant UG as User Group

    DT->>OP: Deliver new integration<br/>(code + artifacts)
    Note right of OP: Validates & enables<br/>integration in Deploy App
    OP->>UG: Deploys app with products x, y, z
    UG-->>OP: Uses features & reports feedback

Loading
  • Development flow
%% ──────────────── Development flow ────────────────
sequenceDiagram
    participant DA as Deploy App Core Devs
    participant PXDEV as Product X Dev Team
    participant PXINT as Product X Integration
    participant OP as Deploy App Operator Team
    participant UG as User Group

    DA->>PXDEV: Publish the platform <br/>+ docs & guidelines
    PXDEV->>PXINT: Build integration <br/>(code, tests, metadata)
    PXINT-->>OP: Becomes “Available to Enable”
    OP->>OP: Review licence / terms
    OP->>UG: Deploy Product X integration<br/>to selected users
    UG-->>OP: Adoption metrics / issues
    UG->>PXDEV: Product feedback & requests directly to product devs
    PXDEV->>DA: Requests for integration capabilities
    UG->>DA: Requests on core flows at Deploy App

Loading
  • Product mgmt flow
%% ──────────────── Product-management flow ────────────────
sequenceDiagram
    participant PXDEV as Product X Dev Team
    participant OP as Deploy App Operator Team
    participant PXINT as Product X Integration
    participant DAOP as Running Deploy App

    PXDEV->>OP: Ship integration
    OP->>PXINT: Enable Product X option
    alt Integration healthy
        PXINT-->>DAOP: Serves Product X features
    else Failure path
        PXINT--x DAOP: Error when deploying
        DAOP->>DAOP: Graceful degradation<br/>“Product X is not available today—sorry” - other products in same deployments may go forward
    end
Loading

Describe considered alternatives

Writing this up once there's more

How this feature could be implemented technically?

Probably it's mainly an Infra thing at core.

Right now deployments are done with a Docker (mega)compose which is the same across all operators of Deploy App.

Solution is probably to be made so that while Operators have only minimal extra things to do, different Operators can select what product integrations they can use.

Other significant things

This is an epic ticket and implementation requires many subfeatures, which are to be linked here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestepicEpic level description of goals

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions