SlideShare a Scribd company logo
Dough:
OpenStack
Billing Project

Folsom Design Summit
2012-04-16


Luo, Zhongyue
lzyeval@gmail.com
TODO
 Intro
 Design concepts
 Architecture
 Example
 RPCs
 RDBMS model
 Billing logic
 Discussions
                   2
Intro
  What to expect from Dough
        Keep track of billing info to charge tenants
        Flexible customization of payment policies
              How much/often to charge for resource unit
              Handles prepaid or pay-as-you-go
  What Dough does not do
        Keep track of tenant’s resource usage
              Needs a monitoring/metering system
        Deduct money from account
              DIY using database as a queue
                                                           3
Design concepts
 Highly configurable
      Billing frequency, unit of measure
 Asynchronous
      All events are asynchronous
 Independent
      Pluggable clients to access other projects
 Scalability
      Handle billing of many users
 Nova conventions
      Message protocol                             4
RPC
Architecture                               Database
                                            Client

 Compute

 Network                RDBMS             Dashboard

 Storage




           Monitoring
                                Billing
           (Metering)




            NoSQL                                     5
RPC
Architecture                                         Database
                                                      Client

 Compute

  Network                   RDBMS                   Dashboard

  Storage




                Collector


 Monitoring
                                     Farmer         API daemon
 (Metering)

                                    Dispatch jobs   Subscribe or
                Collector                           unsubscribe
                                                     products /
                                                     Query info
               Check status /
              Retrieve usage /
              Create purchases                                     6
Example: creating an instance
  Compute

  Network                          RDBMS                 Dashboard

  Storage
                                                  2
                            Create subscription
                                  record


                            Collector
{'method': 'subscribe_item',
                                                               1
  'args': {
   Monitoring '62a8a396d9f44ef4a655ec1d7bd3801b',
    'user_id':                                  Farmer   API daemon
   (Metering) '864bbc5d23ea47799ae2a702927920e9',
    'tenant_id':
    'region': 'deafult',
    'item': 'instance',
    'item_type': 'm1.tiny', Collector
    'payment_type': 'hourly',
    'resource_uuid': 'uuidofinstance',
    'resource_name': 'nameofinstance',
}}
                                                                      7
Example: creating an instance
 Compute

  Network                   RDBMS                      Dashboard

  Storage

                                    Retrieve expired
                                     subscriptions
                             2
                Collector
                                         1
                    Request for
 Monitoring           charge           Farmer          API daemon
 (Metering)

                                     Dispatch jobs
                Collector


               Check status /
              Retrieve usage /
              Create purchases                                      8
Example: creating an instance
 Compute

  Network                             RDBMS                Dashboard
              Check instance
  Storage         status
                                  5
                     3          Create purchase record /
                                  Update subscription
                      Collector    status and expiring
                4                       datetime
              Retrieve instance
 Monitoring    usage quantity                  Farmer      API daemon
 (Metering)


                      Collector




                                                                        9
Example: creating an instance
 Compute

  Network                 RDBMS        2           Dashboard

  Storage
                                     RDBMS model


                                                            1
              Collector
                                                          RPCs

 Monitoring
                                  Farmer           API daemon
 (Metering)


              Collector

                              3
                                  Billing logic
                                                                10
RPCs
 subscribe_item
       Creates a subscription of a product
       Subscription status: ”creating”
 unsubscribe_item
       Updates the status of a subscription
       Subscription status: ”deleting”
 query_payment_types
 query_product_price
 query_usage_report
                                              11
RDBMS model
                                                 Created by...
 Regions          → region name
 Items            → resource name
 ItemTypes        → resource type name
                                                      Admin
 PaymentTypes → name, interval_unit,
                     interval_size, is_prepaid
 Products
     region, item, item_type, payment_type
     order_unit, order_size, price, currency
 Subscriptions → product, tenant, status              User
                     expires_at, resource_uuid
 Purchases        → subscription, quantity,           Collector
                     line_total                            12
Billing logic: Subscription states
                 Creation
                successful                            Unsubscribe
 creating                       verified

                         Item error


     Creation error
                                 error                     deleting
                                           Deletion
                                            error

                 Manually by admin


                                           Deletion successful
                             terminated
                                                                      13
Billing logic: Purchase creation
  For each non-deleted expired subscription:
      Status == ”creating”:
            Check if item finished creation(client)
            If product is prepaid:
                  Create purchase*
            Extend expires_at**
            Verify subscription
      Status == ”deleting”:
            Check if item finished deletion(client)
            If product is not prepaid:
                  Create purchase*
            Terminate subscription                    14
Billing logic: Purchase creation
  For each non-deleted expired subscription:
        Status == ”verified”:
                Check if item is valid(client)
                Create purchase*
                Extend expires_at**

  (*)Create purchase
        Insert purchase where
          line_total=quantity(from monitoring )*price/unit_size
  (**)Extend expires_at
        += dateutil.relativedelta(interval_unit=interval_size)
                                                                  15
Discussions
 Is this worth looking at?
 Any design problems?
 More requirements?




  https://github.com/lzyeval/talk-OSDS-2012
                                              16

More Related Content

Similar to Dough: OpenStack Billing Project

Crash course in Kubernetes monitoring
Crash course in Kubernetes monitoringCrash course in Kubernetes monitoring
Crash course in Kubernetes monitoring
Robert Munteanu
 
Meetup 12-12-2017 - Application Isolation on Kubernetes
Meetup 12-12-2017 - Application Isolation on KubernetesMeetup 12-12-2017 - Application Isolation on Kubernetes
Meetup 12-12-2017 - Application Isolation on Kubernetes
dtoledo67
 
Google Cloud Platform monitoring with Zabbix
Google Cloud Platform monitoring with ZabbixGoogle Cloud Platform monitoring with Zabbix
Google Cloud Platform monitoring with Zabbix
Max Kuzkin
 
Monitoring Your AWS Cloud Infrastructure
Monitoring Your AWS Cloud InfrastructureMonitoring Your AWS Cloud Infrastructure
Monitoring Your AWS Cloud Infrastructure
Newvewm
 
Vmug it's all about the app
Vmug it's all about the appVmug it's all about the app
Vmug it's all about the appsubtitle
 
01 power center 8.6 basics
01 power center 8.6 basics01 power center 8.6 basics
01 power center 8.6 basics
uthayan87
 
Hadoop summit 2010, HONU
Hadoop summit 2010, HONUHadoop summit 2010, HONU
Hadoop summit 2010, HONUJerome Boulon
 
Help, My Kafka is Broken! (Emma Humber & Gantigmaa Selenge, IBM) Kafka Summit...
Help, My Kafka is Broken! (Emma Humber & Gantigmaa Selenge, IBM) Kafka Summit...Help, My Kafka is Broken! (Emma Humber & Gantigmaa Selenge, IBM) Kafka Summit...
Help, My Kafka is Broken! (Emma Humber & Gantigmaa Selenge, IBM) Kafka Summit...
HostedbyConfluent
 
Monitoring and Log Management for
Monitoring and Log Management forMonitoring and Log Management for
Monitoring and Log Management for
Sematext Group, Inc.
 
Venus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScienceVenus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScience
OW2
 
Porting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsPorting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsMarcelo Pinheiro
 
Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...
Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...
Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...
Luigi Fugaro
 
PlovDev 2016: Оркестрация на контейнери с Kubernetes - Мартин Владев
PlovDev 2016: Оркестрация на контейнери с Kubernetes - Мартин ВладевPlovDev 2016: Оркестрация на контейнери с Kubernetes - Мартин Владев
PlovDev 2016: Оркестрация на контейнери с Kubernetes - Мартин Владев
PlovDev Conference
 
Part2 DC Man Vision and Roadmap Finalcustext
Part2 DC Man Vision and Roadmap FinalcustextPart2 DC Man Vision and Roadmap Finalcustext
Part2 DC Man Vision and Roadmap FinalcustextMicrosoft Norge AS
 
Windows Azure for Developers - Service Management
Windows Azure for Developers - Service ManagementWindows Azure for Developers - Service Management
Windows Azure for Developers - Service Management
Michael Collier
 
Cluster management with Kubernetes
Cluster management with KubernetesCluster management with Kubernetes
Cluster management with Kubernetes
Satnam Singh
 
Kubernetes intro public - kubernetes meetup 4-21-2015
Kubernetes intro   public - kubernetes meetup 4-21-2015Kubernetes intro   public - kubernetes meetup 4-21-2015
Kubernetes intro public - kubernetes meetup 4-21-2015
Rohit Jnagal
 
