SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Elixir release and deploy utilities
by Maksym Pugach, LITSLink
Release management
Release delivery (deploy)
http://learnyousomeerlang.com/release-is-the-word
*.rel file
{release,{"my_mega_app","0.1.0"},
{erts,"8.2"},
[{kernel,"5.1.1"},
{stdlib,"3.2"},
{distillery,"1.2.2"},
{jiffy,"0.14.11"},
{cowboy,"2.0.0-pre.4"},
...
{elixir,"1.4.1"},
{perf_example,"0.1.0"},
{iex,"1.4.1"},
{sasl,"3.0.2"}]}.
*.script file
%% script generated at {2017,3,12} {10,24,44}
{script,
{"perf_example","0.1.0"},
[{preLoaded,
[erl_prim_loader,erl_tracer,erlang,erts_code_purger,
erts_dirty_process_code_checker,erts_internal,
erts_literal_area_collector,init,otp_ring0,prim_eval,prim_file,
prim_inet,prim_zip,zlib]},
{progress,preloaded},
{path,["$ROOT/lib/kernel-5.1.1/ebin","$ROOT/lib/stdlib-3.2/ebin"]},
{primLoad,
[error_handler,application,application_controller,application_master,
...
*.boot file
8368 0364 0006 7363 7269 7074 6802 6b00
0c70 6572 665f 6578 616d 706c 656b 0005
302e 312e 306c 0000 0062 6802 6400 0970
7265 4c6f 6164 6564 6c00 0000 0e64 000f
6572 6c5f 7072 696d 5f6c 6f61 6465 7264
000a 6572 6c5f 7472 6163 6572 6400 0665
726c 616e 6764 0010 6572 7473 5f63 6f64
655f 7075 7267 6572 6400 1f65 7274 735f
...
*.appup file
{"4.0.4",
[{<<".*">>,[{restart_application, asn1}]}],
[{<<".*">>,[{restart_application, asn1}]}]
}.
relup file
{"0.1.2",
[{"0.1.1",[],[point_of_no_return]}],
[{"0.1.1",[],[point_of_no_return]}]}.
release tarball
● *.rel
● boot script
● relup
● all compiled *.beam files required by the app
● target ERTS
● sys.config for app configuration
● vm.config for VM configuration
● shell script to set up environment and run the release
Build tools
Relx by Erlware
● The primary tool for building releases of Erlang
applications
● Can work with Elixir applications as well with some
additional effort
● Does not auto-generate appups for hot
upgrades/downgrades
exrm (Elixir Release Manager) by Paul Schoenfelder (bitwalker)
● Has been the predominant tool for building releases of
Elixir applications
● Mix-only, auto-generates hot upgrades/downgrades
● Ultimately is an automation wrapper around Relx
● Does not support umbrella applications
● Now deprecated in favor of Distillery
Distillery by Paul Schoenfelder (bitwalker)
● Written in Elixir, with no dependencies
● Automatically determines what applications are required in the
release, even if you have dependencies which are missing an
application in their mix.exs
● Builds releases containing any combination of apps in the umbrella
● Has environments to configure releases differently
● Support to define more than one release
● Event hooks
● Custom commands
● Template overlays
● Faster than exrm
Release delivery
Heroku
● As simple as git-push
● Local development with Docker
● Release history and rollback
● No :observer but there are workarounds
Nanobox
● Free for open-source and personal projects
● Docker based
● Local development with docker container
● Digital Ocean, AWS and own servers integrations
● Logging
● SSL Encryption
● Mac/Windows/Linux clients
● Alerts
● Load Balancing
● Horizontal and Vertical Auto Scaling
● Health Monitoring
Gatling by Hashrocket
● Phoenix oriented
● Uses Distillery
● As simple as git-push
● Hot upgrades support
exdm by Joe Yates
● Special for exrm
● Mix tasks to deploy applications, check their status and
start and stop them
● Defines multiple stages like production, staging, ci etc.
● Latest commit on 2016.01.20
edeliver by Bold Poker
● Based on deliver
● Hot upgrades
● Release is built on remote host similar to production
● Can utilize Distillery, exrm and relx to build releases
● Auto versioning
● OvermindDL1: “'edeliver' has major issues for us here
(since we use both windows and linux and its windows
support was... well, crap....) so we've ignored it”
dicon (Digital Conveyor) by Aleksei Mogusev
● Built on Elixir
● Support configurations per target host
● No build host
● No hot upgrades
● Lack of documentation
Bottler by Rubén Caro
● GCE support
● Mix task to launch :observer
● Mix task to exec
● Rollback
● Still beta
● No hot upgrades
Ansible by RedHat
● Configuration management
● App deployment
● Manage machines in parallel
● Agentless
● Manage new remote machines instantly, without
bootstrapping any software
● Trivializing things like zero downtime rolling updates with
load balancers
Write your own with hot-upgrades and clusters
Heroku Nanobox Gatling exdm Edeliver dicon Bottler Ansible
Environments
tricky to
implement
Multiple hosts at a
time
Launch trigger push CLI push Mix Mix tasks Mix Mix CLI
Hot upgrades
Special integrations
for cloud providers
is a
provider
AWS, DO,
custom
S3 for releases GCE
Rollback
Environment for local
development
Build host
Built on Elixir Bash Bash
Callbacks
Results of 2016 survey by Josh Adams at DailyDrip
Full survey: https://www.dailydrip.com/blog/elixir-users-survey-2016-results
Corrections?
Thank you

Contenu connexe

Tendances

DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
Docker, Inc.
 

Tendances (20)

“Containerizing” applications with Docker: Ecosystem and Tools
“Containerizing” applications with Docker: Ecosystem and Tools“Containerizing” applications with Docker: Ecosystem and Tools
“Containerizing” applications with Docker: Ecosystem and Tools
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
Automate App Container Delivery with CI/CD and DevOps
Automate App Container Delivery with CI/CD and DevOpsAutomate App Container Delivery with CI/CD and DevOps
Automate App Container Delivery with CI/CD and DevOps
 
The Docker Ecosystem
The Docker EcosystemThe Docker Ecosystem
The Docker Ecosystem
 
Run automated tests in Docker
Run automated tests in DockerRun automated tests in Docker
Run automated tests in Docker
 
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
 
Java EE with NetBeans on OpenShift
Java EE with NetBeans on OpenShiftJava EE with NetBeans on OpenShift
Java EE with NetBeans on OpenShift
 
Build a Basic Cloud Using RDO-manager
Build a Basic Cloud Using RDO-managerBuild a Basic Cloud Using RDO-manager
Build a Basic Cloud Using RDO-manager
 
Introduction to docker and oci
Introduction to docker and ociIntroduction to docker and oci
Introduction to docker and oci
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
How to Build & Deploy a HelloWorld API function using Java on OpenShift in...
How to Build & Deploy a HelloWorld API function using Java on OpenShift in...How to Build & Deploy a HelloWorld API function using Java on OpenShift in...
How to Build & Deploy a HelloWorld API function using Java on OpenShift in...
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
Meetup docker paris
Meetup docker parisMeetup docker paris
Meetup docker paris
 
RPM Factory for RDO
RPM Factory for RDORPM Factory for RDO
RPM Factory for RDO
 
Docker for Java Developers - Fabiane Nardon and Arun gupta
Docker for Java Developers - Fabiane Nardon and Arun guptaDocker for Java Developers - Fabiane Nardon and Arun gupta
Docker for Java Developers - Fabiane Nardon and Arun gupta
 
Openshift: Build, deploy & manage open, standard containers
Openshift: Build, deploy & manage open, standard containersOpenshift: Build, deploy & manage open, standard containers
Openshift: Build, deploy & manage open, standard containers
 
Pluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and DockerPluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and Docker
 
Node.js and MongoDB from scratch, fully explained and tested
Node.js and MongoDB from scratch, fully explained and tested Node.js and MongoDB from scratch, fully explained and tested
Node.js and MongoDB from scratch, fully explained and tested
 
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
 
Bootstrapping a simple enterprise application with Java EE successor, Jakarta...
Bootstrapping a simple enterprise application with Java EE successor, Jakarta...Bootstrapping a simple enterprise application with Java EE successor, Jakarta...
Bootstrapping a simple enterprise application with Java EE successor, Jakarta...
 

En vedette

Lightning Talk: Erlang on Xen - Mikhail Bortnyk
Lightning Talk: Erlang on Xen - Mikhail BortnykLightning Talk: Erlang on Xen - Mikhail Bortnyk
Lightning Talk: Erlang on Xen - Mikhail Bortnyk
Elixir Club
 

En vedette (8)

Alex Troush - IEx Cheat Sheet. Guide to Win with IEx on your Day to Day Job
Alex Troush - IEx Cheat Sheet. Guide to Win with IEx on your Day to Day JobAlex Troush - IEx Cheat Sheet. Guide to Win with IEx on your Day to Day Job
Alex Troush - IEx Cheat Sheet. Guide to Win with IEx on your Day to Day Job
 
Yaroslav Martsynyuk - Deploying Elixir/Phoenix with Distillery
Yaroslav Martsynyuk - Deploying Elixir/Phoenix with DistilleryYaroslav Martsynyuk - Deploying Elixir/Phoenix with Distillery
Yaroslav Martsynyuk - Deploying Elixir/Phoenix with Distillery
 
Alex Troush - IEx Cheat Sheet
Alex Troush - IEx Cheat Sheet Alex Troush - IEx Cheat Sheet
Alex Troush - IEx Cheat Sheet
 
Lightning Talk: Erlang on Xen - Mikhail Bortnyk
Lightning Talk: Erlang on Xen - Mikhail BortnykLightning Talk: Erlang on Xen - Mikhail Bortnyk
Lightning Talk: Erlang on Xen - Mikhail Bortnyk
 
GenStage and Flow - Jose Valim
GenStage and Flow - Jose Valim GenStage and Flow - Jose Valim
GenStage and Flow - Jose Valim
 
Elixirs
ElixirsElixirs
Elixirs
 
Anton Mishchuk - Multi-language FBP with Flowex
Anton Mishchuk - Multi-language FBP with FlowexAnton Mishchuk - Multi-language FBP with Flowex
Anton Mishchuk - Multi-language FBP with Flowex
 
Origins of Elixir programming language
Origins of Elixir programming languageOrigins of Elixir programming language
Origins of Elixir programming language
 

Similaire à Maksym Pugach - Elixir Release and Deploy Utilities

Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
dotCloud
 
Docker intro
Docker introDocker intro
Docker intro
spiddy
 
LXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryLXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software Delivery
Docker, Inc.
 

Similaire à Maksym Pugach - Elixir Release and Deploy Utilities (20)

Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
 
OpenStack Summit
OpenStack SummitOpenStack Summit
OpenStack Summit
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
 
JOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in ProductionJOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in Production
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
Deliver Python Apps with Docker
Deliver Python Apps with DockerDeliver Python Apps with Docker
Deliver Python Apps with Docker
 
Docker intro
Docker introDocker intro
Docker intro
 
Techtalks: taking docker to production
Techtalks: taking docker to productionTechtalks: taking docker to production
Techtalks: taking docker to production
 
JOSA TechTalk: Taking Docker to Production
JOSA TechTalk: Taking Docker to ProductionJOSA TechTalk: Taking Docker to Production
JOSA TechTalk: Taking Docker to Production
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Docker Security and Orchestration for DevSecOps wins
Docker Security and Orchestration for DevSecOps winsDocker Security and Orchestration for DevSecOps wins
Docker Security and Orchestration for DevSecOps wins
 
Docker+java
Docker+javaDocker+java
Docker+java
 
Docker. Does it matter for Java developer ?
Docker. Does it matter for Java developer ?Docker. Does it matter for Java developer ?
Docker. Does it matter for Java developer ?
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013
 
LXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryLXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software Delivery
 
Revolutionizing WSO2 PaaS with Kubernetes & App Factory
Revolutionizing WSO2 PaaS with Kubernetes & App FactoryRevolutionizing WSO2 PaaS with Kubernetes & App Factory
Revolutionizing WSO2 PaaS with Kubernetes & App Factory
 
DevOPS training - Day 2/2
DevOPS training - Day 2/2DevOPS training - Day 2/2
DevOPS training - Day 2/2
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
 

Plus de Elixir Club

Plus de Elixir Club (20)

Kubernetes + Docker + Elixir - Alexei Sholik, Andrew Dryga | Elixir Club Ukraine
Kubernetes + Docker + Elixir - Alexei Sholik, Andrew Dryga | Elixir Club UkraineKubernetes + Docker + Elixir - Alexei Sholik, Andrew Dryga | Elixir Club Ukraine
Kubernetes + Docker + Elixir - Alexei Sholik, Andrew Dryga | Elixir Club Ukraine
 
Integrating 3rd parties with Ecto - Eduardo Aguilera | Elixir Club Ukraine
Integrating 3rd parties with Ecto -  Eduardo Aguilera | Elixir Club UkraineIntegrating 3rd parties with Ecto -  Eduardo Aguilera | Elixir Club Ukraine
Integrating 3rd parties with Ecto - Eduardo Aguilera | Elixir Club Ukraine
 
— An async template - Oleksandr Khokhlov | Elixir Club Ukraine
— An async template  -  Oleksandr Khokhlov | Elixir Club Ukraine— An async template  -  Oleksandr Khokhlov | Elixir Club Ukraine
— An async template - Oleksandr Khokhlov | Elixir Club Ukraine
 
BEAM architecture handbook - Andrea Leopardi | Elixir Club Ukraine
BEAM architecture handbook - Andrea Leopardi  | Elixir Club UkraineBEAM architecture handbook - Andrea Leopardi  | Elixir Club Ukraine
BEAM architecture handbook - Andrea Leopardi | Elixir Club Ukraine
 
You ain't gonna need write a GenServer - Ulisses Almeida | Elixir Club Ukraine
You ain't gonna need write a GenServer - Ulisses Almeida  | Elixir Club UkraineYou ain't gonna need write a GenServer - Ulisses Almeida  | Elixir Club Ukraine
You ain't gonna need write a GenServer - Ulisses Almeida | Elixir Club Ukraine
 
— Knock, knock — An async templates — Who’s there? - Alexander Khokhlov | ...
 — Knock, knock — An async templates — Who’s there? - Alexander Khokhlov  |  ... — Knock, knock — An async templates — Who’s there? - Alexander Khokhlov  |  ...
— Knock, knock — An async templates — Who’s there? - Alexander Khokhlov | ...
 
Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3
Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3
Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3
 
Erlang cluster. How is it? Production experience. — Valerii Vasylkov | Elixi...
Erlang cluster. How is it? Production experience. —  Valerii Vasylkov | Elixi...Erlang cluster. How is it? Production experience. —  Valerii Vasylkov | Elixi...
Erlang cluster. How is it? Production experience. — Valerii Vasylkov | Elixi...
 
Promo Phx4RailsDevs - Volodya Sveredyuk
Promo Phx4RailsDevs - Volodya SveredyukPromo Phx4RailsDevs - Volodya Sveredyuk
Promo Phx4RailsDevs - Volodya Sveredyuk
 
Web of today — Alexander Khokhlov
Web of today —  Alexander KhokhlovWeb of today —  Alexander Khokhlov
Web of today — Alexander Khokhlov
 
ElixirConf Eu 2018, what was it like? – Eugene Pirogov
ElixirConf Eu 2018, what was it like? – Eugene PirogovElixirConf Eu 2018, what was it like? – Eugene Pirogov
ElixirConf Eu 2018, what was it like? – Eugene Pirogov
 
Implementing GraphQL API in Elixir – Victor Deryagin
Implementing GraphQL API in Elixir – Victor DeryaginImplementing GraphQL API in Elixir – Victor Deryagin
Implementing GraphQL API in Elixir – Victor Deryagin
 
WebPerformance: Why and How? – Stefan Wintermeyer
WebPerformance: Why and How? – Stefan WintermeyerWebPerformance: Why and How? – Stefan Wintermeyer
WebPerformance: Why and How? – Stefan Wintermeyer
 
GenServer in Action – Yurii Bodarev
GenServer in Action – Yurii Bodarev   GenServer in Action – Yurii Bodarev
GenServer in Action – Yurii Bodarev
 
Russian Doll Paradox: Elixir Web without Phoenix - Alex Rozumii
Russian Doll Paradox: Elixir Web without Phoenix - Alex RozumiiRussian Doll Paradox: Elixir Web without Phoenix - Alex Rozumii
Russian Doll Paradox: Elixir Web without Phoenix - Alex Rozumii
 
Practical Fault Tolerance in Elixir - Alexei Sholik
Practical Fault Tolerance in Elixir - Alexei SholikPractical Fault Tolerance in Elixir - Alexei Sholik
Practical Fault Tolerance in Elixir - Alexei Sholik
 
Phoenix and beyond: Things we do with Elixir - Alexander Khokhlov
Phoenix and beyond: Things we do with Elixir - Alexander KhokhlovPhoenix and beyond: Things we do with Elixir - Alexander Khokhlov
Phoenix and beyond: Things we do with Elixir - Alexander Khokhlov
 
Monads are just monoids in the category of endofunctors - Ike Kurghinyan
Monads are just monoids in the category of endofunctors - Ike KurghinyanMonads are just monoids in the category of endofunctors - Ike Kurghinyan
Monads are just monoids in the category of endofunctors - Ike Kurghinyan
 
Craft effective API with GraphQL and Absinthe - Ihor Katkov
Craft effective API with GraphQL and Absinthe - Ihor KatkovCraft effective API with GraphQL and Absinthe - Ihor Katkov
Craft effective API with GraphQL and Absinthe - Ihor Katkov
 
Elixir in a service of government - Alex Troush
Elixir in a service of government - Alex TroushElixir in a service of government - Alex Troush
Elixir in a service of government - Alex Troush
 

Dernier

Dernier (20)

Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

Maksym Pugach - Elixir Release and Deploy Utilities

  • 1. Elixir release and deploy utilities by Maksym Pugach, LITSLink
  • 5. *.script file %% script generated at {2017,3,12} {10,24,44} {script, {"perf_example","0.1.0"}, [{preLoaded, [erl_prim_loader,erl_tracer,erlang,erts_code_purger, erts_dirty_process_code_checker,erts_internal, erts_literal_area_collector,init,otp_ring0,prim_eval,prim_file, prim_inet,prim_zip,zlib]}, {progress,preloaded}, {path,["$ROOT/lib/kernel-5.1.1/ebin","$ROOT/lib/stdlib-3.2/ebin"]}, {primLoad, [error_handler,application,application_controller,application_master, ...
  • 6. *.boot file 8368 0364 0006 7363 7269 7074 6802 6b00 0c70 6572 665f 6578 616d 706c 656b 0005 302e 312e 306c 0000 0062 6802 6400 0970 7265 4c6f 6164 6564 6c00 0000 0e64 000f 6572 6c5f 7072 696d 5f6c 6f61 6465 7264 000a 6572 6c5f 7472 6163 6572 6400 0665 726c 616e 6764 0010 6572 7473 5f63 6f64 655f 7075 7267 6572 6400 1f65 7274 735f ...
  • 9. release tarball ● *.rel ● boot script ● relup ● all compiled *.beam files required by the app ● target ERTS ● sys.config for app configuration ● vm.config for VM configuration ● shell script to set up environment and run the release
  • 11. Relx by Erlware ● The primary tool for building releases of Erlang applications ● Can work with Elixir applications as well with some additional effort ● Does not auto-generate appups for hot upgrades/downgrades
  • 12. exrm (Elixir Release Manager) by Paul Schoenfelder (bitwalker) ● Has been the predominant tool for building releases of Elixir applications ● Mix-only, auto-generates hot upgrades/downgrades ● Ultimately is an automation wrapper around Relx ● Does not support umbrella applications ● Now deprecated in favor of Distillery
  • 13. Distillery by Paul Schoenfelder (bitwalker) ● Written in Elixir, with no dependencies ● Automatically determines what applications are required in the release, even if you have dependencies which are missing an application in their mix.exs ● Builds releases containing any combination of apps in the umbrella ● Has environments to configure releases differently ● Support to define more than one release ● Event hooks ● Custom commands ● Template overlays ● Faster than exrm
  • 15. Heroku ● As simple as git-push ● Local development with Docker ● Release history and rollback ● No :observer but there are workarounds
  • 16. Nanobox ● Free for open-source and personal projects ● Docker based ● Local development with docker container ● Digital Ocean, AWS and own servers integrations ● Logging ● SSL Encryption ● Mac/Windows/Linux clients ● Alerts ● Load Balancing ● Horizontal and Vertical Auto Scaling ● Health Monitoring
  • 17. Gatling by Hashrocket ● Phoenix oriented ● Uses Distillery ● As simple as git-push ● Hot upgrades support
  • 18. exdm by Joe Yates ● Special for exrm ● Mix tasks to deploy applications, check their status and start and stop them ● Defines multiple stages like production, staging, ci etc. ● Latest commit on 2016.01.20
  • 19. edeliver by Bold Poker ● Based on deliver ● Hot upgrades ● Release is built on remote host similar to production ● Can utilize Distillery, exrm and relx to build releases ● Auto versioning ● OvermindDL1: “'edeliver' has major issues for us here (since we use both windows and linux and its windows support was... well, crap....) so we've ignored it”
  • 20. dicon (Digital Conveyor) by Aleksei Mogusev ● Built on Elixir ● Support configurations per target host ● No build host ● No hot upgrades ● Lack of documentation
  • 21. Bottler by Rubén Caro ● GCE support ● Mix task to launch :observer ● Mix task to exec ● Rollback ● Still beta ● No hot upgrades
  • 22. Ansible by RedHat ● Configuration management ● App deployment ● Manage machines in parallel ● Agentless ● Manage new remote machines instantly, without bootstrapping any software ● Trivializing things like zero downtime rolling updates with load balancers
  • 23. Write your own with hot-upgrades and clusters
  • 24. Heroku Nanobox Gatling exdm Edeliver dicon Bottler Ansible Environments tricky to implement Multiple hosts at a time Launch trigger push CLI push Mix Mix tasks Mix Mix CLI Hot upgrades Special integrations for cloud providers is a provider AWS, DO, custom S3 for releases GCE Rollback Environment for local development Build host Built on Elixir Bash Bash Callbacks
  • 25. Results of 2016 survey by Josh Adams at DailyDrip Full survey: https://www.dailydrip.com/blog/elixir-users-survey-2016-results