Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Selling and automated provisioning of Microsoft/Azure products in a SaaS marketplace

Selling and automated provisioning of Microsoft/Azure products in a SaaS marketplace

Office 365, Azure marketplace and Azure Resource Manager templates selling on a SaaS marketplace.

DevOps@work 2018 in Rome
Global Azure Bootcamp 2018 in Rome

Giovanni Toraldo

March 23, 2018
Tweet

More Decks by Giovanni Toraldo

Other Decks in Technology

Transcript

  1. Welcome to the

    View Slide

  2. Selling and automated provisioning of
    Microsoft/Azure products in a SaaS
    marketplace
    Giovanni Toraldo
    twitter.com/gionn
    Cloudesire.com

    View Slide

  3. About me
    Giovanni Toraldo
    Open Source Enthusiast,
    Java coder, writer of the
    OpenNebula book, lead
    developer & co-founder at
    Cloudesire.com, shooting to
    2 euro coin at 36 meters with
    medieval heavy crossbow
    during the weekends
    3

    View Slide

  4. Platform for automated
    distribution of business
    applications and services
    4

    View Slide

  5. Microsoft Cloud Solution Provider Program
    CSP enables partners to become indirect resellers:
    ● own the customer lifecycle and relationship end-to-end
    ● set the price, terms and directly bill customers
    ● directly provision and manage subscriptions
    ● attach value-added services
    ● be the first point of contact for customer support
    https://partner.microsoft.com/en-us/cloud-solution-provider/w
    hats-required
    5

    View Slide

  6. 6

    View Slide

  7. 7

    View Slide

  8. Azure services under CSP
    ● Pay-as-you-go billing model
    ● Build on top of Azure Resource
    Manager (ARM)
    ● Subscription created in a
    customer tenant, but the
    customer cannot access it by
    default
    ● Once a customer has access
    to the subscription, can make
    changes to services anche
    alter consumption usage
    8

    View Slide

  9. How to automate selling?
    9

    View Slide

  10. What is Cloudesire
    10
    A Marketplace where different type of products can be sold:
    ● Web applications that needs a VM to run
    ● Web applications self-hosted (multi-tenant, e.g. dropbox)
    ● Services (whatever can be billed)
    A control panel where different users access a set of features:
    ● Customers: unified applications portal, billing, support
    ● Vendors: catalog, subscriptions, invoices, earnings
    ● Distributors: manage resellers catalogs
    ● Reseller: sell distributors products

    View Slide

  11. Cloudesire syndication
    A syndicated application in Cloudesire is an application that is
    directly managed by the software vendor.
    This feature enables software vendors to sell applications that are
    already hosted somewhere and that has native support for
    multi-tenancy.
    The provisioning of a new tenant should be almost instantaneous,
    and the integration has to be done directly via Cloudesire API.
    https://docs.cloudesire.com/docs/syndication.html
    11

    View Slide

  12. How syndication works
    Cloudesire platform will send HTTP requests (POST with a JSON body) to an
    external endpoint every time an interesting event occurs on the marketplace
    lifecycle:
    ● Subscription requested
    ● Subscription renewal
    ● Subscription termination
    The external endpoint should handle these notifications, e.g. fetch the needed
    information, provision a new user in its system and update the subscription status
    via Cloudesire API
    https://docs.cloudesire.com/docs/syndication.html#introduction-to-syndication
    12

    View Slide

  13. 13
    Example JSON webhook notification
    POST /endpoint HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    Host: vendor.example.org
    CMW-Event-Signature:
    sha1=bd637c3b084f7c5039aaf2808c3bc6bd7b6c283d
    {
    "date": "2015-01-12T11:19:30Z",
    "entity": "Subscription",
    "entityUrl": "subscription/2388",
    "id": "2388",
    "type": "CREATED"
    }

    View Slide

  14. 14

    View Slide

  15. Cloudesire-CSP integration process flow
    Azure
    Catalog
    CSP
    Catalog
    Cloudesire
    Marketplace
    Platform
    Microsoft
    Connector
    Microsoft
    CSP
    Customers
    Webhook
    push notifications
    (purchase orders)
    Invoke API
    (pay-per-use azure)
    REST API
    provisioning & delivery
    provisioning & delivery
    1
    2
    3
    5
    5
    Azure
    Connector
    ARM
    Resource
    Manager
    REST
    API
    Invoke API
    (subscription-based
    orders)
    4
    15

    View Slide

  16. Microservice architecture
    16
    ● Multiple heterogeneous software components
    ● JSON REST API
    ● Continuous Integration on CircleCI
    ● Packaging with Docker
    ● Provisioning on VM via Chef
    ● Automatically added behind load balancer
    ○ Nginx / Consul
    ● Error tracking via Sentry

    View Slide

  17. Microsoft-connector
    ● Spring-boot Java API microservice
    ● Stateless
    ● Handle cloudesire webhooks
    ● Kotlin/Java client Partner Center REST API
    ○ https://github.com/ClouDesire/partner-center-rest-api-client
    1. Create customer resource
    2. Place an order on the chosen product
    3. Handle subscription created by order placing
    a. Suspend/Resume
    b. Unprovision
    17

    View Slide

  18. Partner Center REST API reference
    18

    View Slide

  19. C# SDK available
    19

    View Slide

  20. Azure-marketplace-connector
    ● NodeJS API microservice
    ○ Expose API consumed by our microsoft-connector
    ● Implement Azure SDK for nodejs
    ○ https://github.com/Azure/azure-sdk-for-node
    ● Redis as pending job queue state
    Features:
    ○ Management of ARM templates
    ○ Accept end-user agreement via API
    ■ Found a bug
    20

    View Slide

  21. 21

    View Slide

  22. 22
    Marketplace UX
    License-based products

    View Slide

  23. Hook inside the cloudesire platform
    ● Create a new syndicated product
    ● Configure syndicated endpoint for webhooks
    ○ Subscription/Customer lifecycle:
    ■ Creation
    ■ Modification
    ■ Deletion
    ● Configure integration metadata
    ● Profit
    23

    View Slide

  24. Configure syndication endpoint (control panel)
    24

    View Slide

  25. Configure product to activate (control panel)
    To know which specific Microsoft products needs to be
    activated, we need to know and configure the unique ID of
    the specific product / plan
    25

    View Slide

  26. 26

    View Slide

  27. 27
    XLS with prices released every month

    View Slide

  28. 28

    View Slide

  29. License pricing per seat (control panel)
    ● Basic pricing configuration, volume discounts, tiers, ecc
    ○ https://docs.cloudesire.com/docs/platform.html#extra-resources-pricing-models
    29

    View Slide

  30. Marketplace homepage
    30

    View Slide

  31. 31

    View Slide

  32. 32

    View Slide

  33. Office 365 on public marketplace page
    33

    View Slide

  34. 34
    Marketplace UX
    Azure marketplace products

    View Slide

  35. Azure marketplace onboarding
    ● Generic offer id representing the pay-per-use Azure
    subscription
    ● Additional metadata to configure:
    ○ Publisher identifier
    ○ Image identifier
    35

    View Slide

  36. Azure marketplace onboarding
    36

    View Slide

  37. Azure marketplace onboarding
    ● End-user should configure a global prefix to access its
    own instance when buying the service
    37

    View Slide

  38. 38
    Marketplace UX
    ARM template products

    View Slide

  39. ARM templates onboarding
    ● Templates are JSON files that describe a deployment
    architecture
    ○ Azure resources for
    ■ Application
    ■ Data
    ■ Network
    ■ DNS access
    ● Re-use the Azure Marketplace configuration with more
    configuration parameter to link the JSON template and
    configure required variables
    39

    View Slide

  40. 40

    View Slide

  41. Azure Quickstart Templates
    41

    View Slide

  42. ARM template onboarding
    42

    View Slide

  43. 43
    Customer journey

    View Slide

  44. Marketplace catalog
    44

    View Slide

  45. Personal applications dashboard
    subscription renewal CTA
    self-generated URL to access
    the Azure Marketplace
    application
    “launch” CTA for directly access
    the provisioned app
    product rating, direct messaging
    with the vendor/distributor
    45

    View Slide

  46. Questions?
    46

    View Slide

  47. Thanks!
    47

    View Slide

  48. Sponsors

    View Slide