By Michael Salisbury, Director of DevOps
When researching the meaning or explanation of the word DevOps, you’ll come across a variety of different answers – and that’s OK.
DevOps means different things to different organizations, based on the issues they’re trying to solve. DevOps itself is more of a mindset, a way of tackling complex infrastructure issues based on a company’s needs.
At its core, DevOps falls into a few different categories:
- Deploying Updates
- Having the capability to deploy changes to a website in production with zero impact to the end-user is a core responsibility for DevOps teams. Designing a solid CI/CD process to implement production changes at any time is crucial.
- Knowing how your environment and applications are performing should be a top priority for DevOps teams. Gathering metrics such as server CPU/disk space/memory consumption is key, but taking it further with APM, anomaly detection and log streaming can help catch problems before leading to outages, and better diagnose errors in your apps.
- Fault Tolerance & Scalability
- Designing systems that can run independently of other services is important for the reliability of your application. If a service or component fails, you don’t want it to take down the entire website. Spreading services out also allows you to scale each component individually. For example, if you’re experiencing an increase in frontend website traffic, you can scale up the webservers to handle the increased load without having to touch the database, etc.
Let’s try to apply the DevOps mindset to a specific task to better gain some understanding of how these principles play out in a practical application.
Say, you’re the owner of a website that is slowly gaining popularity and traction. Your website is currently hosted on a single Virtual Private Server (VPS), and your team is thrilled that they are getting traction and generating revenue. You notice your users are complaining of slow load times, errors with loading pages, and it’s starting to affect your sales.
By bringing in DevOps principles, you have the best opportunity to solve these issues with little downtime.
- Elasticity & Scaling
- You want to make sure your infrastructure is able to meet the growing user demand, but at the same time remaining cost-effective. Adding an automatic scaling policy to your infrastructure is the perfect solution. Platforms like Microsoft Azure and Amazon Web Services (AWS) make it easy to put your servers behind a load balancer, and automatically add and remove resources based on key metrics such as CPU load. Doing so can avoid unnecessary downtime of mission-critical applications under high traffic.
- Having visibility into your servers, and the services running on them is key to maintaining a stable infrastructure. For example, if your users are complaining about slow load times, it would almost be impossible to troubleshoot on your own to find a root cause. With monitoring in place, such as an Application Performance Monitoring (APM), would give you deep insights into the performance of your application to pinpoint exactly where the slowdown is.
- Users should never feel the impact of code deployments or other infrastructure changes. These processes should be as seamless as possible and your users should be totally unaware of what’s happening behind the scenes. Having a well-architected deployment procedure is key in being able to deploy bug fixes, security patches, etc without having a maintenance page on your site.
This scenario is just one of many examples where applying DevOps principles can help. Between DevOps and a strong engineering and development team, you and your website or digital product are in great hands.
Looking for ways to keep your site up and thriving, while saving your company money? Learn more about DevOps at Dom & Tom and the work Michael and his team are doing HERE.