Kubernetes intro public - kubernetes user group 4-21-2015
Kubernetes intro   public - kubernetes user group 4-21-2015Kubernetes intro   public - kubernetes user group 4-21-2015
Kubernetes intro public - kubernetes user group 4-21-2015
reallavalamp
 
Choose Right Stream Storage: Amazon Kinesis Data Streams vs MSK
Choose Right Stream Storage: Amazon Kinesis Data Streams vs MSKChoose Right Stream Storage: Amazon Kinesis Data Streams vs MSK
Choose Right Stream Storage: Amazon Kinesis Data Streams vs MSK
Sungmin Kim
 

Similar to Dough: OpenStack Billing Project (20)

Crash course in Kubernetes monitoring
Crash course in Kubernetes monitoringCrash course in Kubernetes monitoring
Crash course in Kubernetes monitoring
 
Meetup 12-12-2017 - Application Isolation on Kubernetes
Meetup 12-12-2017 - Application Isolation on KubernetesMeetup 12-12-2017 - Application Isolation on Kubernetes
Meetup 12-12-2017 - Application Isolation on Kubernetes
 
Presentation
PresentationPresentation
Presentation
 
Google Cloud Platform monitoring with Zabbix
Google Cloud Platform monitoring with ZabbixGoogle Cloud Platform monitoring with Zabbix
Google Cloud Platform monitoring with Zabbix
 
Monitoring Your AWS Cloud Infrastructure
Monitoring Your AWS Cloud InfrastructureMonitoring Your AWS Cloud Infrastructure
Monitoring Your AWS Cloud Infrastructure
 
Vmug it's all about the app
Vmug it's all about the appVmug it's all about the app
Vmug it's all about the app
 
01 power center 8.6 basics
01 power center 8.6 basics01 power center 8.6 basics
01 power center 8.6 basics
 
Hadoop summit 2010, HONU
Hadoop summit 2010, HONUHadoop summit 2010, HONU
Hadoop summit 2010, HONU
 
Help, My Kafka is Broken! (Emma Humber & Gantigmaa Selenge, IBM) Kafka Summit...
Help, My Kafka is Broken! (Emma Humber & Gantigmaa Selenge, IBM) Kafka Summit...Help, My Kafka is Broken! (Emma Humber & Gantigmaa Selenge, IBM) Kafka Summit...
Help, My Kafka is Broken! (Emma Humber & Gantigmaa Selenge, IBM) Kafka Summit...
 
Monitoring and Log Management for
Monitoring and Log Management forMonitoring and Log Management for
Monitoring and Log Management for
 
Venus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScienceVenus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScience
 
Porting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsPorting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability Systems
 
Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...
Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...
Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...
 
PlovDev 2016: Оркестрация на контейнери с Kubernetes - Мартин Владев
PlovDev 2016: Оркестрация на контейнери с Kubernetes - Мартин ВладевPlovDev 2016: Оркестрация на контейнери с Kubernetes - Мартин Владев
PlovDev 2016: Оркестрация на контейнери с Kubernetes - Мартин Владев
 
Part2 DC Man Vision and Roadmap Finalcustext
Part2 DC Man Vision and Roadmap FinalcustextPart2 DC Man Vision and Roadmap Finalcustext
Part2 DC Man Vision and Roadmap Finalcustext
 
Windows Azure for Developers - Service Management
Windows Azure for Developers - Service ManagementWindows Azure for Developers - Service Management
Windows Azure for Developers - Service Management
 
Cluster management with Kubernetes
Cluster management with KubernetesCluster management with Kubernetes
Cluster management with Kubernetes
 
Kubernetes intro public - kubernetes meetup 4-21-2015
Kubernetes intro   public - kubernetes meetup 4-21-2015Kubernetes intro   public - kubernetes meetup 4-21-2015
Kubernetes intro public - kubernetes meetup 4-21-2015
 
Kubernetes intro public - kubernetes user group 4-21-2015
Kubernetes intro   public - kubernetes user group 4-21-2015Kubernetes intro   public - kubernetes user group 4-21-2015
Kubernetes intro public - kubernetes user group 4-21-2015
 
