2. Who I am
● Backend software engineer
● IT systems engineer
● Open source enthusiast
● Python, Javascript and Rust (learning)
muminoff
muminoff
3. Software deployment is all of the activities that make a
software system available for use.
― Wikipedia
4. Manual deployments
● not consistent across environments
● slow, neither repeatable nor reliable
● require extensive documentation (often outdated)
● hinder collaboration (usually conducted by a few experts)
5. Why automated deployment?
● less error-prone and much more repeatable
● anyone in the team can deploy software
● engineers spend their time developing software
● deploying to somewhere new is not a headache
● you can release more frequently
6. Traditional workflow (FTP, SFTP, SCP)
FTP, SSH HTTP
Codebase
Local
Windows
macOS
Linux
Server
Directory
Web-server
Windows
macOS
Linux
Request
Browser
Mobile
API client
7. Traditional workflow (Git, SVN, Mercurial)
git push
Codebase
Local Server
Directory
Web-server
Request
Browser
Mobile
API client
HTTP
VCS
Repository
versions
git pull
Windows
macOS
Linux
Github
Gitlab
Self hosted
Windows
macOS
Linux
10. Chef
● Written in Ruby (client) / Erlang (server)
● Not-easy to learn and deploy
● Highly mature and works at massive scale
● Used by big companies
○ (e.g. Facebook, Microsoft, Bloomberg)
11. Puppet
● Written in Ruby
● Requires master (track infrastructure)
● Depends on agent
● Used by big companies
○ (e.g. RedHat, Microsoft)
12. Salt
● Written in Python
● Requires agent (minions)
● Depends on PyDSL and Python
● Used by big companies
○ (e.g. Pivotal, CloudFlare)
13. Ansible
● Written in Python
● Agent-less
● Supports any programming language
● Excellent security using SSH / SSH2
● Being used by companies:
○ NASA, Twitter, Attlasian
○ Evernote, RedHat, Cisco
○ EASports, GoPro, etc.
14. Fabric
● Written in Python
● Easy to learn, extend
● Programmatically integration
● Can be integrated with 3rd party tools