When a user enters some domain name in browser, there are two things likely to happen. First, he may read and navigate to some content in the form of html pages and in second case, he may interact with the pages like comment or like some post, login to bank account and do some online transaction, etc. In modern terminology, former is called as website and later as web application.
However, web applications are a whole different beast. Initially, they used to behave like traditional websites but, with the evolution of Ajax, behavior and user experience of web applications changed forever and perhaps for better. Web applications are dynamic and ever changing. These applications expect heavy user intervention (interaction by user) for their functioning. They use programming language like PHP, Ruby, etc. at backend along with some sort of database for persistent storage.
In real world, typical company or organization’s main site which is relatively static and build for branding and marketing purpose can be considered as website. Whereas, applications like Gmail, SkyDrive are pure web applications. But then, there are sites like amazon.com or news portals like cnn.com which serve content similar to traditional website but also allow interactive features similar to that of web application. To make boundaries as distinct as possible, these sites fall under third category of hybrid apps (website + web app).
Users and audience
Websites and web apps have rather different motivations behind them. In context of web site, audience is more apt description for the guest visiting the website. Since, website is often seeking the attention of its guest. In an infinite network of Internet, there is always 100% probability that content for which the guest is looking for will be available on some other website too. In such scenario, if website cannot entertain its guest, guest is likely to move out somewhere else. This is similar to hoteling business where if the guest does not like the hotel, he is very much likely to seek another one. What marketing is to hotel business is what SEO (Search Engine Optimization) to website is. Along with that, to woo its audience, website needs better web design, simplified information architecture, better content, brand management, etc.
On the other hand, for web application, user is much better description for its so called consumers. This fundamental thought drives web application with very different requirements than that of websites. SEO, web design may not be the very high priority for web application. The user base will be limited and can be stereotyped to a better approximation. Web applications usually have very specific purpose. It involves business processes and workflows which are often very complex and streamlined. Unlike website, web application does not really scream for attention of the user. It is the user who needs to use the app to get his task done. (* This may not be the case always. If user does not like Gmail, for example, he can always go to another vendor. A good user experience is still a high priority). The user does not necessarily demand SEO or killer visuals but he will wish for high security, data integrity, regular updates, etc.
Of course, there are few requirements that are fundamental to web in general and not just any specific application range. Such requirements include good usability and user experience, high performance and ability to consume content on multiple devices.
Nature of web application and development methodology
This is where probably comes the real big difference between web sites and web applications. Rather than focusing on both websites and web applications in general, we will go in depth with web apps. Today’s complex web applications are often developed by team of people in some IT organization be it small startup or established player. It is simply not possible for a person or two to develop entire web app within a stipulated time especially when everything now a days have strict deadlines for obvious competitive reasons.
Further there are few realities about people, business and software development. People, almost for self-interested reasons, move out of organization. Vacant positions have to be substituted for by new resources. For business, requirements change almost on weekly basis and software has no other way but to cater to those ever changing requirements. For software development, there are few realities too.
If not properly managed, the application code can really get cluttered as time passes. After a while, making new requirement change adds to exponential increase in complexity (most dangerous hidden cost of unmanaged code). If not properly documented, new people often face difficulties in understanding the framework wasting precious time. If design patterns are not followed, the code can get become difficult to read. If code is made too generic to accommodate any future change, the code can get pretty messy and performance may suffer for huge flexibility. And, if not accommodated for any future change, the code may provide performance but at the cost of inflexible code and overall bloated solution leading to security issues.
Beside these, the code has to be reusable to adhere to DRY (Do not repeat yourself) to avoid time on reworks. The code also needs to follow centralized control or single source of truth principle (Meaning, change at one place should be propagated throughout the application source without any possible feedback).
If not least, then application lifecycle is probably another factor needs to be taken into consideration while developing web application. Code needs to be designed in such a way that it should work through complete lifecycle of application (be it five years or ten years; and typical web application usually have very long lifecycle) without much rework. Technology consideration should also be kept in mind. Along the lifecycle, new technology stacks often arise on the surface. For example, when Facebook had started in 2003-05, there was no HTML5 or mobile content consumption as such but today, Facebook needs to accommodate these new technologies or they will have to suffer the consequence of Darwinian survival of the fittest theory.
So next time before you kick start any project, go to level zero and ask yourself what you really need viz. website or web app. If you get it right, then you are less likely to make mistakes while selecting a framework or appropriate team.