Choose Right Stream Storage: Amazon Kinesis Data Streams vs MSK
Choose Right Stream Storage: Amazon Kinesis Data Streams vs MSKChoose Right Stream Storage: Amazon Kinesis Data Streams vs MSK
Choose Right Stream Storage: Amazon Kinesis Data Streams vs MSK
 

Recently uploaded

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 

Recently uploaded (20)

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 

Dough: OpenStack Billing Project

  • 1. Dough: OpenStack Billing Project Folsom Design Summit 2012-04-16 Luo, Zhongyue lzyeval@gmail.com
  • 2. TODO Intro Design concepts Architecture Example RPCs RDBMS model Billing logic Discussions 2
  • 3. Intro What to expect from Dough Keep track of billing info to charge tenants Flexible customization of payment policies How much/often to charge for resource unit Handles prepaid or pay-as-you-go What Dough does not do Keep track of tenant’s resource usage Needs a monitoring/metering system Deduct money from account DIY using database as a queue 3
  • 4. Design concepts Highly configurable Billing frequency, unit of measure Asynchronous All events are asynchronous Independent Pluggable clients to access other projects Scalability Handle billing of many users Nova conventions Message protocol 4
  • 5. RPC Architecture Database Client Compute Network RDBMS Dashboard Storage Monitoring Billing (Metering) NoSQL 5
  • 6. RPC Architecture Database Client Compute Network RDBMS Dashboard Storage Collector Monitoring Farmer API daemon (Metering) Dispatch jobs Subscribe or Collector unsubscribe products / Query info Check status / Retrieve usage / Create purchases 6
  • 7. Example: creating an instance Compute Network RDBMS Dashboard Storage 2 Create subscription record Collector {'method': 'subscribe_item', 1 'args': { Monitoring '62a8a396d9f44ef4a655ec1d7bd3801b', 'user_id': Farmer API daemon (Metering) '864bbc5d23ea47799ae2a702927920e9', 'tenant_id': 'region': 'deafult', 'item': 'instance', 'item_type': 'm1.tiny', Collector 'payment_type': 'hourly', 'resource_uuid': 'uuidofinstance', 'resource_name': 'nameofinstance', }} 7
  • 8. Example: creating an instance Compute Network RDBMS Dashboard Storage Retrieve expired subscriptions 2 Collector 1 Request for Monitoring charge Farmer API daemon (Metering) Dispatch jobs Collector Check status / Retrieve usage / Create purchases 8
  • 9. Example: creating an instance Compute Network RDBMS Dashboard Check instance Storage status 5 3 Create purchase record / Update subscription Collector status and expiring 4 datetime Retrieve instance Monitoring usage quantity Farmer API daemon (Metering) Collector 9
  • 10. Example: creating an instance Compute Network RDBMS 2 Dashboard Storage RDBMS model 1 Collector RPCs Monitoring Farmer API daemon (Metering) Collector 3 Billing logic 10
  • 11. RPCs subscribe_item Creates a subscription of a product Subscription status: ”creating” unsubscribe_item Updates the status of a subscription Subscription status: ”deleting” query_payment_types query_product_price query_usage_report 11
  • 12. RDBMS model Created by... Regions → region name Items → resource name ItemTypes → resource type name Admin PaymentTypes → name, interval_unit, interval_size, is_prepaid Products region, item, item_type, payment_type order_unit, order_size, price, currency Subscriptions → product, tenant, status User expires_at, resource_uuid Purchases → subscription, quantity, Collector line_total 12
  • 13. Billing logic: Subscription states Creation successful Unsubscribe creating verified Item error Creation error error deleting Deletion error Manually by admin Deletion successful terminated 13
  • 14. Billing logic: Purchase creation For each non-deleted expired subscription: Status == ”creating”: Check if item finished creation(client) If product is prepaid: Create purchase* Extend expires_at** Verify subscription Status == ”deleting”: Check if item finished deletion(client) If product is not prepaid: Create purchase* Terminate subscription 14
  • 15. Billing logic: Purchase creation For each non-deleted expired subscription: Status == ”verified”: Check if item is valid(client) Create purchase* Extend expires_at** (*)Create purchase Insert purchase where line_total=quantity(from monitoring )*price/unit_size (**)Extend expires_at += dateutil.relativedelta(interval_unit=interval_size) 15
  • 16. Discussions Is this worth looking at? Any design problems? More requirements? https://github.com/lzyeval/talk-OSDS-2012 16