Sunday, May 21, 2017

Production Launches — Getting/Having the confidence that your code works

There are many approaches that you can take in verifying that your code is robust. Let me list a few of them:
  • Writing robust code that is easily maintainable. Maintainable code becomes robust in the long term. Keep it simple.
  • Having good code-reviews that detect and prevent severity #1 issues in your production environment. Typical issues that can be prevented are the ones that are abusing the frequency of I/O, memory utilization and string manipulation that is the subset of memory manipulation and CPU utilization.
  • Automated unit-testing and continuous deployments to your environments. Automated integration testing is even more important/valuable.
  • Having two types of QA resources: One QA resource would be executing the test-cases that cannot be automated. Another QA resource would be doing what I call free-form testing. Free-form testing requires you to have full understanding of all your products and you have to be the super-user of that application/site/system.
  • Having deployments automated to the point where you just clicking button but at the same time having post-deployment scans to verify if deployments were done on correct servers, correct folders and in completion.
  • Performance and Load testing needs to be performed on your services so you can with confidence say that you service X can handle Y amount of load and peform at Z speeds.
  • Dashboard monitoring at the high-level with graphs showing the high-level state of your production environment.
  • Monitoring the production environment (low-level events, logs…) before and after the launch so that you can tell the percentage change in the errors logged. Don’t mix this with the dashboard monitoring that tracks the high-level state of your production environment.
You can do all the great work on the first 4 items, but what matters at the end of the day is if the last two items above are coming back with the positive results. If you don’t have the last two items implemented, you pretty much don’t have any visibility on the health of your systems in production and what customers are experiencing.
In what order do you implement the items listed above?
It all depends on your organization; however, you cannot be operating a business if you don’t have the last two items implemented from the checklist above. You can end up writing bad code and the last two items will save your day in the case when you deploy bad code to your production environment and in that case you can quickly roll back.
Thank you for reading.
Almir Mustafic

No comments:

Post a Comment