GithubHelp home page GithubHelp logo

freezr's Introduction

freezr

https://travis-ci.org/santtu/freezr.png?branch=master

What is freezr? Here's in a nutshell what freezr allows you to do:

  • Define domains, which is just a method of grouping accounts.
  • Define accounts, which map to an AWS accounts with access credentials.
  • Define projects, tied to an account, and which defines regions and filters to split instances running on that account into three classes of instances, saved, terminated and skipped.
  • Allows you to freeze a project, which will stop any saved instances, terminate any instance marked for termination (and not do anything about the rest).
  • Allows you to thaw a (frozen) project, causing it to start all saved instances that are stopped.

In a sense, freezr is a web service with the goal of saving money. Errr, that is, spending less money on AWS EC2 instances by stopping and terminating instances that don't have to be up and running. Freezr really helps to save money on a set of narrowly defined use cases:

  • You have to keep persistent (EBS-backed) instances available for a long time, but they don't have to be running all the time.
  • You need self-help start / stop functionality on those, but either don't want to give everybody needed IAM credentials, or you need easier mechanism to do this than command-line tools or AWS console.

The motivation behind writing freezr is my work -- a cloud and software consultancy -- where a typical customer project run the devtest operation in the cloud: Jenkins, build slaves, test targets and test runners etc. etc. Some of those resources are dynamic and are automatically managed (slaves), but some are a lot longer-running. During active development the costs incurred are just part of development costs, typically a minuscule portion of developer pay, for example. However the situation changes when moving from active development into maintenance phase. You can't really run down all the CI assets, as any changes (bug fixing, minor development) done during maintenance still needs to be tested. So you cannot really erase all of the infrastructure, like CI hosts for example.

So they end up costing you money. If the project has a low-intensity maintenance phase, you are essentially severely eating into your margins with those costs.

There a few things you can do to minimize your costs, but it's a bit of a tradeoff:

  • You could tune all persistent instances down to t1.micro instances. OTOH, depending on your use case your master might need a lot of CPU oomph or a lot of memory. It might not run reliably on smaller instances at all.
  • You could get the project manager (if you have those) to start and stop instances whenever needed from the AWS console. OTOH, your project manager might not be really inclined to do that, not always remember to do that, and this would, from developer's perspective add an extra layer of management cruft.
  • You could let developers do the above stuff. They'd write scripts to automate that and stuff them into the project repo, making it a little easier, but still, someone would have to remember to do that and all of them would need to know how to do that on every particular project.

So freezr aims to be a simple to use service for starting and stopping project assets in a controlled manner.

That's a bit of a long-winded explanation. (Reminder to self: rewrite this text.)

What it does and doesn't do

Currently freezr does:

  • Has REST API to CRUD resources and to freeze/thaw projects

What it does not do (all of these are planned):

  • Not easy to setup
  • No user authentication or access control
  • No web UI
  • Not production quality in any manner

How to use it?

Currently: you are on your own. This is very much still work in progress.

How to contribute

Fork, submit patches. See planned list above or even better, check the taskboard at trello. Contact me and ask to be added to the board and project.

freezr's People

Contributors

santtu avatar

Watchers

 avatar  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.