Global finance calculators · transparent formulas

Work / Cloud FinOps

Cloud Product Cost Comparison

Compare normalized AWS, Azure, Google Cloud, Oracle Cloud, and DigitalOcean pricing across compute, object storage, managed databases, serverless, Kubernetes, GPUs, and network egress.

  1. 01Choose a product lane
  2. 02Set workload requirements
  3. 03Compare qualifying offers

Product lane

Compare one cloud workload at a time

Choose a product family first. Each lane uses its own billing unit and never ranks unlike services against one another.

one instance for the selected running hours. Linux on-demand instance compute that meets minimum vCPU and memory requirements.

Instant ranking

Virtual machines

47 matching offers across 5 providers

Lowest estimate

$55

Oracle Cloud

Median match

$222

List-price screen

Catalog coverage

128

offers · 36 official sources

Best priced match by provider

One qualifying row per selected provider.

AWS

EC2

t4g.xlarge

$98

Configuration
4 vCPU · 16 GiB RAM
List unit
$0.134/hour

AWS Graviton Arm instance; application and image compatibility must be checked.

Azure

Virtual Machines

Standard_D4ps_v5

$112

Configuration
4 vCPU · 16 GiB RAM
List unit
$0.154/hour

Ampere Altra Arm Linux VM; verify image and binary compatibility.

Google Cloud

Compute Engine

e2-standard-4

$98

Configuration
4 vCPU · 16 GiB RAM
List unit
$0.134/hour

On-demand baseline before sustained-use or committed-use discounts.

Oracle CloudLowest

OCI Compute

VM.Standard.E4.Flex · 2 OCPU / 16 GB

$55

Configuration
4 vCPU · 16 GiB RAM
List unit
$0.0750/hour

Modeled from OCI E4 OCPU plus memory resource rates; 1 x86 OCPU equals 2 vCPUs.

DigitalOcean

Droplets

Basic 8 vCPU / 16 GiB

$96

Configuration
8 vCPU · 16 GiB RAM
List unit
$0.143/hour

Basic shared-CPU Droplet; monthly cap is applied to the compute estimate.

Oracle Cloud

OCI Compute

VM.Standard.E4.Flex · 2 OCPU / 16 GB

Configuration

4 vCPU · 16 GiB RAM

Region

US East (Ashburn)

List unit

$0.0750/hour

Monthly estimate

$55

Oracle Cloud

OCI Compute

VM.Standard.A1.Flex · 4 OCPU / 24 GB

Configuration

4 vCPU · 24 GiB RAM

Region

US East (Ashburn)

List unit

$0.0760/hour

Monthly estimate

$55

DigitalOcean

Droplets

Basic 8 vCPU / 16 GiB

Configuration

8 vCPU · 16 GiB RAM

Region

Standard public price

List unit

$0.143/hour

Monthly estimate

$96

Google Cloud

Compute Engine

e2-standard-4

Configuration

4 vCPU · 16 GiB RAM

Region

Iowa (us-central1)

List unit

$0.134/hour

Monthly estimate

$98

AWS

EC2

t4g.xlarge

Configuration

4 vCPU · 16 GiB RAM

Region

US East (N. Virginia)

List unit

$0.134/hour

Monthly estimate

$98

Oracle Cloud

OCI Compute

VM.Standard.E4.Flex · 4 OCPU / 32 GB

Configuration

8 vCPU · 32 GiB RAM

Region

US East (Ashburn)

List unit

$0.150/hour

Monthly estimate

$110

Oracle Cloud

OCI Compute

VM.Standard.A1.Flex · 8 OCPU / 48 GB

Configuration

8 vCPU · 48 GiB RAM

Region

US East (Ashburn)

List unit

$0.152/hour

Monthly estimate

$111

Azure

Virtual Machines

Standard_D4ps_v5

Configuration

4 vCPU · 16 GiB RAM

Region

East US

List unit

$0.154/hour

Monthly estimate

$112

Google Cloud

Compute Engine

t2a-standard-4

Configuration

4 vCPU · 16 GiB RAM

Region

Iowa (us-central1)

List unit

$0.154/hour

Monthly estimate

$112

Azure

Virtual Machines

Standard_B4ms

Configuration

4 vCPU · 16 GiB RAM

Region

East US

List unit

$0.166/hour

Monthly estimate

$121

