Gabriel is a junior software developer who has just finished working on a new feature. They are excited to share their code with their users. What happens next? Do they go door to door installing it manually from a floppy disk? Maybe they can send the files via email! No — these aren’t the stone ages!
Deployment is the general process of making a piece of software available to its users. Before the invention of the internet, deployment meant storing software on floppy disks or CD-ROMs, shipping them to users, and having those users manually install the software on their own devices. This process was slow and expensive, and any bugs that slipped through the cracks could be catastrophic.
Today, software developers are able to deploy their software via the internet with greater ease and speed of delivery than ever before. The process for deployment is largely the same whether it is for the major release of a new application, or a minor patch to fix a bug.
In this lesson, we will discuss the various components that make up this deployment process. Though deployment is a general process that can include many different steps, we will cover the most commonly used tools and practices:
- Infrastructure management
- Version control systems
- Testing: unit, integration, acceptance, and end-to-end tests
- Deployment environments
Traditionally, members of the Development team and the Operations team take ownership of various aspects of the deployment process. We’ll start by taking a look at the main responsibility of the Operations team, managing the infrastructure.
Before we jump into this lesson, take a look at the diagram. Identify the various topics we will be covering in this lesson and see how they relate to each other as code moves from the developer’s laptop, through the deployment process, and out to users.