×
Community Blog DevOps: How to Have Less Downtime

DevOps: How to Have Less Downtime

In this article, we will explore some of the main strategies to minimize downtime through a DevOps approach.

By Alex Mungai Muchiri, Alibaba Cloud Tech Share Author. Tech Share is Alibaba Cloud's incentive program to encourage the sharing of technical knowledge and best practices within the cloud community.

Downtime is costly to business and as an infrastructure manager, this is your number one enemy. It is astounding just how much business operations rely on computer infrastructure, especially servers and cloud platforms. That is why IT operation managers are seeking to minimize downtime and eliminate these costs.

Notable cases of costly implications of downtime include inaccessible websites, non-responsive API and computing services. The impacts could be small-scale or outright catastrophic and may be categorized into three main groups: customer and user discontent, loss of productive capacity and disgruntled employees. Users, for instance, expect services all the time and whenever they need them when this is not possible, it is very easy to lose customers. Downtimes are also contributors to diving organizational productivity since some online services help employees go about their duties such as software development. Ultimately, those responsible for infrastructure management may end up being very unhappy about too many interventions, which sometimes have to be done past normal working hours. The aim of this tutorial is to explore some of the main strategies to employ in order to minimize downtime. While there are many other ways of handling the issue, we shall deal with some most fundamental methods.

Infrastructure Monitoring and Alerting

Data collection systems are very critical for monitoring IT infrastructure. Notably, they ought to provide a wealth of information to help you understand the causes of downtime such as logs, specific errors and time when systems were down.

Undoubtedly, you can save yourself from many lost opportunities caused by downtime by having proper infrastructure monitoring controls in place. Monitoring can detect issues before they cause problems and have them fixed by the operations team as well as aid in determining previous causes of downtime. Some of the monitored aspects include resource utility and performance of applications. Based on the aggregated statistics, we can thus have alerts that inform when action is needed to rectify something that affects resource utility and application performance. The most common implementation of such monitoring is such that a host server has a client to gather the information and send it to a centralized server to compute the metrics. A central database stores such information and timestamps it for the visualization and alerting. Prometheus and Graphite are some of the most commonly used monitoring software. These tools are very scalable and quite easy to integrate into your own systems. Other utilities such as Elastic stack and Graylog are used to analyze log files to extract error and other metrics that are useful for downtime analysis. However, it is important to make the right monitoring since not all metrics are all useful in reducing downtime. While sometimes it is just fine to make the default monitoring as provided by the chosen client, you must be careful to make sure that you meet the needs of your application.

We recommend the following four metrics for your Alibaba Cloud ECS:

  • Latency
  • Traffic Demands
  • Failure rates and errors
  • Resource saturation

Visual Monitoring

In most cases, visual monitoring includes the aggregation of collected data and generating visuals and graphs on a dashboard. For this purpose, you can use Grafana to aggregate data from Graphite, Prometheus and other monitoring clients deployed in your system.

Generating Alerts

Alerting will keep your team aware of problems as they arise. It is common to use Grafana as an alerting tool or Prometheus' Alertmanager, though there are many other tools available. As with most monitoring tools, alerting tools are highly flexible and can be customized to meet platforms such as Slack. Key to efficient alerting is to only have the most critical alerts lest.

Microservices Architecture

With the realization of the inefficiencies of monolithic systems, microservices are becoming very popular these days. Unlike traditional systems that were built as a singular piece, microservices architecture involves building and testing of smaller software components that function independently. It is very advantageous in failure mitigation since each small component can be handled entirely on its own. The architecture results in a highly available system albeit with its own complexities. The remedy for the increased complexity is active monitoring of data to determine actionable from non-actionable alerts. In this regard, Kubernetes can be a way to create resilient microservices architecture.

An Efficient Maintenance Strategy

Without a doubt, having a foolproof maintenance strategy is one of the most reliable ways of minimizing downtime for your IT infrastructure. As Alibaba Cloud strives to maintain the hardware systems working 99.99999% of the time, your software systems need to be checked as well with a proper maintenance guideline that strives to tackle issues as they arise. As part of your maintenance strategy, ensure that you have scoped out the right vendor for your system. Infrastructure unavailability could cause significant downtime and, therefore, ensure the guaranteed availability from the vendor meets your organisational requirements.

Carrying out an audit to determine risk is very crucial as it enables you to factor in all potential failures.

