As I talk with customers and analysts about the big challenges faced in IT today, the disconnect between application development and production operations has been coming up frequently. No doubt, the DevOps movement has been raising awareness about this issue, which has plagued IT for a long time. But cloud and mobility are adding new pressures to get applications and updates to market quickly. Hence, aligning development and production environments, as well as supporting more collaboration between developers and operations specialists, is more important than ever.
Here are four approaches to consider for brining application development teams and production operations teams into better alignment, along with a couple tools and resources to help you get started.
1) Give developers access to production delivery tools. Load-balancers and CDN services have been locked up in production environments. That makes for an awkward hand-off between development, testing, and production – kind of like a wedding where the bride and groom only meet at the altar. I’ve heard networking teams complain that the app guys never draw load-balancers in their complex, multi-tier application architectures. Yes, it’s a mistake, but an understandable one if they don’t get to use it and, if anything, is seen as one of the many barriers to getting their app into production. One solution is to use a layer-7 software load-balancer that can be used across development, testing, and production environments. What’s more, a software app delivery controller can be paired with distributed cloud services to create a content delivery cloud. That way, the content deployment lifecycle is streamlined and remains programmable.
2) Add security as code. I love this talk by Chris Hoff (@beaker) about the disconnect between cloud-loving developers and cloud-skeptic security. His core message is really to operationalize security and build it into the app. That’s difficult to do, however, when security functionality is being deployed in dedicated hardware boxes, completely unaware of how cloud applications are built for elasticity. One solution is a distributed, software-based application firewall, which can be managed programmatically, either on a webserver or integrated with a software load balancer. That way, the security layer can scale with the application.
3) Let developers instrument for monitoring. Troubleshooting an application problem often starts with the operations teams (network, server/virtualization, etc.), but developers often get dragged into the “blame-storming” session. It’s not really the best use of anyone’s time, especially developers that could be writing new code. But, as I’ve discussed before, having “emotionless data” is key to quickly diagnosing and resolving performance issues as they arise. Gathering that data, however, often takes some foresight and instrumentation. For real user monitoring (RUM) data, in particular, one solution is to instrument the application itself, either with some code in the app itself, or injecting it dynamically upon delivery. Making it easy for developers to add this instrumentation will help ensure that “emotionless data” is available when problems arise.
4) Use a common toolset for testing pre- and post-production. Pre-production testing in QA focuses on functionality and stress testing the servers. These tests don’t take into account additional variables that appear in production. Once performance problems arise in production, operations teams and application development teams are looking at very different pictures and data. It’s like trying to negotiate a peace treaty with no translators. One solution is to have a production-scale APM that hooks into Integrated Development Environments (IDE), like Visual Studio or Eclipse. This allows operations and development teams to collaborate and accelerate debugging, rather than stare each-other down in a Mexican standoff.
I talk about several tools and technologies here that can help automate and de-risk the application lifecycle, but the even bigger challenge (IMHO) is the human, process, and organizational inertia. The cultural shift towards DevOps in any organization can’t happen overnight. Knowing how you want to measure success (release frequency, downtime, etc.), before seeking broader buy-in, will help you build a case for changing long-established procedures in favor of a more proactive approach that delivers faster time to market at lower cost and risk.
Aligning development and production environments is one of many practices that can lead to applications that impress, engage, and delight users. You can find a fuller list in this SlideShare presentation, Apps That Impress:
How have you applied DevOps practices in your organization? How do you align development and production environments?
Riverbed, at more than $1 billion in annual revenue, is the leader in application performance infrastructure, delivering the most complete platform for the hybrid enterprise to ensure applications perform as expected, data is always available when needed, and performance issues can be proactively detected and resolved before impacting business performance. Riverbed enables hybrid enterprises to transform application performance into a competitive advantage by maximizing employee productivity and leveraging IT to create new forms of operational agility. Riverbed’s 26,000+ customers include 97% of the Fortune 100 and 98% of the Forbes Global 100.