The Future of
Deployment
in
Elixir
Deployment is hard,
we have unique environments,
we have unique requirements,
we have more important things to do
Our tools are supposed to help tame this chaos, not feed it
- No consensus
- Difficult tooling
- Lack of good documentation
- Lack of documented experiences
Good deployments,
Releases.
Self-contained
releases contain everything needed to run themselves
Reproducible
releases are artifacts you can store and redeploy as needed
Purpose-built
releases were designed to solve this problem
Consistent
deployment to different environments is the same
But the tooling is awful
...and I should know
I wrote one of them
So I started from scratch and wrote Distillery,
pure Elixir,
small core, a la Plug
extremely configurable/extendable
first-class support for umbrella projects
emphasis on better UX
but there is still work to be done...
Windows support
Better runtime configuration tooling
Prevent errors
Native dependencies (NIFs)
Releasing to a cluster
but most importantly,
we need to make releases easy to understand
to put it simply: make it easy,
or it's easy to get wrong
Documentation
guides, tutorials, practical experiences
Improve our tools
intuitive defaults
guide the user instead of expecting direction
informative warnings/errors, a la Elm
prevent invalid configuration
Build on existing tools
Distillery builds on systools, Mix
Edeliver builds on Distillery
Tools which work together benefit from each other
Some practical experiences
Questions?
elixirconf2016
By Paul Schoenfelder
elixirconf2016
My presentation on deployment in Elixir for ElixirConf 2016
- 1,713