Checklist

Deployment checklist for your software

François Lévesque 1

François Lévesque

Technical Director at Witify

When it comes to bringing web software online, it's essential to devise a robust list of steps and checks. This article is not intended to list every possible step or check, but rather to serve as a guide to help you plan your own successful deployment.

In this article, we will go through the 7 main validation phases:

  • The robustness of the technical infrastructure that hosts all your data, software and applications;
  • The addition of analysis tools to optimize the evolution of your solution;
  • The installation of technical monitoring tools to proactively identify any problems that may arise;
  • Database backups for peace of mind;
  • Data migration to ensure consistency between your old and new solutions;
  • Acceptance testing to ensure functional satisfaction;
  • And finally, SEO - when you have public web modules (e.g. customer portals, payment portals, automated information lists, etc.).

1. Infrastructure

Infrastructure covers the servers, configurations and networking that will host your software and make it accessible from the web.

Domain name

When it comes to setting up your infrastructure, the first thing to think about is the domain name (example.com) or sub-domain (app.example.com) that will give access to the software. The domain must point, generally with an A record, to the IP address of your server, or your Load Balancer if you have a multi-server infrastructure.

Web software can also have several sub-domains for separate sections. For example, a food distribution web application might have a static website at aliments-inc.com, a console for administrators at erp.aliments-inc.com and a portal at client.aliments-inc.com.

Each relevant domain name needs to be configured in advance, as it can take up to 48 hours for Domain Name System (DNS) records to propagate throughout the international web.

HTTPS

Once your domain names have been successfully configured and propagated, you can add SSL certificates. Today, SSL certificates are indispensable for securing traffic on your domain. Without certificates, browsers can prevent functionality, or even block your domain name altogether. Nowadays, it's very easy to generate certificates free of charge with tools such as "LetsEncrypt". And many hosting services, such as Cloudflare and Netlify, allow you to set up free certificates with a single click.

Servers

When it comes to provisioning a server, don't underestimate the importance of gauging the server's capabilities. Firstly, it's important to have a server powerful enough to support the theoretical maximum possible workload. Secondly, you want to avoid having a server that is too powerful for your needs, in order to remain economically optimal.

Our recommendation is to set up a server slightly more powerful than necessary for the first month of production. Then keep an eye on performance metrics (CPU, RAM, disk). Rule of thumb: CPU and memory usage should never exceed 70% in worst-case scenarios. On average, CPU and memory usage should be under 30%. Then adjust your server capacity accordingly.

Disk space

If your system has a database (which is very often the case!) and stores files, you also need to allow for the amount of disk space required to prevent disk saturation. We generally recommend that your disk be at most 50% full at all times.

If the software has the potential to host a lot of large files, it is strongly recommended to save files on an external service like AWS S3 to avoid using the disk of your application servers.

Automated alerts

At the very least, your servers should have automated alerts if CPU, RAM and disk usage exceeds a certain threshold. This will enable you to react quickly before disaster strikes.

Continuous deployment pipeline

To keep your software up to date, it's vital to set up an automatic deployment pipeline. With tools like Github Actions, Jenkins, CircleCI or Gitlab, every time an update is declared on the code, a sequence of automated actions can be executed to update the code on your infrastructure.

Using a deployment pipeline means you can deploy dozens of updates in a 100% automated way, without any human error.

2. Analysis tools

Adding analytics tools to your web software can be relevant if you want to understand your users' behavior. This can give you relevant insights into which pages are most (or least) used, which forms are most often filled in with validation errors, which steps users get stuck in, etc.

A successful behavioral analysis strategy enables you to spot flaws in your system's interfaces. This can be very useful if you have a publicly accessible interface with many users, or even if your internal team uses it frequently.

To achieve this, you can use tools such as Google Analytics, HotJar and MixPanel. However, it is possible to retrieve metrics directly from your software to have more control over the format of the data and how you wish to present it.

3. Error and exception tracking

Even with a robust testing strategy, exceptions and bugs can occur in production. As it is very difficult to correct all bugs, you must at least be able to detect them when they occur. Tools such as Sentry or Bugsnags enable you to quickly detect bugs in your production environment and send automatic alerts to the development team by email, on Slack or any other communication tool.

Integrating error-tracking tools is essential for reacting more quickly. They can also be configured to add more context to errors, such as the ID of the user affected, the trace of the exception, and the history of the actions and navigations that led to the bug. This additional information greatly speeds up the resolution process. What's more, the development team may be proactively resolving bugs even before you receive a more formal report or ticket.

4. Backups

Database and file backups are essential in any software deployment process. They are an indispensable safety net, enabling valuable data to be recovered in the event of system failure, data corruption or malicious attacks. Without a reliable backup strategy, companies risk catastrophic data loss that could seriously damage their reputation and viability.

Choose a backup solution that meets your needs in terms of security, accessibility and cost. Solutions range from local disk or tape backups to more modern cloud solutions like AWS S3.

Backup automation is the key to ensuring that backups are performed regularly and without manual intervention. Use tools and scripts to schedule periodic backups. Test these processes regularly to make sure they work as intended.

Performing backups every day can become very costly after 10 years. Determine a backup retention policy that balances data recovery needs and storage costs. Also ensure that backups are stored securely and protected against unauthorized access.

5. Data migration

If your new software replaces an old system, it is often essential to migrate existing data. Depending on your system redesign, this can be a complex process. As a general rule, the more different the underlying data format is from the desired new format, the more complex the migration is likely to be.

The first step is to select which tables from your old database are to be migrated. Depending on your time and budget, you may wish to ignore some of the less relevant data. For example, for an ERP system, it may be relevant to migrate the user list, operational data (orders, customers, tasks in progress) and financial data (invoices, credits, etc.). However, it may be less relevant to migrate the platform's access history.

