For about 2-3 years now, I have been talking internally in my group and to other people in Microsoft on Edge Computing vs. Cloud Computing. This thing came up all over again in a discussion and I thought it would be handy to summarize my thoughts in writing somewhere.
The way I use the terms Cloud and Edge are not common to the industry (are there common industry definitions on this at all?), so let’s just put this down first:
1) Cloud Computing is computing that happens in distributed, geo-plexed infrastructures on the Internet. Amazon Web Services and Google App Engine are examples of general purpose Cloud infrastructures. You can call it off-premise computing as well. The idea is that instead of creating your own facility, or putting your server with a hoster, you put your data / apps in a Cloud. This cloud is assumed to have 100% availability, and infinite scalability. This is typically achieved in two ways:
a) Virtual machine hosting service – The advantage is that you can bring in any existing workload, virtualize it and host it. No changes required to your app architecture. For example Amazon EC2 provides Xen virtualization. However, this is not very elastic in the sense that the computing power is handed out in discrete units of virtual private servers and there is no continuous scaling. The underlying fabric may have infinite continuous scaling but the way it is handed out is discretized.
b) Abstracted Infra for Prescriptive Services – This approach is where the Cloud vendor offers specific services for data storage, communication, app execution, etc. For example Google AppEngine provides data storage, user management and an app execution environment based on Python. Similarly, Amazon provides a storage service (S3), a message queue (SQS) and a structured storage service (SimpleDB). Microsoft has also announced a couple of services: BizTalk Services for hosted message oriented communications and SQL Server Data Services which aims to provide SQL Server functionality in the Cloud. IBM announced Blue Cloud in Nov, but haven’t released much info on it since then. The key thing here is that these services themselves are infinitely scalable, and this means that apps built to these services are also elastically scalable. Of course billing may happen in price bands based on consumption, but the app itself is not boxed.
2) Edge Computing is computing that happens outside the Cloud. This could be on a hand-held device, on a PC, on a server in a data-center. For the server scenario, this could be hosted on premise, or this could be in a hoster’s datacenter. The key thing is that this is not distributed, geo-plexed, on-demand scaling in the Cloud. The computing is contained in isolated boxes that may / may not talk to each other.
Now the hosting scenario is a bit of an overlap – when does an app hosted with a hoster stop being Edge and become Cloud? To me the key difference is distribution because it is distribution that provides 100% availability and scalability. If you place your server with a hoster, if that hoster’s datacenter goes down, your server is down. This is Edge. If you place your app / data with a hoster that has got a distributed infrastructure, is able to move load from datacenter to datacenter based on traffic conditions and lets you take unlimited load – it is Cloud.
Now with that out of the way, let’s get down to examining the trends and see which model is likely to succeed.
A Lesson in Computing History
If you go back a few decades in time, computing was primarily driven by governments, and specifically defense establishments or research agencies. Then something happened in 1946 – scientists working for a US government agency came up with the first general purpose computer – the ENIAC. The impact of this development was that computing moved from being solely owned by a few governments in the world, to becoming affordable to businesses. And even then, only some of the richest businesses – the largest banks or manufacturing companies – could afford to buy computing power. Over a period of time, computing got cheaper and more and more businesses were able to use the power of the computer. For the next two decades, well into the 1970s, all computing was business computing or special-purpose government / scientific computing
The second revolution in computing came when Kilby and Noyce independently came up with the Integrated Circuit, which was used by Ted Hoff and Federico Faggin at Intel to develop the Microprocessor. A couple of smart people – Steve Wozniac, Bill Gates, Paul Allen – figured that this meant that computing power cost was to drop in a non-linear way, and would become affordable to consumers. This eventually led to the PC.
The first personal computer – the Altair 8800 - when it came out in 1975, was targeted at the uber-geek of the day – the computer enthusiast! This would probably not have become a mainstay had it not been for a program called the VisiCalc spreadsheet. VisiCalc was the predecessor to the Lotus Spreadsheet which in turn preceded Microsoft Excel. VisiCalc was what propelled the PC into business computing. Businesses started buying PCs so that their finance people could run VisiCalc. This mass purchasing in turn brought down prices which in turn led to more consumption, both on the business computing and the personal computing front, which spurred more innovation and more price falls. A virtuous cycle got started, and for the first time we saw the growth of a segment called personal computing.
However, personal computing would perhaps have remained small had it not been for a phenomenon which caught almost everybody unawares – the World Wide Web. When Berners Lee invented the hyper-text at CERN in 1990 to solve the problem of navigating thru complex documentation, no one realized that it would enable hyper linking on a global scale, making everyone with a connection to the Internet a publisher with a planet-wide audience.
To summarize, the 1950s saw computing move from the domain of a few governments to becoming available to businesses – business computing was born. The 70s saw the birth of personal computing. The 90s saw the WWW which led to huge growth in personal computing as well as business computing. Every 20 years, the industry witnesses a revolution of sorts. It is almost 20 years since the last one. What’s next?
One of the truest trends in the industry has been Moore’s Law – it has held true for the last 40 years – computing power is still doubling every 18 months or so. Differently put, computing power prices are still dropping non-linearly after four decades. Incidentally price of storage has also been falling non-linearly. The only major component which does not obey this law is bandwidth where price falls seem to be linear. I have outlined the hardware trends in a couple of earlier posts as well, you may want to go thru them for more context.
Second, the mobile phone has put enormous computing power in the hands of everyone. The cellphone that I carry runs a Windows operating system on a 32-bit chip and has more storage and computing power t
n was available on a full-fledged desktop PC a decade ago. And these phones are getting more powerful faster than the PCs – the only constrain is battery power. With the converged device getting cheaper and more strongly subsidized, and the telcos tearing down their wall gardens, you can bet that the mobile phone would be key to pushing the computing power in the hands of the masses. Someone called the Mobile Phone the PC of India. I couldn’t agree more.
What does all this mean? If you think about the buying capacity pyramid, the governments form the tip, large businesses form the top, small & medium enterprises form the bottom and consumers form the base. The history of computing has been one of transfer of growth from top towards bottom. Moore’s law ensures that. What it means is that over the next decade, the big growth in IT would happen towards the lower half of the pyramid. Personal computing would drive the next generation of growth in computing. This is also evident from the data on shipment and growth rate for PCs, Servers and Mobile devices:
- Servers: 8.8 million server shipments in 2007, growing at 7% (https://www.gartner.com/it/page.jsp?id=608710)
- PCs: 255.7 million PC shipments in 2007, growing at 10.5%. (http://gartner.com/it/page.jsp?id=502458)
- Mobile Devices: 32.2 million Smartphones in Q1 2008, growing at 29% (https://www.gartner.com/it/page.jsp?id=688116)
Now a significant chunk of the 8.8 M servers is being used to power up the cloud. (Microsoft alone adds around 10k servers / month), but as you can see, the much bigger growth in computing power is coming from the Edge – the PCs, the mobile devices and a significant number of those Servers are getting deployed on the Edge. Also the growth rate is faster on the Edge. So try and visualize this:
- For several years before the advent of the Internet, businesses had been investing in computing power on the Edge – so there is a much bigger base of data and computing power on the Edge
- Far more computing power gets added to the Edge year on year as compared to what goes on the Cloud. Also, the rate at which this power is added is much higher for the Edge than the Cloud.
So what this means is this: The amount of data and computing power in the Cloud are much smaller than on the Edge, and are also growing at a much slower pace than the Edge. I could not find enough data to quantify this, but I hope you are getting the picture – the Edge is much bigger than the Cloud, and is growing at a faster pace, and given the cost trends, this is likely to continue as more and more consumers are able to afford computing.
Distributed Computing Economics:
Jim Gray’s famous paper on distributed computing economics makes the argument that if we look at computing tasks in terms of their costs apportioned across CPU, Network, Data Access and Data Storage, most computing tasks require that the computation happen close to the data based on the fact that the cost of computing has been falling way faster than cost of network.
Moving computation to a remote CPU requires that the cost saved by moving computation be > cost of moving data to the remote facility. This typically works for a compute intensive, stateless task which has minimal data access /storage during computation, and a small input / output. Such a task is highly mobile – an example would be to calculate no. of primes in a range.
However most computing tasks are data bound – they have a large input and output, and are data intensive during computation. Such tasks are immobile. Most business computing falls under this category, as does most of Internet computing – HTML, Email and FTP, since all of this requires data.
The Swing of the Pendulum
The takeaway so far is:
1) There is more data and computation available on the Edge than in the Cloud and this trend is likely to continue.
2) Computation should happen close to data
What this means is that a lot more computing would happen on the Edge than on the Cloud. In a sense, computing would flow from the Cloud to the Edge – it is cheaper to compute locally than pay for the round trip to a service in the sky. It just does not make economic sense to let that computing capacity on the Edge go waste, and instead take data from the Edge to the Cloud to compute it there.
Ray Ozzie – Microsoft’s Chief Software Architect – often talks about this thing he calls the “Swing of the Pendulum.” The trend is this – there is a movement in IT from centralization to decentralization and back. 1950s saw the giant mainframes – as centralized as it could get. The decentralization came in 1970s with the PCs. The web then drove centralization once again in 90s with key applications like email and search becoming centralized. Today, you hear about centralization in the form of Web 2.0 in the consumer space, in the form of Service Oriented Architectures (SOA) in Enterprise IT, and Software as a Service (SaaS) for the SME. If the argument above is valid, the Pendulum is going to swing once more toward decentralization. Driven by economic forces, a lot more computing would happen on the Edge than on the Cloud.
The Best of Both Worlds?
To proponents of centralized computing – Web 2.0 / SaaS – the conclusion above may come as a bit of a surprise. But there are arguments on the centralization aspect as well. The biggest argument in the favor of centralization is Utilization Efficiency. A lot of cheap hardware at the end of the day is still costly. And the power that computing is consuming is increasing day by day. (I would actually love to see a graph which plots % consumption of energy worldwide by workload. I think computing would be second only to transport in the aggregate). So efficiency in hardware and power utilization are going to be key concerns going forward. It is well known that Cloud computing offers much better Utilization Efficiency as compared to Edge computing. This would be a key driving factor in the favor of Cloud Computing. The other trend that would favor Cloud computing is a change of business model in getting computing subsidized by advertising. Remember from an earlier point in the discussion that the big growth in computing would come from Consumer Computing. And this is where advertising plays a big role.
Microsoft calls hybrid apps like these "Software + Services" applications. Terminology apart, you can bet that the dominant application architecture going forward would combine Cloud Computing with Edge Computing. What exact shape would this take? I discussed some
of the lower level issues in my previous post: Learning to Program all Over Again. However, it is a much bigger discussion and I would try and cover some of my thinking on this in a few posts going forward.