The future of software points to cloud computing. According to Wikipedia, cloud computing is “a style of computing where IT-related capabilities are provided as a service using Internet technologies to multiple external customers. It allows users to access technology-enabled services without knowledge of, expertise with or control over the technology infrastructure that supports them.” Software-as-a-service (SaaS) is an example of cloud computing. One poster child for SaaS is Salesforce.com which allows companies to access CRM functionality via a standard web browser without having to buy hardware and software or hire staff to administer it.
What really excites me about cloud computing is the advancements of infrastructure as a utility in the cloud. Often called Platform-as-a-Service (PaaS), it has huge social and economic consequences as the technology matures. The attraction to PaaS is essentially the outsourcing of IT infrastructure and systems administration to a third party. If you think about IT today, thousands of companies are hosting hardware and software and paying staff members to install, administer, and maintain their accounting, payroll, CRM and human resource applications. All of these systems are a necessity but none of them give a company a competitive advantage. In addition, each system has its own set of servers which typically are heavily under utilized in terms of disk space, CPU cycles, and memory allocation. Just think, these thousands of companies could run these applications as virtual machines on a shared environment at a third party’s data center.
There are many vendors in this space. The most popular are Salesforce.com (Force.com), Amazon (EC2), and Google (Apps Engine).
PaaS still has a long way to go before it matures to the point where customers feel that the main issues (performance, reliability, security and privacy) are resolved. But it is coming and the economic benefits and competitive pressures will mandate it.
So what does this have to do with SOA? The fundamentals of cloud computing are a natural extension of SOA. Technology agnostic, service-oriented and location-independence are characteristics of SOA and cloud computing. Companies who have an architecture with these characteristics are more agile and can make the transition from on-premise to the cloud much more cost-effectively. In fact, companies that do not have an service-oriented architecture may never be able to afford the risk of business disruptions, high costs and quality issues that may arise trying to uproot a tightly coupled system and move it to the cloud.
To back up my theory I reached out to a few experts. First, I asked Ron Schmelzer of Zapthink if he thought companies with successful SOA implementations were better equipped for a future of cloud computing. He pointed me to an article he wrote back in 2004, Outsourcing, SOA, and the Industrialization of IT. In this visionary article, Ron discussed the trend for business process outsourcing (not to be confused with offshoring) and how SOA was a key enabler for making the transition easier. The article states “It’s becoming clear that the economic value that companies seek from outsourcing closely matches, and reinforces, the economic benefits they see from implementing SOA.” Today we can add cloud computing to Ron’s sentence because SaaS and PaaS is just a another form of outsourcing. The article continues:
“…services must have implementation, location, and presentation-independent definitions.”
“…a well-designed SOA assumes nothing about where or how the Services are implemented — they might as well be outsourced.”
“…if companies can define abstracted Service interfaces, the details of who implements those Services and where those Services reside are basically irrelevant.”
“…SOA not only makes outsourcing simpler, but it in fact motivates companies to consider outsourcing as a viable alternative when it might not have even been possible in the past.”
Ron mentioned that it is difficult to outsource things that are tied to the organization. It may actually cost more to outsource these due to the costs and complexity of breaking the connections between processes, systems and infrastructure. The big takeaway from the conversation was his statement, “The more you do SOA the easier it is to push things outside the company.”
I also reached out to David Chou, an architect at Microsoft to see what the software giant is thinking about all of this. David calls cloud computing the “next evolution of SOA.” Microsoft sees that the future of software is in subscription services in the cloud and the days of buying software and installing it on desktops and on premise servers are quickly fading away. That is why Microsoft is moving many of their server products to the cloud and investing in data centers to support what David calls “Utility Computing.” Microsoft is betting heavily on the cloud which is evident with their shift toward subscription services on their Sharepoint, Exchange, Windows Live and Biztalk products.
In Nicholas Carr’s new book, The Big Switch, he writes extensively about how information technology is following the same path of becoming a commodity resource that electricity did decades ago. He sees a future where everything runs in the cloud and is broken down into smaller parts. For example, yesterday’s newspaper is now distributed as individual pieces of information on the Web and the consumers of the information may not even be aware of the source that provided it. The evolution of the newspaper industry closely matches how software has evolved. Companies that recognize this and embrace flexible architectures like SOA will be able to change to meet the new consumer expectations. Companies without a flexible architecture will become outdated and irrelevant.