Catalog integrity

Source-dated estimates, not a universal cheapest-cloud claim

This checked-in catalog contains 128 representative offers from 5 providers. The selected VM compute lane was captured July 20, 2026; lanes refresh independently, and every row keeps its own verification date and official source.

Included: only the named meter and visible workload inputs.
Excluded: contracts, taxes, support, credits, connected services, and unstated transfer.
Next check: verify the shortlist in the provider calculator and benchmark the workload.

Research snapshot

Seven normalized cloud cost baselines across five providers

This is a representative screening catalog, not every cloud SKU, region, discount, or bill component. It contains 128 offers across seven separately normalized product lanes. Each benchmark below applies the same visible workload to the available rows, selects the lowest qualifying sampled offer for each provider, and links directly to the source used for that row.

Modeled monthly USD cost from public list-price samples. Zero can be a published control-plane or transfer allowance; it does not mean the full workload is free.
Normalized workloadAWSAzureGoogle CloudOracle CloudDigitalOcean
Virtual machines4 vCPU / 16 GiB Linux VM for 730 hoursBoundary: x86 on-demand compute only; disks, IP addresses, support and transfer excluded.$122t3.xlargeChecked 2026-07-20$121Standard_B4msChecked 2026-07-20$98e2-standard-4Checked 2026-07-20$55VM.Standard.E4.Flex · 2 OCPU / 16 GBChecked 2026-07-20$96Basic 8 vCPU / 16 GiBChecked 2026-07-20
Object storage1,000 GiB of standard or hot object storageBoundary: capacity only; requests, retrieval, replication and transfer excluded.$23S3 StandardChecked 2026-07-20$18Hot · LRSChecked 2026-07-20$20Standard regionalChecked 2026-07-20$26StandardChecked 2026-07-20$20Base subscriptionChecked 2026-07-20
Managed databasesOne managed database node with at least 2 vCPU / 4 GiB for 730 hoursBoundary: representative MySQL or PostgreSQL compute; storage, I/O, backups and HA excluded.$50db.t4g.medium · Single-AZChecked 2026-07-20$40Flexible Server · B2sChecked 2026-07-20$69Custom · 2 vCPU / 8 GiBChecked 2026-07-20$55E4 · 2 vCPU / 8 GiBChecked 2026-07-20$60Basic · 2 vCPU / 4 GiBChecked 2026-07-20
Serverless functions5 million invocations at 1 GiB and 250 ms average durationBoundary: requests and memory-duration only; gateways, logs and downstream services excluded.$15On-demand functionsChecked 2026-07-20$14Consumption planChecked 2026-07-20$3.33Representative function baselineChecked 2026-07-20$13On-demand functionsChecked 2026-07-20$21FunctionsChecked 2026-07-20
Managed KubernetesOne managed Kubernetes cluster for 730 hoursBoundary: control-plane or cluster-management fee only; workers, disks and networking excluded.$73Standard support clusterChecked 2026-07-20$0.00Free tier control planeChecked 2026-07-20$73Standard cluster managementChecked 2026-07-20$0.00Basic clusterChecked 2026-07-20$0.00Base control planeChecked 2026-07-20
GPU instancesOne GPU with at least 24 GiB GPU memory for 100 hoursBoundary: whole public on-demand instance; accelerator models are not performance-equivalent.$80g6.xlarge · NVIDIA L4Checked 2026-07-20$325NV36ads A10 v5 · NVIDIA A10Checked 2026-07-20$71g2-standard-4 · NVIDIA L4Checked 2026-07-20$200VM.GPU.A10.1Checked 2026-07-20$157NVIDIA L40SChecked 2026-07-20
Internet egress1,000 GiB of public-internet outbound transferBoundary: each row uses its named route and allowance; CDN, NAT and load-balancer fees excluded.$81Internet data transfer outChecked 2026-07-20$78Internet egress · Zone 1Checked 2026-07-20$120Premium Tier to North AmericaChecked 2026-07-20$0.00Outbound data transferChecked 2026-07-20$10Pooled transfer overageChecked 2026-07-20

89 sampled offers

Virtual machines

Linux on-demand instance compute that meets minimum vCPU and memory requirements.

Unit: one instance for the selected running hours. Snapshot: Jul 20, 2026.

5 sampled offers

Object storage

