Software deployment is the final stage of every software project. When all the hard work you have put in over the course of time goes live to be used by the target audience.
It includes all the process required for preparing a software application to run and operate in a specific environment.
This is our first piece on the process of software deployment, Hope you find it useful, and don’t forget to the rest of this series:
- What is docker and why is it Awesome
- What is CI/CD pipeline and how it can make your life more enjoyable
- and even more
The Activities of Software Deployment
Deactivate and Uninstall: In order to make a new program available, you may need to uninstall the old software/program after deactivating it.
Install and Activate: Once you have uninstalled the defined system component, you need to install the new software/program followed by activating it (starting the service or specified component).
Adapt: This is a process to modify or reconfigure a software system that has been already installed.
Update: The update process simply replaces an earlier version of all or part of a software system with a newer release.
Retire: Once the software reaches the end of its
Version tracking: Version tracking systems help the user find and install updates to software systems installed on PCs and local networks.
* Please keep in mind that some of the above practices are not applicable in modern deployment scenarios, and they may not follow any specific order. For instance, “deactivate and uninstalling” coupled with “install and activate” could be a simple change of line in case you have your deployment infrastructure as a code.
Best Practices in Software Deployment
1. Preparation & Planning
We should have a proper deployment map in mind, one that clearly states things like:
- The type of system/technology is supposed to run on, and, the type of machine
- The specifications regarding the grouping of systems
- How all the stand-alone boxes are going to talk to each other in a foolproof manner.
2. Do local, think global
Work up all the production setups on your local machines and then test them end to end.
Note down all the steps it took to reach the final working infrastructure locally on your machine.
This practice helps find the typical problems encountered during infrastructure setup, and how to overcome them.
* Although this is supposed to be a local setup, do not disconnect yourself from the deployment plan. The added details may contradict with your local setup
3. Document, Document, & Document
Productionsetup should be documented to bits. It needs to be neat, foolproof, and understandable.
- It should have all the system configurations, IP addresses, system specifications, and installation instructions. And also anything you consider important enough that you or a fellow developer should know.
- It needs to be updated as and when any change is made to the production environment of the system.
4. Monitoring & Logging
Setting up a proper monitoring and logging system is essential to keeping a health check on the live system. Intelligent monitoring systems are available in the market today which can give us error frequency reports, scheduled health check emails, and more.
Automated Software Deployment
Is the process to combine all the necessary deployment activities starting from fetching the correct build and performing pre & post deployment activities such as uninstalling, installing, modifying, restarting the services, etc.
This ensures that the deployment process is completely repeatable and consistent which will increase productivity.
- Deployments become much 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.
Free Automated Deployment Tools
- Capistrano – written in Ruby
- Fabric – written in Python
- Mina – written in Ruby
- Rocketter – written in PHP
- Deployer – written in PHP
In this post, we briefly talked about software deployment, its activities, best practices, and finally the automation of the software deployment process.
Hope you enjoyed the read and don’t forget to the rest of this series: