With the advent of the World Wide Web, HTML, and browsers such as Netscape Navigator, application developers unknowingly reverted back to a thin-client model that look awfully similar the days of the IBM green screen. Yes, we now had a graphical user interface but the idea was the same. The browser had become the thin client, the work that in a client-server architecture occurred on the desktop had now been shifted to the middle tier, and the data base and enterprise applications (e.g. SAP) were still managing the heavy lifting on the back end. It is important to note that the middle tier, which came to be know as “application servers”, moved back in to the glass house.
Application servers proved to have a great deal of value to the enterprise. They provided an environment where one could run their business logic and acted as an enterprise integration engine. Changing anything on the mainframe was still as difficult as ever, but developing web-centric applications and deploying those in an application server environment that occasionally would interface with back end data and applications was getting increasingly easy. An added benefit was that application servers could also act as integration engines across enterprise applications, an area that had been the exclusive domain of enterprise integration platforms such as TIBCO and IBM’s MQ Series.
Another key enabler of the growth of the three-tier architecture was the introduction of the Java programming language. The introduction of internet technologies into the enterprise allowed UNIX systems into the enterprise. This meant that developers had to design and compile their applications separately for each runtime environment where they might reside. A windows application would not run on UNIX. Applications developed for Sun Solaris would not run on HP/UX. The Java promise of “Write Once, Run Anywhere” tackled this problem head on.
Key to the success of the Java programming language was adoption of the concept of the Java Virtual Machine (JVM). This meant that each platform provider (e.g. IBM, H-P, IBM, etc.) had to develop a Runtime “container” that was adhered to the Java standard and abstracted the platform specific interfaces. Any manufacturer that wanted to play (survive) in the world of web-centric three-tier architectures had to develop a JVM for their platform. Java developers no longer had to worry about developing for a specific platform which removed another significant barrier to adoption.
The Java centric application server also brought enterprise class management tools to the middle tier. Application servers could be replicated and scaled with relative ease. Enterprise class failover and fault tolerance was absolutely required for before an application server would be allowed to run mission critical applications in the enterprise. The tools were now in place for the three tier architecture to be broadly adopted in the enterprise.
In a previous post on Client-Server computing I identified two key components that were required before the Enterprise would adopt the client-server architecture. The three tier architecture added a third component.
The key components now included:
- Hardware Infrastructure & Networks
- Software Development Tools & Platforms
- Manageable Runtime Environments (e.g. JVM)
This is my version of the three legged stool of the enterprise “Internet of Things” (IoT). If any one of these is missing IoT centric vendors will have a very difficult time breaking into the enterprise.