Netflix serves over 140 million hours of content per day, globally around the world.
Building a system to be able to scale to that many customers, while delivering high definition video, with no lag, requires significant engineering effort. Today we will deep dive into Netflix’s technology stack and cloud infrastructure to examine exactly what tools, processes and architecture they use to deliver their high-quality content streaming services.
Understanding Netflix’s tech stack can help OTT and other digital-video providers get a view into the backend required to support these types of services; or you can just use Zype, and let them handle online video delivery for you.
The History of Netflix’s Digital Architecture
First, a lesson in the history of Netflix to set some context. Before the era of “Netflix and chill”, the company physically delivered mail-order DVD’s to your doorstep.
Netflix racked and stacked physical servers in on-premise data centers that they owned. These data centers housed databases and applications Netflix used to track customers, maintain inventory and customer billing.
By the time broadband became commonplace, and everyone owned a smartphone, Netflix needed a way to deliver videos to computers, internet connected tv’s and mobile phones as part of their strategy to evolve the company. This meant moving away from a traditional data center and harnessing the power of the public cloud. Beginning in 2008, Netflix started migrating their on-premise servers & applications into Amazon Web Services (AWS) after experiencing an on-premise data center outage that stopped the business for three days. Startled by the lack of resiliency, over the course of seven years they were able to move 100% of all assets into the cloud and remain one of the pioneers of cloud computing.
Netflix’s Migration to the Cloud
Netflix is prominent in the cloud community for sharing their knowledge during the migration to the cloud.
Taking a peek into their architecture, Netflix maintains hundreds of AWS accounts that isolate the various parts of their business from Subscriptions, to Content Delivery, to Personalized Recommendations.
Netflix is able to quickly develop features because all of their engineers are empowered to launch resources in their appropriate accounts, without having to get approvals from various parts of the company. By utilizing AWS Organizations and Account Units, Netflix is able to organize their applications by engineering teams, providing autonomy and speed for engineers.
Within these AWS accounts, engineers use a myriad of technologies to deliver high fidelity video streaming.
Let’s start with how Netflix is able to serve videos. First and foremost, all content is stored in object storage like Amazon S3 and cached by using AWS CloudFront. This enables Netflix to distribute video content all around the world with low latency speeds.
Videos need to be ultimately transcoded into various formats for optimal viewing based on the device you are watching content. Mobile video is transcoded differently from Desktop videos, because of the different screen sizes, resolution, and network availability.
Take for example streaming on a phone. You will go in and out of signal depending on where you live, and in order to continuously deliver video, it needs to dynamically adjust & buffer, so you have a consistent viewing experience. This transcoding is called H.264, and Netflix is able to do this by harnessing the power of AWS Elastic Transcoder, which takes videos and formats them appropriately.
Video streaming is only a small part of the picture.
Netflix: Beyond the Cloud Basics
Customers have a smorgasbord of choices when watching videos on Netflix. In order to keep customer engagement & retention high, Netflix employs a personalization algorithm to help uncover videos that a customer may be interested in based on their previous viewing history. This means that all interactions when watching a video must be recorded. Netflix is able to do this by utilizing data streaming technologies like Kafka, and storing data in NoSQL databases like DynamoDB. Their engineers then write applications that are deployed on AWS EC2 or AWS Lambda that accesses this data to compute personalized videos to show.
Not all data is stored in a database. Some data is better suited to be stored on disks. Netflix is known to employ the usage of Hadoop to aggregate various types of data and move them into data warehouses or other databases across the company. Netflix has data science teams that sift through this data to do business analytics, like determining how many customers are watching a certain movie, or how likely someone is going to unsubscribe from the service.
While it is impossible to analyze every part of Netflix’s business the above describe a few major components for delivering online video.
In order to enable these features, developers need to be able to quickly deploy their code, that is tested and can be rolled back if a bug is introduced. This is no easy feat, and Netflix has developed a very sophisticated Continuous Integration & Continuous Deployment (CI/CD) pipeline for providing a mechanism to deploy cloud applications. Netflix invented and open-sourced their tool, called Spinnaker which allows developers to make small changes, test them with automated tests, and then get them live to a small subset of users, which then automatically rolls out globally over time after the confidence level that a bug has not been introduced increases.
Netflix & Cloud Cybersecurity
One of the major discussion points when moving to the cloud is security. Netflix has publicly documented their security practices. Content is locked by region so movies in Europe may not be available in the United States. This is done by employing DRM solutions in the cloud.
Internally, Netflix uses AWS IAM to lock permissions for employees, and applications with least permission privilege, so that even if a user becomes compromised the damage they can do is minimal, as they would not have access to the entire set of assets in the cloud.
Netflix’s SaaS Stack
Being in the cloud, also means using SaaS products internally to improve productivity of the workforce. Netflix uses JIRA for managing engineering tasks, and Confluence for documenting requirements. With a large workforce, managing passwords is difficult, so Netflix employs single-sign-on technologies like OneLogin to allow access to various SaaS products without having to remember hundreds of different passwords. SaaS tools are always changing, and knowing Netflix, they will be adapting to be more efficient.
Building Netflix’s Tech Stack & Backend...The Easier Way
That concludes our breakdown of Netflix’s technology stack and cloud architecture. Developing video on demand requires a large engineering staff, hundreds of millions of dollars in cloud computing (if you are going to operate at Netflix scale) and a decoupled architecture that allows applications to scale so that they are resilient in the face of performance issues and outages.
Zype can help offload many of the heavy lifting operations required to deliver OTT video, I encourage you to check us out.