The next step is to map the old data format to the new one. When changing software, it often happens that equivalent tables are changed, added or even deleted. Some columns may change name or meaning. Set up a complete conversion table for each column in each table.

The final step is to program the migration scripts. You can test your scripts in advance with data from the old system on a test database. Then review the converted tables and columns to check that every attribute has been migrated correctly.

Once your tests are complete, you can run the migration script the day before the official deployment.

6. Acceptance tests

Once your software has been deployed and your data migrated, you can now complete general acceptance testing (QA testing). Although quality software will already contain automated tests, it is important to test the software in its entirety in its new infrastructure.

Beforehand, you need to draw up a list of tests with starting conditions, a list of steps to follow and ending conditions. If you're short of time or budget, at the very least, try to write tests for the system's critical functionalities. Here are some examples of critical tests:

Test 1: It's possible to log in to your account

  • Initial condition: Arrive at login page
  • Steps: Enter valid login details and click on "Login".
  • Success condition: You are redirected to the Dashboard and graphs are generated.

Test 2: It's possible to create an order as a seller

  • Initial condition: You are logged on to a user with the sales role
  • Steps: Enter basic information to create an order [detail minimum information required].
  • Success condition: The order is successfully created and appears in the order list.

When deploying web software on a new infrastructure, some features that are strongly linked to your server and network configuration are more likely to fail. Here's a list of actions you should validate:

  • It's possible to upload a file and then download it
  • Check that uploaded images are displayed correctly
  • It is possible to upload large files (> 1mb) without server errors.
  • Generate large report without server error

Configure and check email or SMS notifications

If your software needs to send e-mail or SMS notifications, using specialized third-party services such as SendGrid, Twilio or Postmark can significantly improve e-mail deliverability. They offer advanced features such as email authentication, open and click tracking, as well as detailed reporting on email campaign performance.

After initial deployment, it's important to test these integrations. Send test emails to make sure everything is working as expected. Check not only that e-mails arrive in the inbox, but also that links, images and other dynamic content are displayed correctly.

Configure and check integrations with third-party services

In addition to e-mail, your software probably uses a number of other third-party services, such as Stripe, Google Maps API, Shipstation, Mailchimp, Klaviyo and others. During deployment, it's important to configure each of these services using production keys. Once the configuration is complete, it's essential to check the third-party services.

First, it's important to list all the services used. For each service, draw up complete acceptance tests, with starting conditions, a list of steps to follow and success conditions. For example, to test an integration with Stripe, we could have this test:

Initial conditions

  • You are logged into a customer account
  • Have an invoice to pay

Steps

  • Open an invoice
  • Click on Pay
  • Enter valid payment information

Success conditions

  • A success message appears
  • Transaction displayed in Stripe account
  • Transaction is recorded in the management software

You can repeat the procedure for each relevant service and integration. Once you've completed this list, it's very easy to detect critical integration errors. You can even reuse this list in future software updates.

Check for periodic behavior

Some software programs perform actions periodically. For example, an inventory report is sent to ERP administrators every Sunday, or Quickbooks data is imported every evening.

Well-designed software will already have automated tests to verify the behavior of these repeated actions. However, it is important to plan a manual check of these behaviors. Draw up a list of periodic actions and plan tests with starting conditions, steps to follow and success conditions.

Check page performance

After data has been migrated to a new system and infrastructure, some performance problems may be discovered:

  • Slow page downloads
  • Reports that take a long time to generate
  • SQL queries that take a long time to execute

Using tools like Sentry and OhDear, you can automatically detect the slowest pages and queries. You can then take the necessary action to speed up critical queries with your developers.

7. SEO

SEO stands for Search Engine Optimization. It's a way of making your website detectable and more understandable by search engines like Google or Bing.

If your application has a publicly accessible section that you want to make visible on Google, it may be very relevant to work on your SEO. SEO is a field in itself, and some firms specialize in it. However, following a few best practices can help you get off on the right foot. Make sure you have at least one different title tag for each page. Make sure you also add an "h1" tag to each page. Also, check the hierarchy of "h1", "h2", "h3", "h4" tags for each page. Wherever possible, use semantic tags to express the role of different sections on the web page. The navigation bar should be in a "nav" tag. The footer should be in a "footer" tag. You should also add the "alt" attribute to all images to describe them to Google or Bing.

Conversely, if you want to hide pages from search engines, be sure to add the following tag to your secret pages:

 <meta name="robots" content="noindex,follow" />

To block an entire site, you can also add a robotos.txt file to the source of your web application with the following content:

User-agent: * Disallow:

Finally

Successful deployment requires careful preparation and a well thought-out strategy. Prioritizing complex and uncertain stages, such as data migration and infrastructure development, is essential to speed up the process. In the case of large-scale deployments involving critical systems, such as core business software or ERP, it is advisable to implement a test version incorporating the migrated data several weeks before the final transition. This approach enables any critical faults to be identified and corrected before the system becomes fully operational. As with other large-scale projects, the success of a roll-out depends on a sound strategy, rigorous verification processes and proven expertise.

François Lévesque 1

François Lévesque

Technical Director at Witify

François Lévesque is co-founder and Technical Director of Witify. Specializing in the management and development of complex software and web projects, he has spent the last 8 years developing customized ERP, Intranets and CRM systems. Throughout his career, he has developed in-depth expertise in software engineering, with a particular sensitivity to translating business objectives into precise technical requirements. With extensive expertise in data analysis and visualization, François has also successfully led numerous data projects with government institutions.

Witify Logo Icon

Interested in growing your business?