0.9.0 • Published 6 years ago

crossover v0.9.0

Weekly downloads
69
License
-
Repository
github
Last release
6 years ago

Crossover

Zero-downtime Node.js deployments

WARNING: Crossover is an experiment in progress and is not recommended for production use.

Purpose

  • Push new versions of an app into production with zero errors and zero dropped requests
  • Push new versions using HTTP
  • Incrementally roll requests onto the new version, falling back if errors or crashes are encountered

Installation

$ npm install -g crossover

Usage

The example app tarball URLs in these examples actually exist. Feel free to use them for testing.

$ crossover http://crossover-example.s3.amazonaws.com/app1.tgz
[master] preparing worker: http://crossover-example.s3.amazonaws.com/app1.tgz
[master] resolving dependencies
[master] forked worker 51500
[master] forked worker 51501
[worker:51500] starting app
[worker:51501] starting app
[worker:51500] listening on port: 3000
[worker:51501] listening on port: 3000

Packaging

Create a tarball that contains your app.

$ cd ~/Code/myapp
$ tar czvf ~/Slugs/myapp.tgz .

Deploying New Code

$ curl -X POST https://localhost:3000/crossover/release \
    -d "url=http%3A%2F%2Fcrossover-example.s3.amazonaws.com%2Fapp2.tgz"
ok

# meanwhile on the server
[master] releasing: http://crossover-example.s3.amazonaws.com/app2.tgz
[master] preparing worker: http://crossover-example.s3.amazonaws.com/app2.tgz
[master] resolving dependencies
[worker:51500] turning off new connections to app
[worker:51501] turning off new connections to app
[worker:51500] requests completed, exiting
[worker:51501] requests completed, exiting
[master] worker 51500 died
[master] forked worker 52000
[master] worker 51501 died
[master] forked worker 52001

Advanced Usage

Usage: crossover [options] <slug url>

Options:

	-h, --help               output usage information
	-V, --version            output the version number
	-a, --auth <password>    admin password
	-c, --concurrency <num>  number of workers
	-e, --env <url>          environment file
	-p, --port <port>        port on which to listen
0.9.0

6 years ago

0.8.0

6 years ago

0.7.1

6 years ago

0.7.0

6 years ago

0.6.0

9 years ago

0.5.2

12 years ago

0.5.1

12 years ago

0.5.0

12 years ago

0.4.2

12 years ago

0.4.1

12 years ago

0.3.2

12 years ago

0.3.1

12 years ago

0.4.0

12 years ago

0.3.0

12 years ago

0.2.0

12 years ago

0.1.0

12 years ago

0.0.8

12 years ago

0.0.7

12 years ago

0.0.6

12 years ago

0.0.5

12 years ago

0.0.4

12 years ago

0.0.3

12 years ago

0.0.1

12 years ago