- What is Software Deployment?
- Manual Deployment
- Automated Deployment
- Deployment Tools
- Best practices for Deployment
- Server Backups
- Best Practices for Backups
Software deployment is a post-production process that is performed between the acquisition and the execution of the software.
It includes a number of inter-related activites such as:
- Release of software at the end of the development cycle
- Configuration of the software
- Installation of the software into the execution environment
- Activation of the software
It may also include post installation activities
- Monitoring
- Deactivation
- Updating
- Reconfiguration
- Adaptation
- Redeploying
- Undeploying
- Typically starts with a sysadmin who is tasked with assembling the existing software components and deploying them to work together to produce a service
- Sysadmin runs the service and responds to the events and updates as they occur
Advantages
- A familiar industry paradigm for companies in terms of hiring and running staff
- An array of existing tools, software components and integration systems are already available
Disadvantage
- As the system grows in complexity and traffic volume, the sysadmin team needs to grow too
- Indirect costs such as disagreement in philosphies between teams within the same company
- Software engineers setup automated processes which can take the latest code, run tests on it and deploy it
Advantages
- Can easilly implement progressive rollouts
- Problems can be detected accurately and quickly without input from the users
- Changes can be rolled back safely when problems arise
Disadvantages
- Practically none
Best practices for Automated deployment systems in modern businesses are as follows:
- Monitoring: Always have a thoughtfully designed monitoring infrastructure. Without it, there will be no way to tell if a service is working or not
- Incident Response: While it is important to answer tickets, it is even better to instead give your time towards creating solutions that will not only fix the problem for the long term.
- Postmortem and Root-Cause Analysis: Understand what went wrong. Cultivate a blameless postmortem culture.
- Testing: Create tests that will assure that the problems don't go under the radar the next time.
- Capacity Planning: Make systems that can estimate traffic, system use etc. So it avoids cascading failures.
- Data Integrity: Maintaining data integrity is key. Make sure that your data remains safe. Use methodologies such as distributed consesus, data processing pipelines to make sure that your data is secure.
- Product Launch: Make sure that your customers are getting the optimal experience from day one. Keeping track of previous deployments and their effects is key to nailing this.