Code Monkey home page Code Monkey logo

resource.proxy's Introduction

Calvinverse

Provides the tools and services to to create, configure and destroy environments for an application or service in a repeatable manner.

An environment is the collection of exclusive resources, services and data that work together to achieve one or more goals, e.g. to allow users to achieve their tasks.

Why

In some cases it would be nice to be able to create an environment in repeatable way, for instance

  • When running tests on a new feature or for performance. The ability to execute these in a fresh environment that matches the current production configuration reduces differences between the test and production.
  • The ability to create a new environment in a different geographic region.

The problem is that creating an environment from scratch is hard. It often involves creating different resources (container instances, load balancers, event systems, service discovery, configuration storage, data storage etc.) as well as configuring these systems, providing valid certificates, DNS names, securing the resources, setting up configurations etc..

Why not use (insert favorite tool here)

The problem of creating, updating and deleting resources is solved by many different tools, e.g. terraform or one of the orchestration systems (docker, Kubernetes etc.). But introducing secrets, certificates and configurations isn't always easy. This often involves different tools to handle these tasks in a safe and secure manner.

In cases where an environment needs to be destroyed after user it is often left to the user to initiate the destroy action. However users may forget this leading to expensive resources going unused. Most of the tools that are used to create resources aren't able to destroy the same resources on a schedule or based on events.

The goal for Calvinverse is to provide a service that will use the well known tools to create, update and destroy environments while adding the ability to inject configurations, certificates and secrets.

What is in the box

The Calvinverse resources can be divided into two groups. The first group contains the resources and services necessary to create new environments. This environment is called the provisioning or meta environment. The second group contains the resources that form a build environment for the Calvinverse resources. This environment can be created if desired but there are other ways to construct the services and resources in the first group.

Meta environment

The meta environment contains the following services and resources

  • A Dockerised service that provides a Web UI though which users can request creation, updating or deletion of environments. Additionally this UI provides an overview of all existing environments that a user has access to.
  • A Dockerised service that processes user requests by invoking the appropriate tools, e.g. Terraform, to apply the requested changes. This service also tracks the current state of all the known environments. This service is known as the provisioning service.

In order to create the meta environment one can either use the configuration file for the orchestrator of choice or the provisioning service locally and provide it with the desired environment configuration. The benefit of the latter approach is that, with the appropriate templates, it is possible to create the desired orchestrators prior to creation of the user environments.

Calvinverse build environment

The build environment contains the services and resources required to create all the images necessary for the meta environment.

This build environment may be used, however it is not required to do so if the meta environment images can be created in another fashion.

Environment requirements

Both the meta environment and the build environment make some assumptions about their greater surroundings. The following assumptions are made:

  • Service discovery is done via Consul. If a Consul datacenter exists then resources can be attached to this datacenter, otherwise there is a resource that can be used to create a Consul server cluster.
  • Environments can be defined in many ways. The Calvinverse resources assume that all the resources reachable via their own service discovery datacenter are part of their own environment.

resource.proxy's People

Contributors

pvandervelde avatar

Watchers

 avatar

resource.proxy's Issues

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.