Saturday, September 17, 2011

The Web Server is Dead

Are you sitting down? I thought you should hear this from a friend. Well, there’s no easy way to say this but… the web server is dead. Yes, dead.


You don’t believe me? That’s fine—denial is the first step in the grief process. Come on, you say, there are over 250 million web sites out there and they are being served up by something. True enough. Web servers matter very much, as a part of infrastructure. But your application web server, that dedicated back end hosting your web application, that’s an endangered species. Web software is losing its affinity to specific web servers. To put it bluntly: your web application and your dedicated web server are getting a divorce. Now you seem to be getting angry—good, that’s the second step in the grief process so we’re making progress already. I think you’ll see over time that this is all for the best. These things happen for a reason. Allow me to explain further.

THE WAY WE WERE

Your application software and your web server once had what seemed like a perfect relationship. The web server was a good host for your web software, and in turn your web software gave the web server purpose. This arrangement had a lot going for it: your web software had a definite home, a place to live with a well-known address. It was good. It felt so right. It made sense.

The Way We Were: One Kind of Client, One Back End


THE WAY WE ARE

But today’s web has different demands. The combined effects of devices, HTML5, social media, virtualization, and cloud computing are transforming the characteristics and design of web applications so much, they’d barely be recognizable to our former selves of 5, 10, or 15 years ago. Let’s consider four aspects of these changes that are contributing to the demise of your web server: extreme distribution, separation of concerns, elastic infrastructure, and global scale. A good term that captures these trends is connected devices, continuous services.

The Way We Are: Connected Devices, Continuous Services


Extremely Distributed Applications. Web applications are becoming extremely distributed. On the front end, their reach is extending to support not just browsers on PCs but various devices such as phones and tablets. On the back end, multiple services and data stores are needed, often involving third-party providers. Housing all of this in one place is no longer viable, realistic, or even desirable. Moreover, web clients are more capable and assertive these days, and are able to consume services directly rather than having to go through the “home web server”. As a larger part of our web applications move over to the web client side, more of our workflow and logic moves with it.

Separation of Concerns. Many functions traditionally considered the domain of the web server are being separated out as independent services, often provided by other parties. To use security as an example, identity has traditionally been handled by the application code in partnership with the web server. A more modern approach to identity makes use of identity services from one or more identity providers. Another example of pressure to separate into multiple services is the increasingly popular CQRS pattern, which might compel you to implement reading and writing separately and deploy those services at different levels of scale.

Elastic Infrastructure. Virtualization was the first big step in destroying application-server affinity. With our servers becoming VM farms, we can easily relocate them to any available hardware. With continued advances in virtualization, some extremely sophisticated “private cloud” capabilities are developing. For example, the upcoming Windows Server 8 will allow you to pool your compute, data, and network resources and virtualize them in preferred allocations for multiple tenants. It can even relocate VMs while they are running. That’s a prime example of servers still being very necessary, but acting in the role of infrastructure rather than being strongly associated with a specific application.

Cloud computing takes elasticity even further. In the public cloud, once you have uploaded an application package or VM image, you can instantiate or remove server VMs on a moment’s notice. For example, on the Windows Azure platform you can request N compute instances and typically the VMs will be allocated, provisioned, and ready for use within 15-20 minutes. The cloud operating system, called The Fabric in Windows Azure, ensures you have the requested amount of resources but the individual VM instances and the machines hosting them can change over time.

Virtualization advances and the elasticity of cloud computing are too big to ignore. Those physical application servers that have become virtual servers are now able to float over a fabric of shared infrastructure. Applications are no longer tethered to specific machines and neither are VMs.

Global Scale

It used to be that global scale and worldwide presence of web sites was only the concern of the large, multi-national corporations. Today, everyone wants their web applications to run anywhere and everywhere. Thanks to developments like cloud computing and content delivery networks this is not only feasible but affordable. To bring content such as images and video closer to consumers, we can use content delivery networks which utilize a worldwide infrastructure of edge cache servers. To bring our applications and data closer to our users, we can deploy to multiple cloud data centers around the world. To use Windows Azure as an example, there are multiple data centers in North America, Europe, and Asia you can deploy to. The platform also has a Traffic Manager Service which can route user traffic to the most appropriate data center based on locale or other criteria.

Maybe You Don’t Want This World?

Perhaps all of this sings to you, as it is does to most of us in the tech world. Then again, you might be saying to yourself, “That’s not for me; I’m very happy with the way I’ve been doing things and don’t want to change.” Well, okay, let’s work through the bargaining, depression, and acceptance stages.

You can’t fight the fact that the web is changing nor is it something you can afford to ignore. The influence of HTML5, smartphones, tablets, virtualization, cloud computing, and social networking are each huge in their own right, and the combined effect on the web is truly transformational. The web is changing our lifestyles, and that includes the people who use your web site, whether they be customers, employees, or the public. If you want to stay relevant to your web users, you must change with them.

Conclusion

Web servers are more important than ever, but the way we use them has shifted unmistakably, so much so that we must pronounce the traditional web server dead. The extreme distribution of our applications and growing separation of concerns means a plethora of services has replaced the monolithic web server. The move to elastic infrastructure and global presence means we don’t have to be concerned about which servers we’re running on or even where they are located.

There, I told you it would all work out for the best. We salute you, Web Server, but it’s all about connected devices and continuous services going forward.

No comments: