On commercial Internet and Enterprise application development

What makes people think building commercial Internet applications is similar to building Enterprise applications?

I am asking this question because there is a perception that one can directly apply the same principles of Enterprise application development to that of commercial Internet application development.

It may be obvious to most of you that these two activities have starkly different requirements, but don’t take it for granted that this is clear to those whose experience only involves one, or the other kind. Believe me, I run into these people allthetime. In particular, a good number of Enterprise application architects seem to think that the traditional, rigid approaches and principles of developing Enterprise applications should be preferred over the more agile approaches and principles commonly practiced in commercial Internet application development — when developing all types of applications.

That is a fallacy. That kind of thinking is an instance of the hammer truism, and fails to take into account the key differences in the requirements for the two types of applications.

Do Enterprise applications have higher scalability requirements than commercial Internet applications? Of course not.

By nature, the scope of any Enterprise application is that of a corporation. I don’t know about you, but I have not yet run into one with a user base anywhere near that of the Internet. Anyone will be hard pressed to find an example of any Enterprise applications in production serving as many users as Facebook, Ebay, or YouTube. And these sites typically run web applications made out of open source components, hosted on commodity hardware and infrastructure. Anyone parroting the mantra of open source components cannot scale must be living under a rock. Of course they are constructed to scale, albeit may be differently from the way the typical Enterprise applications are architected.

Commercial Internet applications usually have to go to market fast — in lightning speed compared to the Enterprise counterparts — and, over time, have to change rapidly to keep up with changing business requirements. Their development and release cycles are measured in weeks and months, not years.

While in the Enterprise we worry about some security vulnerabilities that can be exploited by disgruntled employees, out on the Internet we worry about all and every single one that can be exploited by anyone, including the 13-year old cracker and script kiddie living down the street.

The Enterprise environment is a lot more predictable and controllable. You can mandate a specific and narrow set of client application, workstation, and network environment requirements — and that’s acceptable, because these things can be commanded in a top-down fashion inside the Enterprise. By contrast, that’s not even a choice out on the Internet. Your application is open for attempted access, by anyone, anytime, using any types of client device.

So, tell me again how anyone can say that the same narrow architectural principles applicable for building Enterprise applications should be preferred for building commercial Internet applications?

The bottom line is, don’t let yourself fall into the trap of ignorant — or worse, deceptive — marketing messages about the perils of building commercial Internet applications using agile development methods, and the mix of open source components and commercial software where appropriate. It works, it has been working well, and it’s going to continue to work better, and better.

As always, use the right methods and tools to solve the right problems, and you will be doing just fine.

Comment

Francis Carden # Wednesday July 1, 2009

You raise some interesting points but, in my view, missed some too. First, I am not a hard core developer. I consider myself a transactional application programmer. There is a difference. I understand the business requirements and so therefore see where you are trying to get to with your analogy. To be fair, it’s hard to argue with your points if you look at it so black and white. You could even argue, “who cares”, since I believe the end result, speaks for itself. Enterprise Application Developers have built hundreds of 1000’s of commercial applications, home grown or packaged. There is not even close that number for the web – YET!

So, taking a different tack. Why are MOST enterprises still using Mainframe applications that are over 25 years old, indeed, green screens at that? Why do organizations still use any client server applications over 15 years old or old web applications greater than 5 years old? Why are these all seen as legacy just a few months after they roll into production? If you compare the back end code (business logic) that makes up a bank wire transaction or credit card / debit / interest calculations or payroll / tax / deductions / laws / legal / state regulation you will see, they are vastly different to commercial web applications. They are customized to give each Enterprise a competitive edge, to integrate with their many other legacy applications in micro-second response times. They are both transactional but they are not both the same. I would even argue that some of the web applications you mention have become legacy. They equally don’t change quickly and have disappointed years on, with their lack of agility. Users want to keep their application interfaces or at least, have full backwards compatibility. Web developers have the same issues now. I see Yahoo, it was 8 years before they changed their interface. Ebay goes down, so does twitter! I can control MY apps, but not someone else’s.

I don’t want to waffle on here but enjoy debate. My argument rests on the fact that Web (browser) is a very archaic technology. Sure we’ve beefed it up with plug-ins (ActiveX, Jscript/VBScript, Java, Adobe, Flash, Silverlight, Flex) and so forth but each plug-in ties us to more code, that’s hard to custom and hard to support.

I would argue, we are turning the browser into the UI for Client Server applications (now asynchronous again).

You see, Web 2.0 is a way to make the UI enterprise ready, the problem is, there are many many pieces needed to make it work and that means also, many pieces to make it fail. Simple Commercial web apps are easy, complex ones are no easier or harder than building enterprise applications.

I guess we could say, Commercial Web Applications are client server apps (install-on-demand) and thus your argument is valid. It’s just they used to be called what they are, Packaged Apps! Oh, how the pendulum swings :)

Steve Bjorg # Thursday July 2, 2009

Well, you make some confusing good points. Open source is NOT made to scale… it’s made to be OPEN!

While it’s true that there are many open source projects that scale very well, it’s certainly not true to say that everything that scales is open source. To complicate matters further, one could easily argue that Facebook, Ebay, and YouTube are Enterprise applications. Why? Because they are the life-blood of their respective organizations.

So, on one hand we have non-open source solutions that scale very well (pick almost any industrial internet router), we have highly scalable open source solutions that are in effect Enterprise applications, and we have highly scalable non-Internet proprietary networks (financial trading systems).

In the end, trying to pitting Enterprise vs. Internet is a bit strange and I think you may simply have chosen the wrong terminology to make your point. There are technologies that scale better than others and there are technologies that are more reliable than others, and then there are those that combine both or neither. Partitioning it by Internet vs. Enterprise is not the right approach, imho. Maybe try SOAP vs. REST, SOA vs. WOA, C vs. PHP, and so on… There are many ways to stumble into the hammer truism, you may just have found yours! ;)

Add a comment or reply

  Textile Help

See the list of older articles...