We use terms application server and web server interchangeably these days. Historically a web server was supposed to serve static html pages over http protocol. Then web servers started serving scripting languages like ASP, JSP, PHP etc. For complex application which needed services connection pooling, object pooling, messaging, transaction management were supposed to use application server.
I said historically because with time the distinguishing line has narrowed down. Most of the web servers have started providing features of application servers with plugins and add-ons. Some exmples of web servers- Apache HTTP (PHP), Tomcat (Servlet container, newer versions have EJB container) etc. Application server examples are JBoss, Websphere etc.
A cluster in simple terms is group of similar things, in this case computers or servers. A more refined explanation would be that a cluster is group of computers, working together in such a way that for end user it is one single machine. This is close to what I discussed about implementation of virtualization, so yes clustering is a form of virtualization.
But when we are strictly talking about software architecture, we are actually talking about using cluster for load balancing or handling failover. For a simple web application, this would mean creating 2 or more similar server machines, which are maintained in a cluster. There is a single point of entry which dictates which server from cluster should fulfill incoming request. This is load balancing. The server at the entry point can use any algorithm like round robin or check the actual load on a server to assign a request to one of the servers in the cluster. At the same time if one of the machine goes down in cluster for some reason, other servers can share the load and end user will never know about the problem occurred at backend.
What is a Grid? In definition it is nothing but some horizontal and vertical lines cutting each other. Something like
How is that related to grid computing? Not actually. But if you think that there is a computer node available at each intersection of horizontal and vertical line, we will get close.
What exactly is grid computing? Think of the fact there are many average computers connected to each other and can share their processing power, how fast it can deliver solution. It is form of implementation of distributed computing and parallel computing. It can help using many average sized computer and giving impression on a super computer processing power.
Service Oriented Architecture or SOA is a way to design a software application, in which we divide each logical unit/ component of the system as self sufficient service. The idea is not very new and has its roots in distributed computing. But the concept of SOA has gained more popularity recently due to the fact that IT is going very fast changes now as compared to past. Technology that is hot today might become obsolete in an year. SOA guarantees insurance against such a change. How? Let’s start with a very small example, a one page form submission for online registration to say a college
The above example might not explain the exact usage of SOA but it gives some picture. We can extend the above example, by thing of a complex system say a banking system, which has multiple components like retail banking, corporate banking, account management, loan management, customer relation management etc. If all these are created in tightly coupled fashion, it will be very difficult to manage and maintain a system, forget about upgrade. Whereas if the system is implemented in SOA manner, with small manageable services components, it is much more easier to maintain and upgrade.
Virtual, as the word hint, is something that is not real, but gives feeling of being real. In computer world, my first interaction with virtual machine was at the very beginning in school days, when we were made to work on dumb terminals, which had only monitor and keyboard. The terminal used to be attached to a central powerful machine which would provide processing power and memory requirements.
That is a very crude example of virtualization. With hardware cost going down in last few years, the need of dumb terminals has evaporated. But with cloud computing coming into picture, virtualization in IT industry has reached to new scales. With cloud computing it is convenient and important to manage virtual machines based on requirement or load on the application.
Virtualization goes beyond a virtual machine (hardware virtualization, software virtualization, storage virtualization, network virtualization are key), but for sake of this posts simplicity, I will stick to virtual machines. A virtual machine is simply a machine which does not exist in real, but can be used as a real machine. The advantage of this type of arrangement is maximum usage of hardware and hence cost efficiency.
Hypervisor is the key software component which helps running multiple operating systems (and hence machines) on one system. Read here on hypervisors.