We've got to maintain a certain level of 'street-cred'.

Evolution of Software Architecture and Cloud Computing

“Architecture” and “cloud.” Words that don’t intuitively go together (look at the skyline of your city and compare the buildings to the clouds). Cloud computing certainly does have an architecture, however.

Rather than being the traditional architecture of self-contained systems – for instance, a class that manages a thread-pool to sort many objects in parallel or an operating system kernel that interacts with a desktop environment  - with cloud are talking about systems of systems. With cloud services, tasks are spread among many devices to achieve computing goals and the design that enables this should make the process as opaque to developers as possible.

Software architecture has largely been built around the prevalence of object-orientation – the paradigm that made Java a household name and made C++ ubiquitous in large organizations. The evolution of these languages was based on the needs of businesses as much as the desires of programmers; it is more convenient for projects to “grow” their code through inheritance and classes.

The “gang of four” design patterns, which have been applied with varying levels of success in industry, have become somewhat associated with the idea of a “software architect.” Of course, an architect traditionally has had to understand inter-process communication, networking, and other fundamentals of computer systems, but a sound object-oriented understanding has been implied.

However, cloud computing, as we have mentioned above, is radically different. It does not emphasize organizations branching out a proprietary base of code class by class but rather requires remote systems and services to work together in dependable and scalable ways. This is perhaps why there is a proliferation of new programming languages, such as Google’s Dart. Though obviously object-oriented languages and other web languages like JavaScript and PHP are still in heavy use (even with cloud applications), these languages are notoriously not well suited to handle parallelism, especially on the scale that cloud computing and the modern web demand.

How are the ideas of software architecture transforming with cloud computing itself? We are still in the process of finding out. Follow us to stay updated on the future of software design and what your architects need to know in order to maintain that title.