In recent years the web has evolved from being strictly a method for publishing hyperlinked documents to a full blown platform for implementing general purpose applications. This fundamentally changes both the character of the web and the process of developing software, especially so-called web apps. The old development processes still apply to the languages and platforms that they have always been used for but they no longer define the scope of the discipline. In fact, they have become representative of an ever smaller subset of the new applications being developed. In general, this is good. It does have the potential for unexpected consequences though.
First, let’s explore the benefits of the new paradigm. As a result of web based delivery combined with strong web standards, it is no longer much of an issue which platform, that is to say which web browser, is used to run the app. Furthermore, because of the loosely coupled architecture of the web, individual components can often be updated without having to make an entirely new release of the whole application. This has lead to a practice called Continuous Integration (CI) and Continuous Delivery (CD). Since the application is fetched anew each time it is run, the user is always running the most recent, most bug free version of the software.
Another advantage of the online nature of the software is that developers can and often do collaborate on application from different locations all over the globe. The application itself may also be distributed with different aspects of the application residing on different hosts, for example the database may live on one host, the media may stream from another, while the various views or pages may be served from another. There is also the ability to host these components of the application on regional servers that are selected depending on the location of the user requesting them in order to further enhance the performance of the application.
These are far from the only benefits of this new approach but they are some of the important ones. There are however some potential drawbacks to this approach. The most glaringly obvious one is the difficulties introduced in charging for the software. Many different models are in use and the best choice depends upon what the software does and how the customer budgets for it.
One popular approach is to sell a time based subscription to the software. This is popular for service oriented applications. Another delivery approach is to produce a desktop wrapper for the application and having the user download it like a more conventional application. The wrapper is essentially a customized browser that loads the pages of the application from the local file system. This approach is popular if the application processes data that the customer doesn’t want exposed to potential theft on the network.
Another general issue of concern is that of ensuring compliance with trade regulations like EAR and ITAR. There are approaches for addressing these concerns but the international nature of the internet does pose some challenges in that regard. In spite of these challenges, companies will continue to migrate to these new, distributed delivery models because they are superior to the old distribution models.
The point I’m driving at here is that software development is evolving and companies that have their heads down, continuing to build software with old, pre-internet methodologies are going to find themselves left in the dust by their competition. And developers that don’t learn these new techniques are going to find themselves doing something other than developing software.
NOTE: It goes without saying that the opinions in this blog are my personal opinions. They do not represent the opinions of my employer or any of my employer’s customers. They don’t pay me to have opinions so I do that on my own nickel.
Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.