How to prepare for a Software Deployment/Release (not to be missed :) )

This post is directed to those who are in an Engineering, DevOps, or Operational role (but not limited to) whose responsibilities include the deployment of software into a production environment. This is an insight post on what one should ask or think about, when performing a software deployment/release into a production environment. (The responsibilities and standards may be different in a non-prod environment. Be sure to check with the leaders on the expectations)

  • What:
    • What Am’I deploying
      • E.g. New interface for the customer, some fixes and improvements, something I can’t see but living in the background
        • Note – if the deployment you are performing isn’t something you are able to visualise, what can be done to show you the outcome
      • Is there a demo or prototype available in another environment that shows the improvements, updates, bug fixes etc
        • (Note – you want to see for yourself what you are deploying. Don’t be blinded by thinking that all you need to do is push a button and the job is done. This isn’t a good attitude. Make sure what you deploy is either successful or not)
      • What confirms if this deployment is successful or not
        • Note – if it’s not successful do we roll back, leave it as it is, do nothing?
  • Who:
    • Is there a team supporting me on this deployment or am’I to perform this by myself?
      • If I’am to perform this on my own what can I expect to go wrong or the risk of something going wrong
    • Have our stakeholders been informed on this release
      • What can they expect to see during this release
        • E.g. errors on the screen flashing, users unable to click around on the screen or see a blank screen etc
    • Who validates the testing and who confirms if this is a success
      • E.g. Who (an actual user) can test if this deployment is successful (or not)
  • When:
    • What time and date are we deploying this software release
      • Is this a good time to release or should be doing the release when there is limited customer activity and minimal impact
    • Have all the timings been considered
      • E.g. If we have stakeholders in different parts of the world can they make the desired / agreed time to release the software
  • Where:
    • Are we going to meet physically or virtually when performing this deployment
      • Or do we have to meet
    • Are we going to meet on a MS Teams / Slack channel to converse and troubleshoot if there are any issues
      • Or we just use the chat window instead of dragging 10 people into a call
      • Will be be quicker to verbalise and describe the issue or the deployment is that simple, the use of the chat window will be quicker
  • How:
    • Is there any pre work / prerequisites that need to be done before the actual deployment
      • Training, upload data into a db, install some pre software not related to the main deployment etc
    • What tools, systems and mechanisms will be used to deploy the software
      • Note – Do you know where and how to access these mechanisms
        • If not what do you need to do before hand?
          • E.g. Ask someone to onboard you into the system, log a ticket, submit a request etc
        • (Note – Historically the biggest issue in performing software releases’ is accessing the mechanisms to begin with. I.e. getting through the front door
          -_- ……. It always happens)
      • What is the mechanism used to release this software
        • Are there other similar mechanisms used to deploy this software. For example, are these mechanisms used in a similar manner to the non prod environment
          • (Note – It’s good to compare the deployment mechanisms to other non prod environments. If the mechanism is somewhat different to the other non prod you can expect issues to not be the same)
        • Do you know what to do and how to use these mehcanisms
          • Can you practice somewhere prior to the actual deployment
      • Can we discuss at a high level each stage of the mechanism and how the deployment gets executed
        • E.g.
          • What are all these green and red bars
          • What is this output / messages
          • Why does the screen move each time a stage is completed
          • What happens if one part fails, can we repeat the deployment, roll forward or fix the issue and then move forward
      • Who looks after these mechanisms and ensure they are up to date
  • Conclusion:
    • After the deployment and testing is there any paperwork or administration that needs to be performed
      • Write a report
      • Perform a retro
      • Discuss or review post deployment
      • Document any learnings, struggles, blockers etc
    • Inform Snr stakeholders of the outcome of the deployment
    • (Note – As a reader of this website, make sure to reflect on yourself where you can improve and what went right (and wrong))

Summary:

  • This is a broad explanation of my experience when performing an IT / Software deployment/release
    • Each IT business/company/organisation may have differing processes to what is mentioned above, but to a certain degree may be similar
  • When performing software deployments/releases, always define some expectations prior
    • Don’t just rock up thinking everything will go smoothly
      • 9/10 things do not work out smoothly
      • Expect things will go wrong
        • Especially if there are multiple components, teams and API’s all depending on one to two main deployments
      • Have an attitude once it’s done then everything is smooth
  • One main thing to take away from this post is to prepare yourself prior to the deployment
    • Be sure you know 100% and end to end what you are expected to perform

Discover more from Alt+Ctrl+Start

Subscribe to get the latest posts sent to your email.