Technologies and programming language used by Netflix


👤 Diwas Poudel    🕒 19 Nov 2021    📁 TECH

Netflix is the world's largest OTT service, founded in California on August 29, 1997, by Reed Hastings and Marc Randolph. Netflix is the world's streaming king, dominating entire online streaming services with over 190 countries' penetration and over 195 million paid memberships. Netflix began as a DVD rental service by mail and later expanded into a streaming service in 2007. Now, People are familiar with Netflix as a streaming service.

Netflix contains a wide range of diverse content from various cultures and languages. Netflix is available on nearly every device that can access the internet, including televisions, video gaming consoles, tablets, computers, internet browsers, smartphones, and media streaming devices.

Netflix has made numerous changes to their technology stack since their failure in 2008, when one of their data centers failed and shut down the entire service, causing DVD shipments to halt for three days.

If you want to know what technology stack does Netflix uses then you are in right place. They are categories into 5 groups.

Programming Language and Framework

Big companies like Netflix uses various programming language for building their product. Some of them are:

netflix-programming-language-and-tools.
fig. Netflix programming language and framework

1 Java

Java is Netflix's main backend which does all heavy lifting tasks.Java is one of the good programming languages doing heavy-duty tasks.

2 Python

Initially Netflix focus only on Java as the main backend language. Later Netflix developer used Python to rewrite some Java processes. Python is also used for security. It is used to classify risks, automate security, data exploration, and cleaning, identify vulnerabilities, artwork personalization, and marketing. Python enables the use of AI and machine learning, and it aids recommendation algorithms in recommending user-specific content.

Some of the popular python packages used in Netflix are :

  • NumPy and SciPy: For performing mathematical and numerical analysis.
  • Boto 3 AWS SDK for python:  For configuring its AWS infrastructure. 
  • Flask APIs are used as a wrapper around the orchestration tools

3 Nodejs

Netflix has been using Node.js since 2013. The development team was able to use container layers for their edge services thanks to Node.js.

They appear to have adopted Nodejs as a common language for both the server and client sides. Nodejs APIs are easier to write and debug than Java APIs.Also, they are searching for Nodejs Function as a Service and there was no Nodejs FaaS provider at the time in the market, so Netflix built its own. NodeQuark FaaS is a js Functions-as-a-Service for its API Platform.NodeQuark FaaS aims to achieve three objectives: observability (metrics), debugability (diagnostic tools), and availability (service registration).

Netflix now has separate Docker containers for APIs written in Nodejs and restify. This does not mean they have removed Java. Much of the core infrastructure is still in Java.

4 React

Netflix's websites were initially Java-based HTML renderers with Java code on both the frontend and backend. This reduces performance by delivering more markup at the UI layer. The new UI renderer is written in Node.js and React.js, and the rendering is done on the server. React Js reduces client-side startup time and improves overall runtime performance. It also aids in the development of modular applications.

5 RxJS

Initially, Netflix employed a Promises-based approach. This can result in a slew of state-related bugs. As a result, RxJS was used. It was a programming library for creating asynchronous and event-driven programs.

6 Restify

Yunong Xiao, a senior engineer at Netflix, created Restify, an observable RPC framework. Looking at the Flame graph, a Netflix developer discovered that there are performance issues over time. However, the solution to the problem is unknown because they are unable to sample the Nodejs stack and visualize it with flame. As a result, Restify is used for improved visibility. Netflix employs restify to improve performance and visibility.

 7 MySQL(RDBMS)

Netflix uses the MySQL database to store data such as billing information, user information, and transaction information since this data requires ACID compliance, which MySQL can provide. Netflix has a MySQL master-master system that uses InnoDB and is hosted on Amazon's big EC2 instances.

8 Cassandra(NoSQL)

Cassandra is used by Netflix to store viewing history data for each Netflix member. This type of data is massive, and finding it necessarily requires a higher operational cost, resulting in slower search performance. Netflix divides data into two parts for this purpose.
1) Live Viewing History (LiveVH): This includes a small number of users' recent viewing historical data with frequent updates, and these data are in uncompressed form.
2) Compressed Viewing History (CompressedVH): This section contains data that requires only infrequent updates.These data are compressed, and they are stored in a single column per row key.

Platform and Storage

Netflix relies on Amazon Web Services (AWS) for nearly all of its processing and storage requirements, including databases, analytics, recommendation engines, and video transcoding. In total, they have over 100,000 AWS virtual server instances.

1 AWS S3 

Netflix uses AWS S3 for storage.

2 AWS EC2 

Netflix uses AWS EC2 for hosting.

3 AWS Lamda 

Netflix uses AWS Lamda for  serverless functions and state machine

DevOps

DevOps aids in the rapid delivery of applications and services. This shortens the software development life cycle by removing the barrier between developers and the operational team. Docker, Twilio, Amazon Neptune, PagerDuty, Gradle, and other DevOps practices and tools are used by Netflix.

1 Docker

Docker is a lightweight standalone virtual machine that comes preloaded with all of the programs and dependencies you'll need to run your program. It simplifies the creation, deployment, and execution of any application.

2 Twilio

Twilio is a Cloud Communication platform that allows you to send/receive text messages, make phone calls, or start a chat from your app or website using just a few lines of code that developers can easily integrate into their platform.

3 Amazon Neptune

Amazon Neptune is a fully-managed graph database service that makes it simple to create and run applications that interact works with large, interconnected datasets. Amazon Neptune makes use of the Amazon Neptune machine learning capability to use graph neural networks, a machine learning technique designed to make simple and fast predictions using graph data.

4 Gradle

Gradle is an open-source build automation tool for automating building, testing, deployment, and publishing. Gradle currently supports the following languages: Java, C/C++, and Javascript.

Customer Management

Netflix use Zendesk,Airtable.Twilio, Agile CRM as Customer Management Tools and software.

Communication

Netflix use G Suite, Agile CRM, Twilio, Slack, Zoom, Zendesk.Airtable as communication tools.

Conclusion

We conclude that Netflix employs a variety of programming languages, tools, and technology in order to maintain its position as the world's largest OTT service provider.