Code Monkey home page Code Monkey logo

rack's Introduction

Convox Rack

Build Status

Convox Rack is open source PaaS built on top of expert infrastructure automation and devops best practices.

Rack gives you a simple developer-focused API that lets you build, deploy, scale and manage apps on private infrastructure with ease.

Private and Secure

Rack runs in an isolated VPC that only you and your team have access to. Application builds take place in a single-tenant build service, and the resulting Docker images are stored in a private ECS Container Registry. Application secrets are stored in S3, encrypted with KMS, a hardware security module. Application logs are archived in CloudWatch LogsGroups.

Your network is isolated, your platform is single-tenant, and your application data never leaves your AWS account.

Simple and Reliable

Apps run as Docker containers on ECS with HTTP access through ELBs. This architecture is modern, simple, provably reliable and scalable.

Container Logs are extracted from Docker with its native APIs and log drivers. Docker daemon options are minimally changed to avoid observed log rotation problems.

Logs are stored in CloudWatch Logs for archival and search, and Kinesis for streaming. Lambda subscribers extract metrics and forward to 3rd party systems. This is simple and cost effective for any volume of logs.

Complex and experimental things like overlay networking, persistent container volumes, and distributed file systems are simply not supported at the moment.

All throughout the stack we aim to leverage managed services and mature systems to accomplish tasks at hand. AWS offers the vast majority of infrastructure services and Docker the vast majority of runtime functionality.

Easy to Maintain

Platform updates are automatically applied with the convox rack update command.

Updates are executed with CloudFormation, so you can be confident that they will be safely executed.

Some updates are simple Rack API changes that will roll out in seconds.

Some updates are base security updates like a new AMI, Linux Kernel, or Docker engine. These are rolled out one instance at a time and are guaranteed to not cause application downtime.

Some updates are infrastructure migrations. For example, ECR is still in limited availability. When it does become available, a future convox rack update will safely migrate your clouds over to it.

Open Source

Rack is open source and free (as in beer and in speech) to use. You can look at the source code to audit how it configures your AWS account. You fork it and modify. You can contribute your ideas and patches back to the project so we can all share.

Philosophy

The Convox team and the Rack project have a strong philosophy about how to manage cloud services. Some choices we frequently consider:

  • Open over Closed
  • Integration over Invention
  • Services over Software
  • Robots over Humans
  • Shared Expertise vs Bespoke
  • Porcelain over Plumbing

Installation Quick Start

You need an AWS account and access credentials, the Convox CLI, and 10 minutes.

# Create and pass AWS access keys to the installer. These should be temporary keys and can be deleted after the install.

$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

# Download and install the convox CLI for your platform

$ curl -Ls https://install.convox.com/osx.zip > /tmp/convox.zip
$ unzip /tmp/convox.zip -d /usr/local/bin

# Install Rack. You may be interested in options like `--region us-west-2`

$ convox install
...

Success, try `convox apps`

See the Getting Started Guide for more instructions.

Development Quick Start

You need a Rack installed on AWS, a laptop with the Convox CLI, Go, and Docker, jq, and the Rack repo to run and develop the Rack API locally.

# Copy Rack AWS credentials and resource names to your development environment

$ STACK_NAME=$(convox api get /system | jq -r .name)
$ WEB_PID=$(convox api get /apps/$STACK_NAME/processes | jq -r '.[] | select(.name == "web") | .id' | head -1)
$ convox exec $WEB_PID env --app $STACK_NAME > .env

# Check out the Rack golang package

$ go get github.com/convox/rack/...
$ cd $GOPATH/src/github.com/convox/rack

# Start Rack locally in Docker

$ docker-machine start default
$ convox start
RUNNING: docker build -t convox-icytafnqqb /Users/noah/go/src/github.com/convox/rack
web      | running: docker run -i --name rack-web...
web      | [negroni] listening on :3000

# Log into the development server

$ convox login ($docker-machine ip default)

See the Development Guide for more instructions to develop, contribute and release changes for Rack and related components.

Contributing

License

Apache 2.0 © 2015 Convox, Inc.

rack's People

Contributors

ddollar avatar nzoschke avatar csquared avatar mattmanning avatar awsmsrc avatar rjocoleman avatar miguelmoll avatar adamenger avatar bobzoller avatar alex avatar oren avatar josegonzalez avatar nguyendangminh avatar nduthoit avatar imbriaco avatar keshavab avatar gmelika avatar prognostikos avatar mwarkentin avatar rcaught avatar mrluc avatar nathany avatar jbuck avatar anthonyrisinger avatar ming535 avatar kmonkeyjam avatar simonebrunozzi avatar robertg avatar shicholas avatar mfine avatar

Watchers

David Tran avatar James Cloos 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.