The Application Server Bubble Is About To Burst

Traditional application servers such as WebSphere, WebLogic, and JBoss are dinosaurs tiptoeing through a meteor storm. Sure, IBM, Oracle, and Red Hat still have growing revenue in these brands, but the smart money should look for better ways to develop, deploy, and manage apps. The reason: cloud computing.

The availability of elastic cloud infrastructure means that you can conserve capital by avoiding huge hardware investments, deploy applications faster, and pay for only those infrastructure resources you need at a given time. Sound good? Yes. Of course there are myriad problems such as security and availability concerns (especially with the recent Amazon mishap) and others. The problem I want to discuss is that of application elasticity. Forrester defines application elasticity as:

The ability of an application to automatically adjust the infrastructure resources it uses to accommodate varied workloads and priorities while maintaining availability and performance.

Elastic Application Platforms Are Not Containers

Elastic application platforms (EAPs) will help developers create elastic applications by reducing the art of elastic architectures to the science of a platform. EAPs provide tools, frameworks, and services that automate many of the more complex aspects of elasticity. These include all the runtime services needed to manage elastic applications, full instrumentation for monitoring workloads and maintaining agreed-upon service levels, cloud provisioning, and, as appropriate, metering and billing systems. EAPs will make it normal for enterprise developers to deliver elastic applications — something that is decidedly not the norm today.

Forrester defines an elastic application platform as:

An application platform that automates elasticity of application transactions, services, and data, delivering high availability and performance using elastic resources.

For complete details of EAP, Forrester clients can read the April 26, 2011, report Cloud Computing Brings Demand For Elastic Application Platforms by my colleague John R. Rymer and me.

What It Means: The Application Server Is The Albatross Around The Neck Of Elasticity

Applications must be architected for elasticity to take advantage of clouds. As more application development professionals realize this, they will begin to see the shortcomings of the existing app-server centric architecture patterns. This faulty pattern is prevalent in all major development platforms. Elastic application platforms will enable the ability to scale transactions, services, and data automatically and promote the principles of application self-sufficiency to support the technologies and standards needed to make this happen.

Bottom line: Traditional application servers and the container-based model will not meet the future needs of application developers moving to the cloud.

Comments

i completely agree, now the

i completely agree, now the problem solving associated to this type of architecture has to makes it way down to the education most software engineers/architects receive. for me personally, it does at times feel like more of an "art" as you put, rather than science which is what we are used to. i'm glad to see this topic rising in more and more outlets for self-taught developers across the web!

Self-sufficient apps are the key

Ankur,

I agree with you that we have to educate software architects and engineers about new architecture approaches. Finally, cloud is a catalyst for it.

I think the new architecture is to turn things upside down. Instead of an application server controlling and managing an application, the application itself should be self-sufficient. That means it should be self-provisioning, self-monitoring, self-fixable, self-scaling, etc... Why not? Distributed, autonomous systems are new. I agree

The .NET view ...

You make many excellent points - I'd be curious for your thoughts on this issue on .NET applications. I'd think the Microsoft WCF platform would be the key component to make this work -- at least in their cloud offerings.

Azure is Microsoft's play

Steve, Microsoft Azure trajectory is to become an elastic application platform. I think Microsoft understood before many other enterprise software vendors that cloud must be more than just infrastructure to be successful. If it was just about infrastructure then cloud would just be fancy virtualization. Application elasticity is great for web apps that have volatile traffic.

Faulty Patterns - worth a second look

Interesting prediction. I would love to hear more how faulty development patterns today are, how they need to change and what vendors already do and still need to do to address this. Just virtualizing app servers on cloud infrastructure hardly seems to reap all potential benefits
:-) stw.

Mike, I would give the bubble

Mike, I would give the bubble another 10 years before the air starts to get out. There are simply too many apps running in maintenance mode without any serious need or pain to change. Same with apps scheduled to be deployed.

Sooner if migration is frictionless

Infrastructure resources for application are usually allocated based on the maximum capacity. So, if you are an eCommerce site and you do 70% of your business between Cyber Monday and the end of the year, then you allocated infrastructure resources for the peak capacity. If infrastructure utilization is 15% in July, then you are wasting capacity. Virtualization is just a fancy way of allocating the maximum capacity. Cloud is different. Infrastructure resources are elastic. If you could automatically allocate resources based on actual need rather than peak capacity then you would save money. Why not do this if you can save money? Well, you would not do it if it required a re-architecture of your app because that would be too complex. But, what if you could just deploy your WAR file to an elastic application platform with no code changes. That would be cool. Because with the click a button your application could use elastic infrastructure resources. I have seen the beginnings of this in vendors such as cloudsoft and projects such as jcloud.

If the scenario I described above is possible,then I think we are looking at 2 to 5 years.

Mike

unless of course if your cloud provider caters to ...

customers who have the same need pattern. Which poses an interesting meta problem: you can make a save bet that all the accounting packages have peek need at month end. eCommerce peaks around BlackFriday, CyberMonday and Valentines' day. A cloud provider needs to look at their own peek in the same fashion as virtualization (since after all that's the technology layer below it), just on a larger and broader scale. Broader scale probably levels performance needs, but also opens the door to more epic failures.

I've been on elastic cloud

I've been on elastic cloud services for Java apps for nearly a year. It's terrific. I started with STAX which was just acquired by CLOUDBEES where they now include both a development environment and a production/run environment.

It seems impossible to imagine working with any other structure. To @Mike above, that's exactly what we do, deploy .war files with a 1-button create MySQL db. Easy and scalable.

Elastic Cloud and database clustering

I see where this argument is going and it does seem inevitable. However, I currently wonder to what extent I can deploy a JEE compliant web application to an EAP and control such things as database clustering. Or is clustering no longer a topic since the database layer is also reliable and elastic.

Does anyone know of any detailed overview of how this is done with any existing EAPs?