Why Are Java Deployments Still So Hard?
So why are deployments still hard? What is DevOps?
With all the advancements in Java based application servers you’d think deployment is a non-issue by now.
I mean with JARs, WARs and EARs (not to mention dynamic scaling, liquid VM and more…) it seems like all you need to do is drop a file in the right location and “boom”, your app is ready to role and scale. Well guess what? That’s just not the way things are when you build enterprise applications. There are always a million “other” details that need careful attention and precise execution in order to make an enterprise application roll. Why else would there be such a big force behind “DevOps”?
What is DevOps exactly? I argue that if application deployment and releases were as easy as clicking a button or dropping a file in place there would be much less urgency and drive behind the DevOps movement. The reality is that deployment is becoming a bottleneck that prevents some businesses from competing effectively along with the growing risk that deployment errors create significant damages. Just take a look at some recent headline news. A string of deployment-related software outages this year—including Knight Capital, Nasdaq, BATS, Royal Bank of Scotland and many other high profile companies—racked up hundreds of millions of dollars in damages and negatively impacted millions of customers and brand reputations. The next software failure in your organization has more than a 60% chance of being deployment related as well!
The basic technologies referenced work—but they are only a fraction of any real world architecture and they are not enough. Applications are no longer monolithic, they are a collection of components or services that need to be configured properly and each may or may not require special container configurations, different database setting, message buses and web service configurations. Even a 100% pure Java application (who remembers that slogan?) is hybrid these days—usually because it involves different containers for different services and much more than a single cluster.
A typical setting will be: Tomcat for web serving, JBOSSm, Weblogic or Websphere for the business logic components and so on. The variations are wide. Every application team makes choices that best suit their needs. By the time an application comes together as a whole for deployment, only a chosen few understand the process of making all the pieces tick. These IT heroes are typically the veterans, they’ve been there forever and everyone appreciates that without them around things can quickly go downhill. From the hero’s point of view, things are very different. For them, it’s usually after-hours and long weekends and many “unexpected” weekend calls from work to fix configurations gone wild and bogus deployments.
Finally, with the widespread adoption of agile development methodologies and offshoring it has become increasingly difficult to meet the growing frequency of deployment activities. So much that for many organizations, release and deployment has become a major bottleneck and a source of business risk.
To answer my original question, deployments aren’t just hard, they are getting more and more difficult. To make things even harder, frequency is increasing with many adopting a vision of “continuous deployment” or “continuous delivery” which can’t be met with the current, manual approach to release and deployment. Nor is re-architecting an entire enterprise with a single PaaS solution feasible in the near future. Since this is a big topic, I will continue this thread in my next post.
So what is DevOps? In my view, DevOps has 3 parts:
- Developers that learn to think like Operations
- Operation that learns to think like developers
- An automation platform that connects them
In our upcoming webinar on hybrid java application release and deployment best practices, I will dive into these three key points and demo our Application Release Automation (ARA) platform which enables developers and operations teams work together and understand each other’s processes. It also provides a complete automation solution that replaces any manual release and deployment related activity for even the most intricate hybrid application deployments.
Please join me on one of the following dates and times for this discussion by registering here:
Webcast: Best Practices for Hybrid Java Application Deployments (Europe)
Date: Oct. 30, 2012
Time: 10 AM BST / 11 AM CET / 6 PM SGT
Webcast: Best Practices for Hybrid Java Application Deployments (U.S.)
Date: Oct. 31, 2012
Time: 9 AM PDT / 12 PM EDT
If you have any questions about this post, please feel free to send them directly to Michael Schmidt, Sr. Product Manager, UC4 Software.