Skip to content
Notifications
Clear all

Moved from self-managed to Elastic Cloud. The bill shocked me. Details inside.

2 Posts
2 Users
0 Reactions
7 Views
(@db_diver)
Estimable Member
Joined: 4 months ago
Posts: 93
Topic starter   [#2959]

Having recently migrated a mid-sized security logging platform from a self-managed Elasticsearch cluster to Elastic Cloud, I anticipated an operational cost shift but was unprepared for the magnitude of the bill. My primary expertise lies in managed database services, so I approached this with a similar analytical framework, comparing resource consumption, provisioning models, and the often opaque translation of self-managed infrastructure into cloud service units. The shock wasn't merely from the total, but from the specific drivers, which differ significantly from comparable managed database offerings like Amazon RDS or Google Cloud SQL.

In our self-managed setup, we were running on three dedicated `i3.2xlarge` EC2 instances (with NVMe SSD) for hot data, and a larger set of cheaper instances for warm/cold tiers, managed via Curator. Our monthly EC2 bill, plus storage and snapshot costs, was relatively predictable. The move to Elastic Cloud was motivated by a desire to offload management overhead and leverage integrated features like automated snapshotting to S3.

However, the Elastic Cloud pricing model, based on "Resource Units," proved to be the critical factor. We configured a deployment with:
* A hot layer: 3 zones, 2x `8g` data nodes (which translates to 16 GB memory, 2 vCPU per node).
* A warm layer: 2 zones, 2x `4g` data nodes.
* A dedicated coordinating node: 1x `1g`.

Our initial bill was approximately 2.7x our previous AWS infrastructure cost for comparable performance. The analysis revealed several key points:

* **Resource Unit Calculation:** The bill is not simply for allocated vCPU and RAM, but for a derived "Resource Unit" which factors in both. The `8g` instance type consumes 32 RUs per hour. This bundled cost makes direct comparison to raw EC2 difficult.
* **Fixed, Multi-Zone Topology:** In Elastic Cloud, enabling multiple zones for high availability immediately multiplies your node count. Our self-managed setup used a single zone for the hot tier with a different disaster recovery strategy, which was cheaper.
* **Warm/Cold Tier Inefficiency:** The warm tier nodes, while smaller, run 24/7. In our old setup, we used significantly cheaper spot instances for warm/cold storage and powered down some nodes during low-traffic periods. Elastic Cloud does not offer comparable transient or pausable tiers for warm data.
* **The Coordinating Node Cost:** The need for a dedicated coordinating node (a recommendation for our query pattern) added a persistent, non-data-holding cost that we didn't have as a separate line item before.

```yaml
# Example of our cloud formation for self-managed (simplified)
Resources:
HotDataNode1:
Type: AWS::EC2::Instance
Properties:
InstanceType: i3.2xlarge
# ... cost largely driven by spot/interruptible pricing
```

The lesson here parallels issues in managed databases: the convenience of a fully-managed service comes with a premium for the abstraction, and more critically, with a loss of fine-grained cost control. You trade operational toil for financial predictability, but at a potentially much higher rate if your workload has variable patterns or can tolerate some level of risk (like spot instances).

My question to the community is whether others have undergone a similar migration and found optimization strategies specific to Elastic Cloud. Are there configuration patterns or tiering approaches within Elastic Cloud that can better approximate the cost efficiency of a well-tuned, self-managed cluster, particularly for security data with clear hot/warm lifecycle stages? I am also interested in comparisons to other managed logging backends, like Amazon OpenSearch Service, from a pure cost/resource perspective.


SQL is not dead.


   
Quote
(@data_diver_42)
Estimable Member
Joined: 4 months ago
Posts: 123
 

Yeah, the jump to Resource Units can be brutal. It's not just the raw compute, it's the packaging. On self-managed, you can size CPU and memory semi-independently. On Elastic Cloud, you're buying a preset combo, and if your workload needs, say, a lot of memory but moderate CPU, you're paying for unused vCPUs.

Have you looked at the actual utilization graphs in the Cloud console yet? Sometimes the shock is seeing how much *headroom* they're provisioning automatically compared to your old fixed cluster. That was my wake-up call.

What's your ingest rate and retention period looking like now? That's usually where the real bleed happens, especially if you're keeping a lot of data hot.


Data is the new oil - but it's usually crude.


   
ReplyQuote