Standard or hot object capacity only; operations, retrieval and transfer remain outside the ranking.

Unit: stored GiB-month. Snapshot: Jul 20, 2026.

12 sampled offers

Managed databases

Representative managed MySQL or PostgreSQL compute tiers that meet minimum CPU and memory.

Unit: one database compute node for the selected hours. Snapshot: Jul 20, 2026.

5 sampled offers

Serverless functions

Invocation and memory-duration charges for one normalized function workload.

Unit: monthly invocations plus GB-seconds. Snapshot: Jul 20, 2026.

5 sampled offers

Managed Kubernetes

Control-plane or cluster-management fees only; worker infrastructure is deliberately excluded.

Unit: cluster control plane for the selected hours. Snapshot: Jul 20, 2026.

7 sampled offers

GPU instances

Whole on-demand GPU instances screened by GPU count and memory, not ranked by performance.

Unit: one GPU instance for the selected running hours. Snapshot: Jul 20, 2026.

5 sampled offers

Internet egress

A narrow public-internet transfer component under each row’s named route and allowance.

Unit: outbound GiB per month. Snapshot: Jul 20, 2026.

What this research adds

The matrix keeps unlike services in separate rows, preserves the qualifying SKU and source date, and makes every supported product lane readable without operating the interactive filters. It is designed to create an auditable shortlist; provider calculators and account-specific quotes remain the purchasing authority.

Continue the workload model

Add the transfer path with the cloud egress calculator or estimate model calls with the LLM API cost calculator. Review the source methodology and Research Desk authorship standard.

Continue the calculation

Useful next checks commonly used alongside Cloud Product Cost.

All calculators

The full guide

Cloud product cost comparison: normalize usage before comparing the price

By TaprobaneFi Research Desk · Reviewed and updated July 20, 2026 · Global educational edition

A cloud-product comparison is only useful when the rows represent the same workload and billing boundary. Providers package compute, object storage, managed databases, serverless execution, Kubernetes, GPUs, and network transfer in different units. One service may bundle capacity and operations, another may meter them separately, and a third may include an allowance before charging overage. Region, architecture, performance tier, redundancy, operating system, and purchase model can change the rate even when two products have similar names.

This calculator turns a common requirement into a source-dated public list-price estimate across supported providers. It is designed for early budgeting and shortlist creation, not procurement or a universal provider ranking. Read each result as the outcome of the visible service category, normalized usage, location, billing unit, and catalog snapshot. A lower row does not prove that a product offers equivalent performance, reliability, support, ecosystem fit, or final invoiced cost.

Define the workload before looking at provider names

Begin with a bill of materials, not a provider name. A web application might need application compute, an orchestration layer, a managed relational database, object storage, outbound delivery, logging, and backups. An analytics or AI system might add GPU-hours, high-performance disks, snapshots, and cross-region transfer. Price each material service separately, then combine the compatible rows. Comparing an isolated VM on one cloud with a managed application platform on another would omit work that one provider is performing for the customer.

Define the minimum usable resource and service level for every line. Compute needs vCPU, memory, architecture, operating system, instance count, and hours. Storage needs capacity, storage class, redundancy, operations, retrieval, and transfer. A database needs engine, compute, memory, storage, I/O, backup, and availability topology. Serverless needs invocation count, duration, allocated memory or CPU, and concurrency assumptions. Kubernetes needs control-plane fees plus worker nodes and adjacent network and storage resources.

Use ‘at least’ matching for capacity where overprovisioning is valid, but preserve the excess. A 4-vCPU, 32-GB machine can satisfy a 4-vCPU, 16-GB minimum, yet it is not an exact equivalent. For performance or resilience tiers, use explicit eligibility rules instead of assuming a larger number is always better. Multi-zone databases, infrequent-access objects, GPUs, and serverless runtimes can have constraints that a simple capacity comparison cannot express.

Inputs worth preserving with every result

  • Service category, region, durability or availability target, and performance tier.
  • Capacity, operation count, running duration, request volume, and data-transfer path.
  • Whether shared, burstable, flexible, interruptible, or dedicated resources are acceptable.
  • Public price type, currency, billing unit, catalog timestamp, and exact provider SKU.
  • Taxes, support, licensing, commitments, discounts, and resilience assumptions excluded from the row.

Normalize the service unit without erasing provider differences

