How to achieve zero downtime deployment with Magento

Zero downtime deployment during ecommerce migration: how to make your store always accessible?

13 June 2019

The majority of customers expect websites to load in no more than two seconds and 40% of website users will leave the website if it takes more than three seconds to load. If a second or three make such a big difference, a store being unavailable for a long period of time will leave you with no customers at all. That is the reason why it’s so crucial to reach zero downtime deployment while migrating your store to another platform.

As a company providing Magento 2 migration, our clients often ask us, “How long will our online store be inaccessible during migration?”, “Can you minimize downtime? ” and  “What is zero downtime deployment?”

Below, we will talk about website downtime – what it is, why it happens, and how you can achieve zero downtime.

What is downtime?

 

404 error

Downtime (“outage duration”) is a period of time where a server or network is functionally unavailable for use. A website is considered down when the users can’t fulfil the tasks they want to. For instance, ecommerce websites are down if customers can’t complete the checkout process or put products in their shopping cart.

There are two types of downtime – hard downtime and soft downtime.

Hard downtime is when a website becomes completely inaccessible to users. Users who are trying to visit the website during hard downtime will automatically be sent to pages with HTTP error, dead pages, or even to malicious websites if the site has been hacked.

Soft downtime is when the website provides poor performance. For instance, when it takes too long to load or some elements of the site or content are unavailable.

The impacts of downtime on your business

Depending on the size of your ecommerce business, the consequences of downtime could vary greatly depending on the time of the day or the duration of the downtime. These consequences include:

  • Lost revenue

When your online store is down, your retail business is losing revenue. Every minute counts as your customers become more frustrated, your employees are unable to do their job, and your business has to scramble to get your website running again. The longer it takes, the more likely you are going to suffer the long-term effects of a damaged reputation.

According to Gartner, the average monetary loss of downtime is $5,600 per minute. As there are many nuances in how businesses operate, downtime can be as much as $150,000 or $300,000 hourly on average. Now imagine if that downtime occurs on Black Friday or another high traffic day.

  • Reduced search engine rankings

Downtime happens on every website. However, if a website is down for a long time this gives a bad sign to Google crawlers. For SEO (search engine optimization), a downtime can signify a fall in rankings, which is usually followed by a fall in traffic and sales. The search engines don’t want to risk a bad user experience in forwarding users to websites that are down.

When a site goes down, it’s crucial to make sure your development team has your 500 series error pages ready to put into service. The HTTP response status code really matters as it signals search engines that the server is unavailable for some period of time and asks users to come back later.

  • Your brand loses credibility and reputation

Website downtime not only leads to losing revenue but can also damage your reputation and credibility. Allowing your online store to experience a hardware downtime is one of the quickest ways to tarnish your business’s image.

Every second matters when customers navigate your online store and if they miss the opportunity to purchase the product it will probably result in the loss of credibility.

Moreover, many dissatisfied customers are likely to show their frustrations on social networks. Within a short time, information about your downtime will spread all over the internet.

Meanwhile, your business rivals would be quick to take advantage of this situation to have an edge on the ecommerce market and attract new customers. As a result, you’re up a creek with a tarnished reputation and a damaged brand image.

Leading causes of downtime

As you can see, your website being accessible for customers at any time should be your top priority. Thus, identifying the possible causes of downtime can help you reduce the risks to a minimum and prepare you to cope with the issues more effectively when downtime happens. Downtime can happen suddenly or it can be planned.

Planned downtime is when you implement scheduled upgrades for hardware, software, or operating systems; server migration; or a code-based update. This time is used for different objectives so that a system can function effectively and accurately. If your downtime is scheduled then it’s important to make sure you inform your customers in advance and don’t forget to remind them when it happens. Generally, this type of downtime is best to schedule at night or outside of business trading hours.

Causes of planned downtime:

  • installing upgrades for hardware/software or operating systems
  • transferring to a new web host
  • data migration
  • server migration
  • code-based update

Unplanned downtime is likely to happen out of nowhere and it’s usually at the worst time of the month or the busiest time of the day. Unplanned downtime is when something crashes your system. The major reasons for unexpected downtime are usually linked to hardware/software failures, cyber attacks, natural disasters, or human errors, and can cost businesses a pretty penny.  

When these crashes are unplanned, fast reactions are crucial, especially for the ecommerce market where every minute matters. If the downtime is not planned, you should ensure that you make everything possible to spread the message out to your customers via social media or telephone.

Causes of unplanned downtime:

  • human error
  • malicious attack
  • hardware failure
  • software failure
  • natural disaster

To avoid unplanned downtime our development team recommends that you perform monitoring – including web performance monitoring, web application monitoring, and API (Application Programming Interface) monitoring – and that you backup your data or choose a reliable web hosting that relies on a CDN (Content Delivery Network).

How to prepare a planned downtime deployment on Magento

The following steps will help you to avoid different problems and errors during planned downtime deployment.

  • Backup Database (fresh dump from production)

One of the key steps during a planned downtime is to create backups. Keeping copies of data makes it possible to access your data when the website is down.

After the copy is created, the database goes back to standard operation. There are a few ways to keep backups. For instance, Network Attached Storage (NAS),  Cloud, or Dedicated Backup Software are commonly used. If you don’t constantly and properly back up your data, it can lead to serious troubles.

  • Create a Maintenance Page

During the preparation stage, a well-designed maintenance page should be created. A maintenance page is a temporary placeholder for periods when a website should be taken offline for different reasons (updates, backups, data migration).

A Magento maintenance page allows you to notify both customers and robots (search engines) about a scheduled downtime when a website will be unavailable. This guarantees that customers will come back later to find what they were looking for initially. We don’t recommend using a basic message that makes it seem like there’s a big problem on your website. Usually, we create a Magento custom maintenance page that matches the website design.

