Continuous development

with Nix

Berlin DevOps Meetup - May 2015

Continuous development

Berlin DevOps Meetup - May 2015

C. Integration

C. Deployment

C. Delivery

Develop.

Test

Build

Release

Development

Berlin DevOps Meetup - May 2015

Bundler, Cabal, Composer, CPAN, CRAN, CTAN, EasyInstall, Go Get, Maven, npm, NuGet, OPAM, PEAR, pip, RubyGems, ...

brew, apt-get, yum, rpm, emerge, ports, ...

virtualbox, docker, vmware, vagrant, rocket, ...

Test

Travis, Soucelabs, Jenkins, Hudson, ...

Build & Release

Ansible, Chef, Puppet, ...

Xen, Docker, LCX, ...

Linux, OSX, Windows, BDS, ...

Berlin DevOps Meetup - May 2015

Nix

package manager

reliable

reproducible

portable
osx, linux, cygwin*, bsd*

multi-user, multi-version

and
also a language used in Nix
(the package manager)

- atomic upgrades

- rollbacks

- packages installed in isolation
of each other

- complete dependency tree
 

source - binary model

Berlin DevOps Meetup - May 2015

Nix @ RhodeCode Inc.

Development

Test & Build

Release

% nix-shell default.nix
% nix-build default.nix
% nix-build release.nix

OSX

Linux

Windows

Berlin DevOps Meetup - May 2015

Nix @ RhodeCode Inc.

Server management

% nixops create -d khaleesi khaleesi.nix khaleesi-room.nix
% nixops deploy -d khaleesi

You only need to know one tool !!!

Berlin DevOps Meetup - May 2015

One tool to rule them all

Developers focus on development

Ops and Devs have a common "language" to speak

Reusability of tools between developers (even vim configuration)

Not needed to jump all into Nix. Gradual migration. Nixify only when it brings the value.

Reproducible environments without any virtualization/containers

Berlin DevOps Meetup - May 2015

Thank you

your tools will f*** you
whenever they get a chance

Rok Garbas, @garbas

https://garbas.si

Berlin DevOps Meetup - May 2015

Bonus

Continuous development

Berlin DevOps Meetup - May 2015

C. Integration

C. Deployment

C. Delivery

Develop.

Test

Build

Release

Made with Slides.com