Normalization converts like quantities into a common comparison unit while retaining the provider's raw unit, SKU, region, and terms. Time can be reduced to seconds or hours; data can be reduced to bytes before being displayed as GB or GiB; request prices can be converted to cost per thousand or million operations; and provisioned capacity can be expressed per GB-month. Do not equate decimal GB with binary GiB or a request with a read unit when the provider defines a more specific operation.

Compute needs additional care. A vCPU is commonly a schedulable hardware thread, but processor generation, clock behavior, simultaneous multithreading, sustained allocation, and shared-host contention differ. Oracle Cloud Infrastructure publishes many x86 shapes in OCPUs and explains that one x86 OCPU corresponds to two vCPUs. Arm OCPUs and shared-core products require their own mapping. Memory catalogs may use MB, GB, or GiB, and GPU rows must retain accelerator model, device count, memory, interconnect, and whether host compute is included.

Service tiers are categorical, not merely numeric. Standard object storage is not equivalent to archive storage; provisioned database I/O is not equivalent to an included baseline; serverless duration billed in one-second increments is not necessarily comparable with a platform that rounds differently. Normalization is a transparent catalog mapping, not a promise of performance or feature parity. The original SKU and unit must remain available so a reviewer can reconstruct every estimate.

Examples of category-specific normalization
CategoryPossible common unitDetail that must be retained
CPUvCPU countOCPU mapping, shared or dedicated, architecture, generation
Object storageGB-month plus operationsClass, durability, redundancy, retrieval and minimum duration
ServerlessRequests plus GB-seconds or vCPU-secondsRounding, free allowance, concurrency and runtime
NetworkTransferred GB by pathSource, destination, direction, tier and processing products
PriceModeled monthly costCurrency, region, SKU, commitment and effective date

How the 730-hour provisioned-compute estimate works

For an hourly VM, database node, Kubernetes worker, or other continuously provisioned compute row, the simple estimate is hourly price multiplied by running hours and resource count. The default 730 hours is the average month implied by 365 days multiplied by 24 hours and divided by 12 months. It is a comparison convention, not the duration of every billing month. A 28-day month has 672 hours, a 30-day month has 720, and a 31-day month has 744.

At 730 hours, three instances priced at 0.10 currency units per hour produce a compute-only estimate of 219 currency units: 0.10 multiplied by 730 multiplied by 3. For a service that runs only during business periods, replace 730 with a measured schedule. If autoscaling changes the fleet size through the month, calculate instance-hours by size and add the results instead of entering the peak count for every hour.

Provider monthly prices and caps need provider-specific treatment. DigitalOcean's Sizes API returns both hourly and monthly prices, so the provider's monthly value should be retained rather than reconstructed blindly. Serverless functions and request-based databases should instead use measured executions and duration; object storage should use average stored capacity and operations. Reservations and commitments may quote an upfront or term price. Any derived effective hourly value must state its amortization period and utilization assumption. Actual bills can also use per-second or per-minute granularity and minimum-charge rules that a 730-hour estimate does not reproduce.

Fixed compute, flexible shapes, Kubernetes workers, and GPUs

AWS EC2 and Azure Virtual Machines commonly expose fixed named sizes for comparison: a SKU identifies a defined processor and memory bundle, with additional dimensions for region, operating system, tenancy, and purchase option. DigitalOcean Droplet sizes similarly bundle vCPUs, memory, disk, transfer allowance, regional availability, and current hourly and monthly prices in its Sizes API. A normalized calculator can evaluate these rows after verifying their attributes and units.

Google Compute Engine often reports vCPU and memory usage as separate billable resources even when the user launches a predefined machine type. A correct adapter maps the machine type's guest CPU and memory specification to the relevant regional core and memory SKUs, then adds the components. Tiered rates, sustained-use treatment, custom-machine premiums, sole tenancy, GPUs, and premium operating-system images can require additional lines.

OCI flexible shapes let a user choose OCPUs and memory within published minimum, maximum, and per-OCPU constraints. Their estimate must be assembled from the applicable OCPU-hour and memory-GB-hour prices, after converting the requested vCPUs to the correct OCPU basis for that architecture. A flexible configuration that violates the shape's ratio or regional availability should be rejected, not priced as though it were launchable.