Importantly also is an organizational maintenance design and schedule with all requisite checks and balances to ensure its adherence. In summary, below are some best practices for an efficient maintenance strategy:

  • Spread out your computing services across geographical regions and data centers. Also, do away with redundant servers that increase risks of failure.
  • Limit inter-server back-and-forth communication to the bare minimum: that way the chances of services interruption reduce.
  • Monitor redundant systems on a regular basis and inspect their continuous usefulness. Always take down systems that are not performing as per requirements and only restore them after their issues have been solved.
  • Broaden your infrastructure base by upgrading single web servers to multiple web servers. In this regard, use a load balancer to manage traffic routing to or from failing servers.
  • Make your database systems more robust by configuring replication operations. A good example is MySQL, which through its replication configuration, allows R/W on redundant servers as well to mitigate disastrous outcomes that could result from a single server failure.
  • Enhance capacity to respond to server failure using tools such as Heartbeat and Keepalive. The tools use floating IPS to reassign data between servers to avoid failing servers.

Now, even with the best maintenance strategy, it is still possible to encounter significant downtime if the culture does not promote good practices. That is why, you should adopt a proactive approach such as that advocated for in the Lean program. Your strategy must undergo continuous improvement and refinement.

Software Deployment

When it comes to software deployment, less is more. What that means is that having multiple packages results in increased chances of failure and bandwidth consumption. The proper way to configure software is to have simplified management and distribution in the production environment. Each network should download a single package at a time so that services do not slow down or bugs arise.

Overall, proper deployment takes time and effort but when done right, it distributes stress across networks and allows enough bandwidth for other services to run smoothly to avoid interruption of business activities. If you plan on automating the deployment of new services, observe the best practices for continuous integration, delivery, and testing. Some of the best practices include:

  • Manage all your software from a common repository that is accessible by all members of your technical team. In the repo, clearly label test and configuration files to be accessible to everybody,
  • Use a mock deployment environment with similar configurations as your production environment for test deploys using your continuous integration package.
  • The blue-eyed deployment is an example of proper software deployment practice that your organization could employ.

Software Releases

Traditionally, software releases were a major cause of the disruption. As such, they were scheduled for quarterly or semi-annually gaps. However, when a more rapid approach is adopted, there is less disruption and downtimes involved. It is recommended that web applications are released severally each day, and about twice weekly for mobile apps. When the backend systems are updated in smaller chunks, the platform can remain up and running and thus reduce downtime risks.

Another important factor is software documentation, which should be updated with each release. Documentation will provide quick reference and eliminate many mistakes that could otherwise prove catastrophic.

Healthy Work Environment

Now, this is not exactly a technical issue but a very important one for minimizing downtime. You want to have employees in their best state of mind to run your systems optimally, else they can be a terrible cause of painful downtimes. A healthy work environment ensures that employees can handle issues effectively as they arise, and an employer should be always available to support them.

Any business suffers immensely when employees are not as productive as they ought to be. Therefore, it is the duty of the manager to check on them and make them feel appreciated and as part of the organization. Keep them motivated and help them out of personal issues and illnesses. When treated properly, employees will naturally be more appreciative of the organization's goals and work better to attain them.

Incidents and accidents impact workplace safety, which in turn reduces productivity. A good practice is to have safety workshops and drills to train employees on best practices. Such safety measures should also address issues related to cyber-security and online safety to mitigate organization exposure to malicious attacks that lead to downtime. Employee recommendations must be incorporated into the organizational safety strategy and protocols.

Importantly, create a standard approach for reacting to various incidents and accidents. A hacker attack, software crash or other machine failures should be handles through laid down procedures that all employees adhere to. Additionally, the incident response must always include investigation so that future incidents can be prevented based on lessons from such investigations.

Conclusion

In conclusion, we have seen that improvements can be made in five areas in order to achieve less downtime and increase sales. These can be summarized as:

  1. Monitoring metrics
  2. Improving deployments
  3. Effective maintenance strategy
  4. Adopting a microservices architecture
  5. Maintaining a healthy work environment
  6. Rapid release

Don't have an Alibaba Cloud account yet? Sign up for an account and try over 40 products for free worth up to $1200.

0 0 0
Share on

Alex

53 posts | 10 followers

You may also like

Comments

Alex

53 posts | 10 followers

Related Products