Computer systems architecture evolve in cycles every 15-20 years, oscillating between centralization and decentralization: centralized mainframes of the 60s, decentralized PCs of the 80s, centralized web apps of the 90s. Since 2010, we see a new architecture shift back to the 80's client-server model, with 3 trends: powerful mobile device (android, iphone), the browser becoming a rich client platform with html5, and cloud platforms commoditizing distributed computing on the server. This talk is about the server side of the current architecture shift.
As most technology architecture changes, cloud computing adoption is driven by factors from multiple dimensions, not only technical ones:
- technology: Big Data & fast networks, shift from vertical to horizontal scalability, commoditization of distributed computing (Virtualization, Sharding, Storage, NoSQL databases, Paxos, Map/Reduce, Go language), centralization of security
- economy: broadband and wireless ubiquity, shift from product to services, economies of scale, Moore's law, cost of electricity becoming main driver for computing cost , pay as you go models
- culture: consumerization of enterprise technology, technology achieves ubiquity by disappearing
20 years ago when I was involved with Command and Control Systems for the french DoD, they were called C3I. Since then it seems they added a C for Computers, C4I. Maybe for the next 20 years the 4th C of C4I should stand for Cloud.