Managed Kubernetes is not a single compute SKU. Price the control plane if the provider charges for it, then add worker nodes, persistent volumes, load balancers, public addresses, observability, and network transfer. Serverless or autopilot-style Kubernetes modes can meter requested pod resources instead of fixed workers. GPU comparisons must match the exact accelerator and count, then determine whether CPU and host memory are bundled. GPU memory capacity alone does not establish equivalent training or inference throughput.

Object storage and egress require a path-and-operations model

Object storage cost normally has several independent components: average stored capacity, storage class, operation counts, retrieval or early-deletion charges, replication, and data transfer. A low capacity rate for an archive tier is not comparable with a standard hot tier if the workload reads objects frequently or deletes them before a minimum storage duration. Model writes, reads, listings, lifecycle transitions, and retrieval volume using the operation categories in the exact provider rate card.

Network pricing begins with the path. Record the sending service and region, receiving destination, direction, volume, and any availability-zone, region, CDN, load-balancer, NAT, or private-connectivity hop. Inbound internet transfer is often treated differently from outbound delivery, and a response to an inbound request is still outbound data. Free allowances may aggregate at an account or service level and must not be applied independently to every row.

Normalize data from bytes rather than assuming equally labeled GB and GiB values represent the same volume. Apply progressive volume tiers band by band unless the provider states that one achieved rate applies to all usage. A zero-egress claim for one product does not remove storage operations, compute, CDN, or network-processing charges elsewhere in the architecture.

Managed databases and serverless products are bills of materials

A managed database comparison must align engine and service level before price. Include provisioned or serverless compute, memory, primary storage, I/O or throughput, backup retention, replicas, multi-zone deployment, cross-region replication, and outbound transfer. One provider may bundle I/O and backups while another exposes separate meters. A single-node development database is not a valid substitute for a production high-availability topology merely because both run the same engine.

Serverless estimates usually combine requests with execution duration and allocated resources. Use measured invocation counts, duration distributions, memory or CPU allocation, architecture, and concurrency. Apply free allowances only at their documented aggregation scope. Cold starts, retries, background extensions, provisioned concurrency, orchestration steps, and connected API gateways can add usage that a request count alone misses.

For both categories, distinguish provisioned capacity from consumption pricing. Multiplying a serverless request price by 730 hours is wrong, while modeling an always-on database node for only its active query seconds understates the bill. Keep each meter in its native unit, calculate it separately, and add the components only after the workload boundary is consistent.

Keep on-demand, commitments, and interruptible capacity separate

The cleanest cross-provider baseline is current public on-demand or pay-as-you-go pricing for the selected service, region, and configuration, without a long-term commitment. Reserved Instances, Savings Plans, committed-use discounts, reserved database capacity, enterprise agreements, private rate cards, credits, free tiers, and negotiated marketplace terms are excluded unless the result explicitly identifies and models them. A discounted rate without its term, payment timing, scope, and utilization assumption is not comparable with an uncommitted rate.

Spot, preemptible, and other interruptible products should also be excluded from a default ranking. Their lower prices come with interruption risk and, depending on the provider, prices or availability can change. AWS states that its Price List catalog does not contain EC2 Spot prices. Google notes that Spot pricing can change and that Spot VMs can be preempted. These products can be valuable for fault-tolerant batch workloads, but they belong in a separately labeled scenario with restart, checkpointing, and capacity-risk assumptions.

Do not stack discounts or free allowances mechanically. Eligibility, aggregation, and order-of-application rules vary, and Google documents that its VM discount types cannot simply be combined. For procurement, obtain account-specific quotes and compare total committed spend and uncovered usage, not only an advertised percentage reduction from list price.

Freshness depends on the provider's official catalog

A comparison grid should display the source and `price as of` timestamp for every row. AWS publishes anonymous Price List files across services and offers SNS notifications when those files change. Azure's unauthenticated Retail Prices API exposes public meters across services, while its authenticated Resource SKUs API supplies compute capabilities such as vCPU and memory. Google requires an API key for the public Cloud Billing Catalog API and says a latest-pricing response can be up to 12 hours old; machine specifications come from the authenticated Compute Engine machine-types API.

Oracle provides an anonymous JSON product-price endpoint, but regional compute-shape constraints and availability come from the signed ListShapes operation. DigitalOcean's authenticated Sizes API returns current Droplet configuration, region availability, and hourly and monthly prices together; other DigitalOcean categories may require their product documentation or separate APIs. No provider feed should be assumed to expose every discount, bundled feature, technical specification, or real-time capacity state.

