One benefit of Google, Netflix, and other companies that build businesses on the web is that the innovations these businesses spawn can benefit everybody. Amazon is a great example; the company turned its infrastructure expertise into Amazon Web Services (AWS), which now powers much of the web.
Netflix utilizes AWS for services and content delivery and has refined the technology to better fit its customer base. Netflix is sharing this refinement with the world.
Make AWS more reliable
Netflix's Open Source Software (NetflixOSS) is aimed at making the services provided by AWS more reliable; the company's efforts have involved everything from infrastructure to caching to building and deploying. Netflix has not reached the point where outages do not occur (is that possible?) as we saw in December 2013.
While Netflix has embraced the open source concept (believing that the collaboration and transparency will result in the best solutions), all of the code and solutions being shared focus on computing — the company is not sharing any of its innovations and technology around streaming video. Here is a sampling of some of the more prominent NetflixOSS projects.
- STAASH (STorage As A Service over Http): This provides a language-agnostic interface for storing data. It hides the backend data storage specifics and allows the developer to focus on the data and not the backend. It provides access to the Astyanax project (another open source offering) for non-Java developers. Ultimately, on the backend is the popular Apache Cassandra database, which is heavily used by Netflix. This concept as storage as a service is intriguing, as you could build an application that utilizes cloud backend storage without any worries about how the data is organized/stored — just make calls over HTTP.
- Eureka: This REST-based service with Java client provides load balancing and failover for middle-tier servers; this is necessary due to the fluid nature of AWS where servers can come and go, thus IP addresses are not always known. Eureka fills this gap by assisting with registering and de-registering servers in the load balancer as necessary. Now, you may think of Amazon's Elastic Load Balancing as an option, but it is only used for those services with end points (exposed to the world).
- Chaos Monkey: The GitHub project is called SimianArmy, but it goes by the name Chaos Monkey. The goal of this tool is to avoid outages by forcibly causing and addressing failures and in the long run designing applications that can withstand such failures. The hope is these small failures addressed by Netflix engineers will negate larger failures or issues in the future. Netflix runs it constantly — randomly terminating server instances and services — to keep its environment battle tested and ready for anything. Netflix's motto is the best way to avoid failure is to fail constantly — I wish my high school geometry teacher had the same approach.
- Asgard: This provides a web interface for application deployment and cloud management in AWS. It provides a set of tools to build and deploy solutions to the Amazon cloud. It is the place for developers to go and control the clouds.
- Ice: This project provides a high-level view of AWS usage and thus how much it is costing you. The elastic nature of the cloud (i.e., resources can be added/deleted as necessary or requested) means it can get out of control as far as costs, so Ice provides a way to get a closer look at what is being used by whom and where. It can be helpful for large and small organizations.
- EVCache: A distributed in-memory caching solution that can be used to increase response time with data served from cache rather than a database. It utilizes one or more EC2 instances.
Visit the NetflixOSS site to take a closer look at all of the Netflix open source projects. Most of the offerings from Netflix are infrastructure-focused, but the STAASH offering is interesting to developers and other IT professionals. While it is still in development, I look forward to taking STAASH for a spin. There is a Python example available online (this is Amazon, so there's a lot of Python and Java). There will be tools necessary to work with the data.
A cloud misconception
Netflix's cloud usage and large IT staff goes against the fears of many IT professionals who think cloud computing will put them out of work. Netflix employs IT personnel for platform infrastructure, database engineering, engineering tools, application development, and so forth. While skillsets may need to be adjusted, an organization utilizing cloud services for infrastructure will still need professionals to properly and efficiently utilize those services.
Don't reinvent the wheel
Netflix is often called the biggest cloud application, and it's hard to argue the point since the company is the world's largest internet television network. Netflix has obliterated all obstacles to effectively and successively use cloud services via AWS with a few hiccups along the way, so the company has a lot to offer the rest of the community trying to do the same. This extensive set of open source projects provides an interesting look at how Netflix operates as well as how to meet the demands of your organization.
Where are you in terms of cloud computing — do you have anything hosted or running on cloud-based services/infrastructure? Do you have any plans to deploy anything to a cloud provider? Let us know in the discussion.
- The biggest cloud app of all: Netflix (ZDNet, a sister site of TechRepublic)
- Open source developers must examine the past to invent the future (TechRepublic)
Tony Patton has worn many hats over his 15+ years in the IT industry while witnessing many technologies come and go. He currently focuses on .NET and Web Development while trying to grasp the many facets of supporting such technologies in a production environment on a daily basis.