Second, companies are starting to look more and more like Netflix in terms of offering online services as a core part of their business. Think of GM and its OnStar service. If you've taken a Virgin America flight and seen the future of in-cabin entertainment, do you think it's not collecting and analyzing that data to tune its offerings to individual customers? What Netflix is doing, company after company is doing as well. So, for at least a portion of their applications, most companies are starting to resemble Netflix. And one thing is for sure -- managing the new type of applications with the practices and processes associated with existing applications is a recipe for disaster.
Pulling the Plug on the Data Center
As to why Netflix decided to get out of the data center business? Short answer, there are two reasons.
Netflix's business is growing rapidly and experiences very uneven demand (highly skewed toward evenings, when, by some accounts, its video streaming service represents 29% of all Internet traffic). In this kind of environment, Netflix didn't want to experience service interruptions due to its inability to build data centers fast enough.
Even though Netflix is a highly technical organization, it wasn't as good as Amazon when it came to automating data-center operations. Rather than try to replicate that ability, Netflix chose to leverage a highly efficient, low-cost expert provider.
What's interesting is how Netflix goes about creating and running its environment.
Like a lot of online companies, it has blurred the concept of "release to production." In fact, as I interpret Cockcroft's presentation, it has blurred the concept of release. Rather than a release being a static collection of bits that are moved from one lifecycle stage to another, an application is composed of many, many fine-grained services. Each release may be thought of as a collection of services at a given point in time.
This implies that each service must deliver high availability and be failure-resistant. In some sense, the Netflix architecture represents the apotheosis of SOA, with all the associated "abilities" that such an architecture carries -- reliability, manageability, etc. For example, given that underlying infrastructure is fragile, the services are implemented with redundancy, failover and automatic restart.