Not every source publishes a changelog, effective date, or historical price. A production updater should retain immutable raw snapshots, follow pagination, compare hashes or catalog versions, validate unexpected row-count and price changes, and publish a new normalized catalog atomically. Separate adapters are needed because a generic price record cannot infer whether a meter means stored capacity, requests, transfer, provisioned compute, execution duration, or an add-on.

This guide was fact-checked on 20 July 2026. That date is not a promise that a displayed price remains current. Reopen the linked provider source before a purchasing decision, especially when a row lacks a recent successful refresh. If an updater fails, the application should show the last verified timestamp rather than silently presenting cached data as live.

Read the ranking as a shortlist, not a verdict

A lower monthly estimate means only that the normalized candidate is cheaper under the entered workload and selected public list-price assumptions. It does not measure application throughput, latency, durability, recovery time, feature completeness, ecosystem fit, operational skill, carbon objectives, or migration cost. It also does not guarantee capacity, quota, service availability, or an equivalent SLA in the desired location.

Review overprovisioning and omitted components alongside price. A VM with twice the required memory may rank well but be wasteful; archive storage may look inexpensive until retrieval; a serverless function may exclude its gateway; and a database row may omit replicas or I/O. Test shortlisted products with representative load, then update the model with measured runtime, requests, data paths, and adjacent-service consumption. The useful outcome is an auditable shortlist whose assumptions can be changed, not a universal declaration that one cloud is cheapest.

Costs and risks outside this calculator

A category result includes only the meters explicitly shown. VM rows may omit disks and network; object-storage rows may omit operations and retrieval; database rows may omit replicas and backups; serverless rows may omit gateways and orchestration; Kubernetes rows may omit workers, volumes, load balancers, and observability; GPU rows may omit host compute and storage. Public IPv4 addresses, NAT gateways, monitoring, logging, support plans, software licenses, taxes, and currency conversion can also materially change the total. Bundles and allowances must never be assumed across providers.

The calculator cannot model real-time capacity, quotas, SLA credits, outages, performance variance, burst limits, durability outcomes, sustained-use aggregation, invoice rounding, account-level discount eligibility, or every regional exception. Public catalogs generally show list pricing, not a customer's final rate. Reconcile the first production month against detailed billing exports and investigate differences by SKU, usage unit, and data path. Before committing meaningful spend, confirm the exact product, configuration, region, price type, billing unit, and terms in the provider console or a written quote.

This guide is educational. Calculator outputs depend entirely on the assumptions entered and do not predict investment returns, inflation, fees, taxes, or market conditions. Rules and product terms differ by country; verify any decision with current primary sources and an appropriately qualified professional. Nothing here is financial, tax, legal, or investment advice.

Interpret the number

Normalize within a product lane before comparing providers

Each lane has its own denominator: VM hours, stored gigabyte-months, database instance hours, function requests and execution, cluster hours, accelerator hours, or outbound gigabytes. The interface never ranks those unlike units in one list.

The monthly result includes only the cost components named in the selected lane. A database may still need storage, backups and transfer; a VM may need disks and public networking; a serverless workload may add gateway, logging and downstream-service charges.

Provider catalogs change independently and technically similar labels can hide performance or policy differences. Read the source and freshness marker, validate the shortlist in the provider calculator, and test the real workload before committing.

Audit public-internet transfer in more detail

Before you act

Common questions

Can every cloud product be compared in one universal grid?

No. The product selector creates a separate comparison lane with its own inputs and billing unit. A storage price is not ranked against a VM or function price because the resulting numbers answer different questions.

Why do always-on products use 730 hours for a full month?

730 is a common planning average based on 8,760 hours per year divided by 12. Your invoice follows the provider’s actual metering rules, so use the runtime control for workloads that stop or scale down.

Are reserved, savings-plan, committed-use, and spot prices included?

The initial comparison uses standard on-demand or pay-as-you-go list prices. Commitment and interruptible prices have different eligibility, payment, capacity and interruption assumptions and should be compared in separate modes.

Is this the complete cloud bill?

No. Each lane names the included meters. Add connected services, requests, storage, backups, internal transfer, IP addresses, gateways, load balancing, observability, support, licenses, taxes and contract-specific adjustments.