2018 is the Year of Deployment. Frequent and stable deployments are just table stakes for companies these days, and DevOps teams are being expected to pick up the pace.
Deploying an application can be an overwhelming process. With so many moving parts, it can be easy to get lost in the chaos. Not to mention, the actual deployment itself is truly only half the battle. Monitoring post-deployment KPIs and metrics is equally crucial to the process.
One tried and true tool for managing chaos is so simple, many tech-minded people skip right over it: the checklist.
Say no more. We’ve created a step-by-step application deployment checklist to make this taunting task a little more manageable. Keeping everyone on the same page as tasks are accomplished will make for a much more efficient and effective deployment.
It is crucial to ensure that operations is on the same page as development out of the gate. Operations will need to be aware of exactly when the project starts, when the deployment is scheduled, and if any infrastructure changes will be needed. If the operations team is your front-line defense for monitoring and troubleshooting your application, help them help you by collaborating on how best to monitor the application and discuss early warning signs of trouble to be aware of.
The same principles apply if you run DevOps. Make sure your entire team is on the same page and individuals know their roles.
Minimizing human error is important to ensure success in duplicating future software deployments. How you deploy the code doesn’t necessarily have to be a state of the art affair. Simply utilize a basic build server like Jenkins, Bamboo, or TFS to automate the process. Even a simple script that copies the files across the network can be sufficient. The key here is to make it easily repeatable by anyone on the team and eliminate the possibility of skipping any critical steps.
Reducing the degree of change in each application update, rather than doing full update overhauls, can make identifying errors and breakdowns significantly easier. If there is an error after an update with 10 new features or patches, identifying where that error lies can be incredibly time consuming. On the contrary, if an update only includes one or two patches, you will know exactly where to look if an error occurs. Implementing continuous delivery can be a tremendous asset in this respect. When your deployments are minimally impactful, you can roll out new deployments much more frequently.
Prior to your application deployment, make sure you use tools like Red Gate SQL Compare to know exactly what SQL schema and data changes have to be moved to production. We recommend always running the test scripts on a backup copy of production before the final release. This will help identify any potential environmental differences. In addition, always have a plan to roll back to the previous version if the release does in fact go awry. Code is always easier to roll back than SQL.
Establishing key performance indicators (KPIs) early is essential to the evaluation of an application’s success. You can expect these to vary drastically from one application to another. Your KPI can be something as simple as page load times, database performance, or server utilization. The most effective KPIs, however, are more custom to the application itself. How long a certain piece of code takes to execute, or how many messages are being processed off a queue, can be critical to your application. Once established, it’s important to live and die by your KPIs. Monitor them at all times and react quickly to any potential errors.
Test, test and then test again! Create a few sample tests to make sure things like your login page, APIs, or key pages within your application are working correctly. This will ensure you go into your deployment confident in your application.
Deployment tracking can be incredibly valuable, especially when combined with continuous integration and continuous delivery. Software such as Retrace offer comprehensive deployment tracking capabilities, which allow DevOps teams to see exactly when deployments occurred, and how that relates to different, predetermined KPIs. This helps to immediately identify whether an error is directly related to released code. When teams implement agile continuous delivery, it can be sometimes difficult to determine which deployment caused which error. Deployment tracking reduces that concern.
It’s important to let your users and company employees know about upcoming software and application changes. Often times, this can be an overlooked step in application deployments and can cause mass confusion. Make sure you have time to update documentation, train internal staff about new features, and coordinate with other departments in your company. Implementing DevOps from day one will make this step exponentially easier and less time consuming.
Deploy your application and then take a deep breath, the leg work is over. Beware, however, we are far from done. Prepare for post-deployment monitoring and correcting.
“After deployment, it’s time to monitor your KPIs and adjust”. Photo of Retrace
Utilize tracking software to monitor KPIs
Now that your application has been deployed, begin utilizing your application monitoring and deployment tracking software. Monitor your KPIs to see how your deployment positively or negatively impacted your metrics, and make adjustments or rollbacks where need be.
Monitor server utilization
Check to make sure all active servers are online, in the load balancer, and receiving traffic. Monitor the server and application CPU, memory, network, and disk usage.
Monitor exception rates
After a new release, you may see your software indicate new exceptions you haven’t experienced before. Install an error tracking program to identify new errors and fix them as they arise. A comparison of your overall error rates before and after the deployment will give you a good indication of the release health.
It’s always important to double check logging is still up and running after an application deployment. No logging at all can be just as bad as a sudden high rate of logging. Consider checking the logs of any new features or patches that we released to ensure they are behaving properly.
Monitor page load times & HTTP error rates
Page load time is a common KPI for new application deployments and definitely something to keep an eye on, especially the pages most critical to your application. Watch out for the rate of 400 and 500-level HTTP requests to ensure they haven’t dramatically changed, either.
Monitor database performance
Nothing is more frightening than a sudden drop in database traffic after a new deployment. Make sure your overall traffic looks normal, or even better due to your awesome new release.
Monitor key database queries
Setup monitors in your application monitoring system to test key database queries to ensure they are loading quickly and working properly.
Monitor application queues
Make sure operations has a grip on how many messages are in your application queues. Ensuring everything is running smoothly and not getting backed up will make the final step much more enjoyable!
Have a celebratory beer!
You earned it! Celebratory traditions are key to a happy and healthy DevOps team. At Stackify, we prefer hoppy IPAs from a local KC brewpub, or one of our own developers (yes, developers can create more than just applications).
It’s invaluable to take a few minutes and discuss the last deployment. What went well, what can be improved upon, and what can you totally cut out? This conversation can not only help to make future deployments more efficient, they can also bring teams closer together and help further close the bridge between development and operations.
It’s invaluable to take a few minutes and discuss the last deployment. What went well, what can be improved upon, and what can you totally cut out? This conversions can not only help to make future deployments more efficient, they can also bring teams closer together and help further close the bridge between development and operations.
- Continuous Testing Requires Faster Feedback Loops - May 21, 2018
- Kubernetes as a Service - May 10, 2018
- 7 Code Merge Tools to Make Your Life 7x Easier - April 17, 2018
- Troubleshooting vs Debugging: What’s the Difference & Best Practices - April 10, 2018
- A Developer’s Guide to Cloud Adoption and Paths - March 27, 2018