I first encountered the word "enterprise" to describe software about ten years ago. I was working on an experimental system that would link voice networks and data networks together. I was working at Nortel, and naturally, Nortel was given the preference whenever we needed to integrate something into the system. Otherwise, we would just choose whatever we fancied. I remember we use Windows NT as the central server, running Exchange as the email server. The voice mail system we used Nortel's Meridian system. The most popular voice mail system at that time was Octel; unfortunately, it was bought by Lucent, a competitor of Nortel, not too long before we started the project. So, even though I would rather use Octel, I could not get any information out of them. I was actually given the go-ahead to buy a used Octel system. But I never got past the sales guys. I understood, as it was really odd for a Nortel employee to try to buy an Octel machine.
I did not know much about voice systems, even though Nortel was relying on voice communication for most of its revenue as that time. So, I asked people around me about the difference between Octel and Meridian. They always talked about two things that set them apart: Meridian was hellish to program, and Octel was carrier-grade.
I programmed Octel before that, so I knew how difficult it was to program a voice mail system, even something as popular as Octel. But they explained to me that Meridian programming was unmatched in terms of hoops you had to jump through to do the easiest thing. I took their word for it.
But if Octel was carrier grade, what was Meridian? They would dismissively said: "enterprise". What was enterprise? Well, something you deployed in customer premises, rather than in a central office.
Very soon, I started hearing about the rise of Cisco. Apparently, Cisco was very good at enterprise equipment, whereas Nortel was very good at carrier grade stuff.
Of course, many things are different now. Being called an enterprise system is now a praise and lately, a derision. A praise because it means the system is scalable, reliable, robust, extensible, etc. A derision because it probably means it is over complicated, poorly integrated, poorly designed and programmed, etc.
So, what really is an enterprise system?
For me, an enterprise system is a system designed to be used by an enterprise: a bank, a corporation, any group of people with multiple job functions and possibly conflicting agendas. All within the same enterprise, so the control of the system is clear: the corporation controls the system, and use it for its business needs.
A system that allows multiple corporations to interact with each other is not an enterprise system. A system that allows only one user is not an enterprise system. A system that sells merchandise to consumers is not an enterprise system.
I know many people will disagree with me with this definition. However, for me, this is the easiest way to determine necessary complexity. Desktop, enterprise, carrier. Three basic categories of necessary complexity. It does not mean a desktop cannot be more complex than an enterprise system. But in terms of system infrastructure complexity, it does not.
A desktop system has certain requirements in terms of reliability and robustness. When I first used Windows, I found out it did not behave the same way as the Unix systems I used much more frequently before then. And it did not behave the same way as DOS, which I started using in the early '80s.
I worked in different enterprises since I graduated. I know how an enterprise system behaves. I know what reliability and robustness I would put into an enterprise email server. Having an enterprise system down and out for a few minutes, or even a few hours once in a while is usually not a problem.
When I was working in a bank's treasury department, I also found out some supposedly enterprise systems were actually vital for the bank and its customers. They labeled them "business critical" systems. For me, these are not enterprise systems because they are necessary for different people in different enterprises, even though they might reside in one enterprise. They are borderline carrier grade systems.
For the last three years, I worked at a software as a service company. The system I built definitely is not an enterprise system, as it is used by many companies to run their business every day. None of them controls the system.
This system is a carrier grade system. It is like the telephone system; it is being used as a medium in itself. In other words, the company was a carrier, even though the medium is a software system.
This is actually what I want to say: I built a carrier grade software system. Yay!
No comments:
Post a Comment