7 DevOps practices to improve application performance
Devops is primarily associated with collaboration between developers and operations to improve the delivery and reliability of applications in production. The most common best practices are to replace error-prone manual procedures managed at the boundary between development and operations teams with more robust automations. These include automating the delivery pipeline with CI/CD (continuous integration and continuous delivery), standardizing configurations with containers, and setting up infrastructure as code. On the operations side, DevOps best practices for improving application reliability include improving application observability, increasing monitoring, and automating cloud and infrastructure operations.
But what about improving the performance of applications, databases, data pipelines and cloud infrastructure? In this article, I consulted with experts and identified seven opportunities where DevOps practices and methodologies can impact performance and user experience.
1. Build security practices into apps from day one
The last thing DevOps teams need is to deploy new capabilities with security holes. A security outage or degradation impacts the user experience and creates significant business issues. A good devops practice is to shift security to the left by collaborating with infosec on requirements, testing code vulnerabilities in CI/CD pipelines, and implementing other security practices in software development .
Mike Elissen, Senior Developer Counsel at Akamai, says, “A critical component of application reliability is availability, and taking the appropriate steps to properly secure an application against web application attacks, DDoS attacks, etc. can make the difference between staying online and offline. .”
Elissen says the shift to the left is part of turning devops into devsecops. He continues, “We are seeing the ‘left turn’ on adding security in devops becoming more and more pronounced, ultimately creating a stronger devsecops culture and making more developers aware and responsible for the security of their applications. .
2. Standardize architecture and infrastructure plans
Amir Rozenberg, VP of Product Management at Quali, lays out an issue that’s impacting the team’s performance. He says, “Many devops teams find themselves organizing the chaos of organically grown application framework definitions, which were developed in good faith from the start to enable team efficiency in the lifecycle. of software development.
Rozenberg asks if DevOps teams should take a DIY approach to creating environments or if the organization should create standards. He says, “The recommended approach is to establish a central team to model environments as blueprints so that they are reliable, reusable, and compliant. They must then be able to distribute these infrastructure definitions so that they are available for business constituents to consume through rapid self-service, whether integrated into the automated pipeline or manually. .
3. Institute for Observability and Continuous Testing in the CI/CD Pipeline
Matt Sollie, director of devops at 66degrees, believes that CI/CD can do more than just package and push code. He says, “Not all devops principles are as glamorous or visible as continuous delivery or building everything as code, but they are equally important. Continuous integration is one component of a mature devops posture that can greatly improve an application’s reliability, but it takes purpose, vision, and time to build it meaningfully.
Sollie recognizes that in addition to having a vision, achieving reliability and performance goals requires investing in best practices and architectures. “Observability is a critical and expensive principle because reliability is not an on or off state and requires nuanced data collection. With all cloud computing services, selecting the right tool or service for the job can bring inherent advantages in terms of reliability and performance.
What should agile development teams implement in their pipelines to improve performance? Here are some recommendations:
4. Control Deployments with Feature Flags and Canary Builds
Deployments don’t have to be absolute failovers where all users get all changes at once. Feature flags in code help configure and control the availability of a feature, while canary release strategies allow devops teams to roll out new features slowly and methodically.
John Kodumal, CTO and co-founder of LaunchDarkly, adds, “Feature management, especially feature flags, is quickly becoming a go-to DevOps practice that improves overall application reliability and performance while enabling developers to continuously innovate. . By using feature flags, developers can test feature updates before production to fix issues before release. »
Controls improve reliability and performance, but also help development teams minimize disruption. Kodumal says, “Feature flags improve performance while giving development teams the controls needed to update applications without disruption or downtime.”
5. Establish Rigorous Standards for Observability and Tracking
Focusing now on the operational side of DevOps responsibilities, teams should consider several best practices for improving application performance, including developing observability standards and improving monitoring.
Frederic Harper, Director of Developer Relations at Mindee, says, “Devops needs to have rigorous monitoring and observability processes in place to ensure that every element of the application is working properly and server processes are working properly. By securing this element, DevOps teams can gather valuable information to understand how users use applications, potentially prevent future issues, facilitate customer support, and improve business or architectural decisions based on real data.
6. Extend monitoring with AIops and automations
In the days of Web 2.0, operators had only a handful of log files and monitoring tools to review in the event of a crash or performance issue. Today, running microservices, serverless applications, and multicloud databases means a lot more data and tools to consult when troubleshooting and identifying the root causes of problems. AIops Platforms that centralize monitoring data, use machine learning to correlate alerts, and help operations automate response and recovery across multiple platforms can help minimize performance impacts.
Mohan Kompella, VP of Product Marketing at BigPanda, agrees, “AIops platforms can help devops teams maintain tool autonomy and flexibility while giving centralized incident responders the visibility they need to be the first line of defense in the event of a breakdown.
7. Define SLOs and margins of error
Devops teams need to determine which practices yield the most benefits and manage the risks. This requires teams to measure, learn, and collaborate on devops priorities, which isn’t easy when the benefits may not be realizable for months or years after implementing the practices and tools.
One method to prioritize is to adopt site reliability engineering practices, set service level objectives (SLOs) and use margins of error. When an application or microservice exceeds its error budget, it signals the devops team to identify the causes and focus on solutions.
Kit Merker, COO at Nobl9, says, “Service Level Objectives set clear goals for engineering teams to make better decisions about how to prioritize their work. Developers and ITops cannot just be tech-centric, but can shift to service-centric.
Devops teams have a lot on their plate, and Devops best practices help teams balance their focus between speeding up development and improving reliability and performance. The key to success may lie in defining problem statements, debating approaches, iterating on solutions, and measuring impact.
Copyright © 2022 IDG Communications, Inc.