AppFormix Chargeback calculates a cost for use of compute, network, and storage resources. The price of each resource is configurable by an administrator. Chargeback relies on two concepts of organization: project and departments.
- Project: A project is a collection of instances. A project is a technical organizational unit, often defined by a cloud management system. For example, in OpenStack, a project (formerly called tenant) is the means by which users share a quota of resource allocation and a collection of virtual machines, virtual networks, and storage volumes.
Costs are calculated on a per-project basis for resources allocated by the project and the virtual machines within that project.
- Department: A department is business organizational unit defined in AppFormix because the technical organization provided by project may not map directly to business groups in an organization. An administrator can assign the cost accrued by a project to one or more departments, on a percentage basis.
AppFormix generates monthly invoices for each department. A monthly invoice shows total cost charged to a department. The total cost is the sum of a department's share of the cost of each project. In the AppFormix Dashboard, a user may view a monthly invoice that displays detailed breakdown of cost based on compute, network, storage, and other resources.
In addition to monthly invoices, the month-to-date cost and projected cost for the current month are displayed in the "Cost Manager" tab of the Chargeback panel.
The costs accrued by a project may be charged to one or more Departments. When multiple Departments share the financial cost of a project, an administrator may split the cost of a project among multiple departments.
To configure the percentage of project cost, navigate to "Settings" > "Chargeback" > "Departments". The Departments table displays each department. Click on a department name to show or hide the department details that display the percentage of per-project cost that will be charged to the department.
There is a default department called "Unallocated Costs" which accrues costs for any project that has not been assigned to any department.
To add a new department, click the "Add Department" button. Enter a name for the new department, and click the green "Add" button. The new department will appear in the Departments table.
To configure the list of projects assigned to a department, click the pencil icon to edit a department. A department configuration box will appear below the Departments table. In the configuration box, a table lists each project for which the department accrues cost. The "Ownership (%)" column indicates the percentage of a project's cost that is assigned to the department being configured. The ownerhip percentage value may be edited. The "Unallocated (%)" column indicates the percent of a project's cost that is not allocated to any department. To add a project to the table, select the project in the "Select Project" drop-down menu and click the green "Add" button. After editing the department configuration, click the blue "Configure" button to save changes. To cancel changes without saving, click the "x" icon in the "Edit" column of the departments table.
To configure the rate charged for resources, navigate to "Settings" in the upper-left menu, and then "Chargeback" > "Rate Card". Select a tab for a resource type to display and configure the rate card for that resource. The "Current" tab for a resource type shows the current rate card and the date that the rate went into effect. The "History" tab for a resource type shows previous rate cards, organized as list by the effective date of the past rate card.
Select the "New Rate Card" tab for a resource type to configure a new rate card. The "Effective Date" is the month and year when the new rate card will start to be used. The effective date must be later than the currently configured rate card. After configuring the new rate card, click the blue "Save" button to save it.
Compute cost is charged by the hour that an instance is in one of the following states: Active, Suspended, or Allocated. The compute cost is based on the amount of compute resources (CPU, memory, local storage) that have been allocated (statically) for an instance on a host. The hourly rate is configured for each flavor type.
Instance states are defined as follows:
- Active: An instance is running on a compute host. Corresponding OpenStack state is 'ACTIVE'.
- Suspended: An instance has been paused or suspended. Runtime state of such an instance has been preserved in memory or on disk. Compute resources assigned to such an instance are still allocated on a compute host. Corresponding OpenStack states are 'PAUSED', 'SUSPENDED'.
- Allocated: An instance is stopped or shutoff. Runtime state of such an instance has not been preserved, but its disk image is still present on a compute host. The compute resources assigned to such an instance are still allocated on a compute host. Corresponding OpenStack states are 'SHUTOFF', 'STOPPED'.
In Settings > Chargeback > Rate Card, select the 'Compute' tab to display and configure the price for each flavor type and instance states. The 'Current' tab displays the rate card that is active. Use the 'New Rate Card' tab to configure a new rate card.
A virtual network allocated to a project is charged on an hourly basis.
A virtual network subnet allocated to a project is charged on an hourly basis.
Each Floating IP address is charged on a hourly basis for allocation of the IP address. The rate is expressed as cost per hour ($/hour) per IP address.
Network Data Transfer
Data transfer cost is calculated according to a progressive, tiered pricing model on a per instance basis. Charges are calculated in units of gigabyte of data transmitted by an instance (egress bytes). Data transfer amount is always rounded up to the next whole gigabyte. There is no charge for data received by an instance (ingress bytes).
An administrator creates price tiers by clicking on the 'Add Tier' button. The first tier starts from 0 GB. Each subsequent tier starts on the first gigabyte after the previous tier, and ends at a user-specified byte count. The final rate tier applies to all data transfer amounts that exceed the second-to-last tier.
Data Transfer Example
In the above figure, three tiers are configured: 0-100 GB, 100-1000 GB, and 1000+ GB. Supposed an instance transmits 399.4 GB of data during a billing period. The data transfer cost is calculated for 400 GB of data as follows: 100 GB * $0.50/GB + 300 GB * $0.30/GB = $140.
Storage cost is calculated using a progressive, tiered pricing model on a per project basis. Storage cost is charged to a project hourly for the the total volume storage allocated by a project. If a project allocates a 500 GB volume, but consumes only 100 GB in that volume, then the project is charged for the entire 500 GB allocation.
A rate card may be configured for each storage type. The storage types are discovered by AppFormix from the cloud management system (e.g., Cinder in OpenStack).
To configure storage prices, navigate to "Settings" > "Chargeback" > "Rate Card", and select the "Storage" tab. Select the "Storage Type" for which the "Rate Card" will apply. To add a new storage tier, click "+ Add Tier". Specify the end size in gigabytes and the cost per gigabyte in the tier. Click "Save" to save the rate card.
Consider the rate card above in which three tiers are configured: 0-10 GB, 10-100 GB, and 100+ GB. Suppose a project allocates a 25 GB volume for 10 hours, and subsequently allocates an additional 200 GB volume for 20 hours.
For each of the first 10 hours, the project will be charged for 25 GB, calculated as follows:
(10 GB * $0.40/GB/hour) + (15 GB * $0.30/GB/hour) = $8.50/hour
For each of the next 20 hours, the project will be charged for 225 GB, calculated as follows:
(10 GB * $0.40/GB/hour) + (90 GB * $0.30/GB/hour) + (125 GB * $0.10/GB/hour) = $43.50/hour
In total, for the 30 hours, the project will be charged: $8.50 * 10 + $43.50 * 20 = $955.
Each instance may be charged an OS license cost on a hourly basis. The OS license cost is associated with a disk image that is used to create an instance. AppFormix discovers the list of images from the cloud management system (e.g., Glance in OpenStack). The rate is expressed as cost per hour ($/hour) for allocating an instance that uses a particular image.