The Traditional Application Development Model is Broken
Building and running on-premise applications has always been complex, expensive, and slow. Each application required hardware, an operating system, a database, middleware, Web servers, and other software. Once the stack was assembled, a team of developers had to navigate frameworks like J2EE and .NET. A team of network, database, and system management experts was needed to keep everything up and running. Inevitably, a business requirement would require a change to the application, which would then kick off another lengthy development, test, and redeployment cycle.
Additionally, large companies often needed specialized facilities to house their data centers and a team to maintain them. Enormous amounts of electricity also were needed to power the servers as well as the systems to keep them cool. Finally, a failover site was needed to mirror the data center so information could be replicated in case of a disaster.
Applications built with this complexity and infrastructure are difficult to scale for usage spike demands, brittle to update as the business needs change, and are difficult to make mobile and social.