If
the market is any indication, the answer is a resounding no! Check out market share research
conducted earlier this year and published on Silicon Angle. The two
largest commercial application servers Websphere and Weblogic have a
whopping 2.17% market share between them. The lion share of the
market is going to open source application servers such as Tomcat and
JBoss.
As
an architect and developer, I've always thought open source
application servers easier to support. In most organizations, access
to software vendor support staff is tightly controlled and requires a
bureaucratic effort to utilize. Because of this, developers are often
left attempting to resolve issues on their own anyway.
Self serve resources for commercial application servers such as
documentation, web postings for similar problems, and searchable bug
lists are often not much better than what you find with the open
source alternatives. Furthermore, getting to knowledgeable support
staff often takes time I don't usually have. Often, my support calls
need to get routed from first-level support to second or third level
support.
Most problems that start out being blamed as "application
server" issues are usually application code defects. Rarely are
outage or production defects resolved at the application server
level. This makes sense as application server code is usually better
and more thoroughly tested than application code.
As
a manager, I've never found the "security" of having vendor
resources available particularly comforting. It certainly doesn't
assuage clients who are experiencing some type of outage or defect
they need help with for very long.
Centralize and standardize use of sophisticated
software (whether its commercial or open source) throughout the enterprise. Standardize the use of application
server software to the point where all the typical issues are solved
once and do not need to be continually revisited. For example for
application servers, I standardize all build and deployment scripts
and container configurations. With the exception of memory allocation
and port assignments, I standardize other feature usage (e.g.
management console usage) so that they are the same for all deployed
applications.
These
choices are not usually revisited by each application developer or
team for each application. When the need for changes arise, these
changes are centrally evaluated and those configuration standards
changed. The change is then deployed on a planned basis throughout
the enterprise. This may seem a bit excessive, but I'd rather
developers spend time adding needed software features to applications
and better supporting the business rather than low level application
server configuration concerns. As a result of this standardization,
mysterious problems occurring in some environments and not others
rarely happen. I've written more about the benefits of this type of
standardization here.
Some
organizations see liability benefits to commercial software. For
instance, it's another firm to possibly to shift blame to should
problems and issues arise. Maybe it's where I've worked in the past,
but I've never seen blame shifting strategies of this type work over
the long term.
Another inference from this market share study is that use of Enterprise Java Beans (EJBs) has largely disappeared. However, that should be a separate discussion.