Software Infrastructure as the Interface between Business Innovator and Operator
Jesper Joergensen's Blog |
September 15, 2005 11:11 AM
|
Comments (0)
It occurred to me that the role of software infrastructure can be boiled down to an interface between:
- people that implement business innovations as software programs and
- people that operate those programs so that they deliver the expected innovations to the business
New trends in how to implement software programs have emerged recently and this is putting a strain on software infrastructure as an interface. I will try to explain this and how to address it below.
The Current Paradigm
Currently the dominant technology for implementation of software programs (applications, services, business processes etc.) is virtual machine languages in the form of Java / J2EE and C# / .NET. The advantage of this paradigm over previous paradigms like C/C++ is that it is more productive and more flexible. In J2EE/.NET it is easier than before to write bug free programs and access enterprise resources in a scalable, reliable and secure way. Things like multi-threading, clustering and hot deployment are provided as services by an application server.
On the operational side, the current paradigm has enabled operators to deploy one program on many machine architectures (in the case of Java) because it runs in a virtual machine that is widely available for all the most common OS/Hardware types. Application Servers have also made it easier to redeploy applications with minimal downtime and manage large deployments distributed on clusters of machines.
New Trends
In the quest for ever-increasing flexibility and productivity, there is a constant evolution in the area of programming models and languages for implementing business "programs". Here are a some of the trends that are happening right now:
- Application frameworks such as Spring that define new programming models on top of J2EE to make it simpler to write enterprise applications.
- Scripting languages such as Groovy, Ruby, JavaScript (E4X) and Python to allow for more instant modification of a program and more ease-of-use.
- Domain Specific Languages that make business programmers more productive in implementing programs specific to their business domain.
- New user interface technologies such as AJAX and JSF that make it easier to build web based user interfaces that are more responsive and efficient to use.
- Dynamic composition of applications from services using configuration metadata. This enables rapid implementation and modification of business innovations as programs.
- Business Process Management systems that enable business processes to be implemented, deployed and operated much more rapidly and flexibly.
Many of these trends are overlapping and they are called different names by different communities, industries and vendors. But they all have one thing in common: Their objective is to make is simpler and more flexible to implement business innovations as programs. Thus they all address the "implementation" side of the interface that software infrastructure provides.
This poses a challenge because today you don't have a choice of "implementation model" without having to change your software infrastructure. If you want to write PHP, you need a LAMP stack, if you want to write a Spring based application, you need a deployment environment that supports that framework etc. But application servers and other software infrastructure are not something you replace easily. IT operations will cry out loud if you ask them to mess with their top-tuned running engine just because a programmer would like to use Spring.
Thus, operational requirements are effectively vetoing the use of implementation models that could improve flexibility and productivity and lead to faster time to innovate.
The solution to this problem is to change how we design the infrastructure itself.
Introducing the Blended Model
At BEA we are introducing the blended model to solve this problem. A good interface is supposed to shield each side from changes in behavior on the other side. Accordingly, a good software infrastructure must enable implementation models to change without affecting the operational model.
This initative has already started with the release of WebLogic Server 9.0 that supports J2EE, Spring and Beehive programming models and going forward you can expect to see more products from BEA that support new and more flexible programming, configuration and composition models all deployed to the same execution environment so that operators are shielded from the choices of business innovators.
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
|