Simplifying Elixir deployment
After growing frustration with existing Elixir deployment solutions, we tasked ourselves with building a new open source deployment product that would be easy to use while also being extensible enough to handle even the most complex deployment needs.Visit the project
We built a server automation and deployment framework for the Elixir ecosystem, written completely in Elixir.
To inform our ideas and decisions about what kind of solution we wanted to build, we gathered experiences and thoughts from other Elixir teams.
By collaborating with other teams, and focusing on usability, we come up with a framework that is easy to implement and can be extended to work for all types of deployment scenarios.
From our own experiences, we already knew what we didn’t like about existing solutions, and we had a good idea of what we wanted for ourselves. We also wanted to make sure we were creating something that would be useful and desired by other Elixir teams as well. We met with other Elixir teams and some thought leaders in the Elixir and Erlang space to gather more input and bounce around ideas.
We knew very early on that we would need an underlying layer to handle SSH connections. We considered writing our and also evaluated some existing in-progress open source projects. Ultimately we decided to “choose a horse” and go with another open source project that aligned very well with what we wanted to do. In the end we were able to become very involved in that project, and it’s maintainers also became involved with Bootleg. This project gave us the opportunity to get more involved with the growing Elixir community, and allowed us to collaborate with other open source teams around the world.
We really tried to drive this project by writing up all the user documentation first. Since the target audience’s first experience would be with the Bootleg repository documentation, we wanted to make sure it really told the story of how quick and easy it would be to integrate, and customize.
This project gave us a great opportunity to deep dive into a number of different deployment scenarios for Elixir applications and really get to know the full landscape better. We also found that by really focusing on the user documentation first, it gave us a lot of opportunities to really optimize for ease of use. When a feature idea was difficult to document or confusing to explain, it would became a very obvious red flag warning that a rethink was needed. This allowed us to iterate on ideas very quickly before even implementing the code. In the end, this approach led us to a very user friendly and easy to use solution.