Git Product home page Git Product logo

isabella232 / earl-1 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from atlassian-labs/earl

0.0 0.0 0.0 521 KB

Earl is a tool designed to help estimate how much you spent on DynamoDb in the last week. It can help you tweak your auto scaling settings to help you minimise wastage and compare the cost of provisioned vs. on-demand capacity modes.

License: Apache License 2.0

Kotlin 100.00%

earl-1's Introduction

Earl

Earl is a tool designed to help estimate how much you spent on DynamoDb in the last week. It can help you tweak your auto scaling settings to help you minimise wastage and compare the cost of provisioned vs. on-demand capacity modes.

This DynamoDb expense is unacceptable!

-- The Earl

DynamoDb auto scaling behaviour can be difficult to predict for a human brain but this app will take the guess work out of the planning. If you find the waste of your money to be unacceptable, then this is the tool for you!

Earl in action

Building and Running

Earl is written in Kotlin, and uses JavaFX and SpringBoot while targeting Java11. To run Earl, install JDK11 and set your JAVA_HOME to point to it. Then run the project with the gradle command

./gradlew bootrun

Package to a jar with

./gradlew assemble

How to use Earl

To use Earl, you need to have valid AWS credentials in your environment to access the cloud watch data for the table you'd like to investigate.

The primary motivation of Earl is try out different auto scaling configurations in a quick, easy and safe way. DynamoDb auto scaling behaviour is very hard to predict and quite often, developers go on the conservative side of over-provisioning. This tool will help you try out different settings to see what works for your table.

Earl will also compare the cost of your auto scaling settings to on-demand capacity mode, to help you make that choice.

Fetching Cloud Watch Data

The process starts with fetching the usage data from could watch. Fill in the fields to fetch the data

Table details pane

Variable Description
Table Name Name of your DynamoDb table in AWS
Region The AWS region to fetch data from
Metric Fetch data for read or write capacity units
Index Name Optional. The name of any global secondary index

When you have filled out the fields, hit the "Fetch Cloudwatch Data" button. This will retrieve the usage data for that table for the previous week. This data will show up on the chart below.

Provisioned Capacity from Auto Scaling

Earl doesn't use cloud watch to display the provisioned capacity. Instead, Earl will use the inputs in the "Auto Scaling Settings" section to instead predict how auto scaling will behave. The prediction is quite accurate for the most part but can be off at the very start of the data, where previous data could have influenced it.

Auto scaling config

Variable Description
Min Capacity Minimum scaling capacity
Max Capacity Maximum scaling capacity
Target Capacity Target usage capacity (between 0.2 - 0.9)
Scaling Out Cooldown In seconds. The configured cooldown between scaling up events
Scaling In Cooldown In seconds. The configured cooldown between scaling down events

Hit the "Estimate Auto Scaling" button once you have your cloudwatch data loaded, to then also add the auto scaling provisioned capacity to the graph below.

Cost Estimation

Earl will also attempt to estimate the cost of running this table for the last week based on the data from cloud watch and the auto scaling provisioned capacity.

Cost Details

Variable Description
Price per CU per hour Price per Read/Write capacity unit in USD in provisioned capacity mode
Price per million requests Price per million Read/Write request in USD in pay-per-request/on-demand capacity mode

Note: All prices are in USD

This is the pricing info that comes from the public AWS pricing page. This is designed as an input for varying prices (e.g. price of RCUs/rWCUs, different regions, etc.). Update this number to match the pricing for your region/account.

You may hit the "Recalculate" button to refresh the prices, if any other box was updated.

earl-1's People

Contributors

mdsouza-atlassian avatar mfulleratlassian avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.