Startup Resources: Deployment Tools

Instead of deploying code manually, learn about tools such as Terraform, Chef, Puppet, Ansible, and Docker. See the "Software Delivery" chapter in Part II, Technologies for more info.

  1. Configuration Management and Deployment Automation
  2. Virtualization and Containers
  3. Further Reading

These startup resources are based on the book Hello, Startup: A Programmer's Guide to Building Products, Technologies, and Teams by Yevgeniy Brikman. These resources are a work in a progress. They are also open source, so you can add your contributions by submitting a pull request to the Hello, Startup GitHub Repository. To see how these resources fit into the bigger picture, check out the The Startup Checklist, which is a comprehensive collection of everything you need to do to launch a startup.

Configuration Management and Deployment Automation



Puppet

http://puppetlabs.com/

Manage IT infrastructure as code across all environments.



SaltStack

http://saltstack.com/

Extremely fast and scalable systems and configuration management software for predictive orchestration, cloud and data center automation, server provisioning, application deployment and more.


CFEngine

http://cfengine.com/

Automate large-scale, complex and mission critical IT infrastructure


Capistrano

http://capistranorb.com/

A remote server automation and deployment tool written in Ruby.


Mina

http://nadarei.co/mina/

Really fast deployer and server automation tool


juju

https://juju.ubuntu.com/

Configure, manage, maintain, deploy and scale efficiently with best-practice Charms on any public, private or hybrid cloud from a powerful GUI or the command-line.


Quattor

http://www.quattor.org/

A system administration toolkit providing a powerful, portable, and modular set of tools for the automated installation, configuration, and management of clusters, farms, grids and clouds.


AWS CodeDeploy

http://aws.amazon.com/codedeploy/

AWS CodeDeploy is a service that automates code deployments to Amazon EC2 instances


Virtualization and Containers

Vagrant

https://www.vagrantup.com/

Create and configure lightweight, reproducible, and portable development environments.



VirtualBox

https://www.virtualbox.org/

VirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use.


KVM

http://www.linux-kvm.org/page/Main_Page

KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V).


Docker

https://www.docker.com/

Docker - An open platform for distributed applications for developers and sysadmins.


Rocket

https://github.com/coreos/rocket

Rocket is a CLI for running App Containers. The goal of rocket is to be composable, secure, and fast.


No screenshot available

Amazon EC2 Container Service

http://aws.amazon.com/ecs/

Amazon EC2 Container Service is a highly scalable, high performance container management service that supports Docker containers and allows you to easily run distributed applications on a managed cluster of Amazon EC2 instances.


Further Reading

Terraform: Up & Running

https://www.terraformupandrunning.com/

This book is the fastest way to get up and running with Terraform, an open source tool that allows you to define your infrastructure as code and to deploy and manage that infrastructure across a variety of cloud providers (e.g., AWS, Azure, Google Cloud, DigitalOcean).


Agility Requires Safety

https://www.ybrikman.com/writing/2016/02/14/agility-requires-safety/

To go faster in a car, you need not only a powerful engine, but also safety mechanisms like brakes, air bags, and seat belts. This is a talk that discusses the safety mechanisms that allow you to build software faster.


No screenshot available

Continuous Integration

http://martinfowler.com/tags/continuous%20integration.html

Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.