Not long after we collectively learned to appreciate what cloud computing actually meant (servers in a datacentre pumping out service-based computing power over an Internet connection, remember?), we started to ask how to get our applications 'up' to the cloud and how to exchange data with cloud-based resources.
Just as soon as we had started to understand the basics of cloud migration and data 'upload' to cloud datacentre services, the more inquisitive of us started to ask how cloud software might actually be different.
On Earth, as it is in cloud
Are cloud applications exactly the same as 'terrestrial' applications? Do cloud software application developers actually program inside clouds? Do cloud-native applications work back down here on Earth? What if I want my old apps in the cloud? Do I have to rebuild them all from scratch?
Without attempting to condense a cloud programming manual into one mouthful, let's try to answer the basic fundamental questions here and look at how cloud software is different.
How cloud software changes
The first and most fundamental difference with cloud computing is location - a proportion of the application and its data storage quotient do not reside on the user's device. Great, that's simple enough.
This is good news for two reasons. Firstly, we can access the full set of functionality any time we log in from different devices across different form factors. Secondly, we have a potentially unlimited backend in terms of expansion capacity. Scalability and flexibility are, after all, why we do cloud in the first place.
But locating applications in the cloud could also be a drawback , or at least less than ideal in some scenarios. For instance, as we need to upload/download data to and from the cloud, transaction-intensive apps are not best suited. Similarly, depending on the strength of network security, the transport of data can open up security vulnerabilities.
Memory is also different in cloud. Of course it is - we now have to rely on memory access that resides away from our device. Yes okay, some data will be stored locally, but many elements will reside in the datacentre. In this case, the application itself is built differently, causing changes to memory allocation, geography and architecture.
This kind of answers our question: can we just 'host up' (or indeed, throw up) our previous terrestrial (we usually say on premises now) applications into cloud-based environments? Not really. Well, we can, but if we do then we can almost certainly expect some incompatibilities to surface.
At a higher level we also see different controls for data preparation, migration and integration and different methods for advanced data exploration and modeling.
Has cloud changed software forever?
So has cloud changed the shape, design, architectural construction, delivery methodology and wider function of software forever? The answer is: for now it's a yes... and it may also be yes for the longer term.
The always-connected, always-on nature of cloud computing applications means that we can start to apply practices like Continuous Delivery and Continuous Integration into our now much more Agile and open platform approach to software. There's some extra legwork to be done in the short to medium term, but the long-term future looks bright.