During planned downtime, we usually recommend that our clients announce new information, including:

  • What you’re doing  
  • Why you’re doing it (make it clear what’s the reason of the maintenance period)
  • What’s the approximate time frame (let the customer be aware of when your website will be available again)Maintenance Page
  • Prepare QA, development team, and DevOps to fix any unplanned issues

Before deployment, you should analyze all potential threats that can occur and how your development team should react to them if unplanned issues happen. A plan is crucial as it clearly outlines all the steps and the exact roles of the development team. Our company usually prioritizes the threats by likelihood and pays extra attention to issues that wield the most risk.

Once you have analyzed all potential technical issues, be sure to test how your system will function and find out if any data is corrupted or lost. This way, problems can be found and solved before the release.

  • Choose the best time for deployment

For planned downtime, it’s best to choose a time period that will affect the least amount of customers. If your customers live in different parts of the world, downtime will unavoidably affect some of them, which means you need to carefully consider the optimal time to schedule downtime deployment where your customer base is smaller.

On the other hand, if you sell products in only one time zone then it’s best to schedule the deployment at night or otherwise not during peak sales hours. Usually, we perform migration in the middle of the night to minimize revenue loss. Of course, it won’t be a convenient time for the IT developers, so be ready to pay more for their overtime. However, it’s better to spend more rather than lose revenue.

What is zero downtime deployment and why is it so important?

Zero Downtime Deployment enables you to deploy your ecommerce website without any downtime. You shouldn’t have to worry at all about your website going down for a minute. During zero downtime deployment, your online store is responsive the whole time.

With zero downtime deployment, you can successfully introduce a new version of your website to your customers without them noticing your website even went down in the first place. From the customer’s and the brand’s point of view, it’s the optimal way of deployment since new functionalities can be introduced and technical issues and server loads can be rectified without any outage.

Outages can cost a fortune to your retail business. Thus, zero downtime deployment can help you avoid reduced productivity and lost revenue.

How to achieve zero downtime deployment with Magento

Let’s talk about zero downtime deployment best practices. Here at Elogic, we use blue-green and pipeline deployments as a mechanism for deploying releases across multiple nodes with no effect on customer experience.

  • Blue/green deployment

One of the most effective ways to achieve a zero downtime deployment is the Blue-green deployment technique. Blue-green deployment refers to a deployment solution that operates two identical hardware environments that are configured precisely the same way. One is referenced as “Blue” and the other as “Green”. One environment is active, the other remains idle.

The basic idea in blue-green deployment is that you operate two versions of the website side by side one with the old build and other with the latest build. This technique is crucial for ecommerce businesses with critical uptime requirements.

So how does it work? There is a load balancer, which forwards requests to the corresponding environment: production or pre-production. When an update is needed, you deploy it to the pre-production environment. Then you test it and switch the load balancer so that pre-production becomes the new production environment, and vice versa.

 

Blue-green deployment

Blue-green deployment. Image credit: Techtarget.

  • Pipeline deployment

In Magento version 2.2, the Magento team introduced a new technique to deploy with minimal downtime. This technique is called pipeline deployment because the deployment process happens on different systems.

A pipeline deployment is a process of taking the code from version control and making it easily accessible to users of your application in an automated mode. It includes deploying static assets and compiling code on a machine separate from your production system.

A deployment pipeline works in the following way: the software deployment breaks down the software delivery process into different stages, where tasks are operated in each of these stages. Each stage is aimed at verifying the quality of new features from a different perspective to confirm the new functionality and avoid errors. In the same stage, tasks can be carried out in parallel. When all tasks in a stage have passed, the tasks in the next stages can begin.

This technique is all about avoiding mistakes. For instance, if one or more tasks fail during any stage, it automatically fails all the deployment. Thus, the downtime on the site is often less than 30 seconds (if database updates are required) and there is no downtime if no updates are required.

Pipeline deployment

Pipeline deployment. Image credit: Magento.

How to minimize downtime during Magento 2 migration

If you’re still on Magento 1, you should consider migration. Magento has already announced that their support for Magento 1 is going to stop in June 2020, which leads to a considerable increase in the need for Magento 2 migration.

It’s essential to take into account that the migration from Magento 1 to Magento 2 is not a one-click operation. It includes altering database structures and themes and working with a new API (application programming interface). The whole process of migration must be skillfully handled to avoid problems. Usually we perform migration in the middle of the night to minimize revenue loss.

The most common requirement from our clients is to minimize downtime during migration as they don’t want to lose customers caused by updating to a new version. Thus, the question arises: how can you migrate to Magento 2 so that it deploys with minimal downtime?

Here are the steps we apply on to minimize downtime during Magento 2 migration:

  1. Database pre-migration (transmission of data from Magento 1 to Magento 2 locally).
  2. Moving the database, source files, and media to a new host.
  3. Applying a delta migration tool which aims to transfer all the data that customers added via storefront (created orders, reviews, changes in customer profiles) since the last run in a fraction of the time required to run the initial migration.
  4. Setting DNS (Domain Name System) records which point to a new host with Magento 2. During this stage, customers might create new orders on an old version (Magento 1). In this case, use a delta migration tool again (see #3).
  5. Shut down your old Magento 1 online store.

Conclusion

It’s clear that downtime can impact your business activities and effectiveness as it leads to lost time and unproductive operations. Downtime is a matter that must be managed rapidly to avoid long-term negative consequences in terms of revenue, customer satisfaction, and customer loyalty.

Thus, it’s vital to restrict the periodicity and duration of downtime if you want to keep your retail company afloat. Downtime is difficult to avoid, but the right solutions, such as blue-green and pipeline deployment, can reduce it to near zero.

Share to:    
Yuliana

Yuliana