Before the important aspects of application optimization can be discussed, it is important to define what is meant by an application. Application is a term that is very common in the IT industry. Most IT personnel could easily define it. However, it can mean different things to different people. The same goes for middleware. And, service can be equally confusing if it is not properly defined.
What Is an Application?
As the title of this chapter states, the content focuses on application optimization. However, this chapter also focuses on delivering rapid service deployment. Service, and its relationship to applications, is defined in the following section. However, before reviewing that information, application must be clearly defined, and before defining application, it is important to understand why applications are the focus of this chapter.
Applications are the next logical component above the infrastructure in the building-block architectural approach to delivering N1 Grid solutions. IT operators and system administrators know that a highly robust and efficient infrastructure can deliver great benefits to the IT organization. They also know that it only facilitates the true requirements of the business, and the next step to building that business value is to deliver the software components required to meet those needs (that is, applications). Delivering applications is the next level of focus for an IT organization after building the infrastructure, so it is the next level of focus for optimization.
The term application refers to any software that is not provided as part of the operating system, but is layered on top of one or more instances of it. An application can provide a service by itself (for instance, an HTTP service provided by a web server), or more commonly, it can provide APIs and services upon which higher-level applications or services are based.
Examples of applications in the web tier (Tier 1) are the Sun Java™ System Web Proxy Server software, the Apache web server, or other web infrastructure components. Examples of applications in the application tier (Tier 2) are Sun Java™ System Server, BEA WebLogic, IBM WebSphere, and other IT infrastructure components. Finally, in the database tier (Tier 3), application examples include Oracle, SyBase, and other business processing and decision support applications.
What Is Middleware?
If an application can be defined as providing APIs and services upon which higher-level applications or services can be based, what is middleware? The confusion stems from common IT vernacular that has architecturally dependent dialects. Middleware is probably the more technically accurate term for what was described as an application. In the more structured world of software development, architectural terms and practices are clearly defined and used. Software developers tend to see the architecture stack from the top down (for instance, business applications that deliver financial reports or customer service records that rely on software components below them). Those components are the middleware, such as an application or database server.
In the case of IT operations and administration, their architecture dialect has a view of the architecture stack from the bottom up. Their focus is on delivering the infrastructure. Everything above the operating system is an application. While architecturally, there are separate layers of middleware and applications, this discipline is not prevalent. So, while middleware might be more technically accurate, application is more widely used among IT operations and administration professionals who are trying to solve the kinds of problems that N1 Grid solutions addresses. With that as a background, application wins out over middleware.
What Is a Service?
The importance of a service is amplified by the focus on delivering rapid service deployment. With an understanding of an application (also known as middleware), what is its relationship to service? Quite simply, a service is the business-level IT deliverable generally composed of one or more applications. So, an application by itself could be a service, but more commonly, a service is numerous applications and other common software elements assembled together in a cohesive way to deliver some functional service to the business.
In the IT world, we too often focus on the bits and bytes. A great deal of attention is paid to the megahertz and the gigabytes when the focus should be more centered on what the business truly needs: an online bookstore, a customer billing system, or a wireless phone activation system. Supporting what the business needs is the important point, so the service should be the important focus.
Although this chapter focuses on application optimization, that does not diminish the importance of the end service. The next chapter focuses on strategic flexibility, which is service-centric in its approach.