In 2003, Methods & Tools published the article “ASP Tools for Software Development“, where ASP did not stand for Microsoft’s Active Server Pages, but for Application Service Providers. This was the “acronym of the day” for companies that were offering hosted software tools. Most of the companies mentioned in this article are still active today, but there is a new marketing label attached to their activity. The media prefer to speak about SaaS (Software as a Service) or give to this phenomenon the nickname “The Cloud”. Beyond the various names, there are some differences between the type of control you have on these external applications. SaaS is defined as a simple license for a specific hosted external application. The Cloud technological ambition is to have applications running on external virtual infrastructure while you keep the control about software and data. Other terms like “the grid” or “on-demand” are also associated to the idea of using software tools as a service instead of buying a product to achieve the same objectives.
Even if the concept remains to have software tools located outside your network, the market of hosted software development is evolving towards a broader range of tools offering. The historical market is still focused on project management or bug tracking functions, but the proposed services are now extended to all software development aspects. Amongst of the most recent initiatives for software development tools are the Amazon SimpleDB. It provides a simple web services interface to create and store multiple data sets. We are also transitioning from user-based fee model (x $/month by user) towards usage fees (x $ by gigabytes used). For its SimpleDB product, Amazon will bill you according to machine utilization, data transfer and data storage. The license and maintenance price of the owning a database software has disappeared, replaced by operating fees that varies according to your needs.
If the form of the software service changes, the issues faced when choosing a supplier remain the same. The first issue is reliability. It will be interesting to know how web sites and internal applications availability compare, but internet suppliers have learned to improve continuity of services with redundant and distributed points of production. Reliability can have a relative importance according to the function you are using. You can delay filling a project report from some hours, but not being able to access your customer database for one hour may cost your company a lot of money. The trust that you place on your supplier is important. In the Cloud market, some giants like Amazon or Google are stepping in the early moments of the technology to compete with a lot of start-ups. They should have a better position to attract larger companies thinking about making large investments in this technology. The notion of control and responsibilities is also important and could be considered from different viewpoints. Depending on your competencies, the problems you are facing and the quality of you supplier, you could be happy that they will deal with backups and performance…. or not. The capacity to evolve of the provided service and how you are able to influence it is also an aspect that you should consider, knowing also that in this area speed of change could have a impact on reliability.
How will this change the life of software developers? I think that the main impact of service-based software development will be on architecture. Modularization has been here for a long time, but there is still a large tendency for coders to mix every aspects of the application (interface, logic, data access) in the same program. Having to deal with exterior services should put more pressure on a better separation of functionalities. This will also change the way you consider deployment. Instead of having to deal with internal operation guys, you will talk to a guy from Amazon or Google. Will he be nicer? I don’t know, but sometimes I know it will not be very difficult, as for some infrastructure people it seems that the operating system should be the only software that they want to run on their hardware ;o) The “virtuality” of Cloud computing bring the promise to solve all scalability and performance problems. I admit being skeptic about this claim. There have always been performance problems when developing applications. Even with the best infrastructure, you cannot prevent developers from making bad performance choices. Will we have the tools to monitor the Cloud? One positive aspect is that people developing for the Cloud should be able to have the same testing environment than the production environment. Many of us have suffered the fact that setting a testing environment seems to be difficult for the infrastructure guys. Testing in a slightly different software infrastructure could often create bad surprises when the application is transferred in the real production environment. This could also change the way we adopt software. Will enterprise that supply Cloud services offer free accounts where you can try their services as you can try software on your PC? Finally, the Cloud approach will increase the shift towards the user for the responsibility of estimating the budget for running applications. All operating costs could now be more clearly defined and related directly towards user activity and application scope.
Most suppliers promise that the Cloud solutions work with current technologies and require only small adaptations to run on their infrastructure versus internal servers. This mean that changes in the programming part could be minimal. This new technology should however favor the launch of Web start-ups that need scalable infrastructure and variable costs for their new applications. Thus the main change for software developers could be the availability of more interesting jobs.