Skip to main content
Version: 2.0.1

Pricing-driven Development and Operation

Overview​

Specification languages for APIs (such as OAS) allow providers to formally describe an API’s functional aspects. Once expressed in such a format, the specification can be reused across multiple life-cycle tasks like documentation, testing, or validation.

By analogy, SaaS pricings –which capture both functional and extra-functional aspects– can also be leveraged in a similar way. Pricing-driven Development and Operation advocates precisely this shift: moving from the traditional conception of pricings as purely commercial structures to treating them as machine-oriented artifacts –iPricings– whose information can be systematically exploited to address the challenges derived from pricings in SaaS, such as pricing validation, identifying optimal configurations for specific user needs, etc.

Pricing-driven DevOps

The iPricing metamodel constitutes the first formalization of pricings in this direction, while its YAML-based serialization, Pricing2Yaml, brings this vision into practice.


Benefits​

Adopting this approach unlocks several opportunities for both providers and developers:

  • Richer pricing & subscription modeling
    Enables more expressive representations, paving the way for standardization and reusable tooling.

  • Methodologies for “pricification”
    Systematic design of consistent, manageable, and profitable pricings, supported by reusable pricing patterns.

  • Pricing-driven self-adaptation
    Ensures that user access dynamically aligns with the constraints of their subscription.

  • Subscription compliance testing
    Automates tests to guarantee that feature toggles remain consistent with pricing constraints.

  • Automated analysis of iPricings
    Facilitates tasks like configuration space exploration, optimal configuration search, and design-time error detection.


In essence, pricing-driven DevOps reframes pricings as first-class operational artifacts, turning them into a foundation for automation, testing, analysis, and self-adaptation across software life cycle.