
Netflix is Built on Java | ForrestKnight YouTube Video Summary
ForrestKnight breaks down how Netflix runs Java. Some interesting facts include how the frontend apps utilize Swift, Javascript, and Typescript, while the backend runs almost exclusively Java. He goes over different types of applications and data stores used by Netflix and how to leverage the proper architecture. Java is used in high capacity and high-performance situations such as streaming Netflix, studio applications, calendaring, equipment management, film production, film products and spreadsheets.
Detailed Summary:
How Netflix runs their backend stack utilizing JAVA
ForrestKnight broke down the Netflix tech stack and how it operates so efficiently with a heavy lean on JAVA. Although JAVA is not used on the frontend, the backend of Netflix relies very heavily on the programming language. This may come as a surprise to some people, especially those that consider JAVA a dying language.
Frontend
The frontend stack is made up of a few modern programming languages:
- Swift for iOS.
- Javascript and Typescript for web apps.
Backend
The backend leans almost exclusively on JAVA. They utilize SpringBoot and Spring to create the high performance data stores and applications they have. This includes Netflix the streaming platform, Netflix Studios, Netflix’s production equipment tracker, the Movie Studio and others.
Applications
- Streaming applications - Large multi-region backend service that uses large amounts of CPU and non relational databases like Kafka, Cassandra and EvCache. Netflix is deployed on 4 separate AWS regions with low latency data transfer.
- Internal Applications- For studio apps and calendaring, single regional application for equipment usage and film production spreadsheets. They use relational datastore such as MySQL and PostgreSQL
Important aspects Netflix Engineering team uses for backend performance
- Rest APIs are old news for the Netflix Team.
- GraphQL is the chosen method for frontend to backend API calls.
- gRPC (gRPC Remote Procedure Call) is used for service to service calls.
Technical details on their JVM and why they upgraded
- Currently they are on JDK 17 from a previous JDK 8 which was an outdated application framework. This was fixed by patching all old libraries themselves instead of having to rewrite every app. They have moved services onto Spring Boot.
- Currently the team is moving over to GenZGC which reduces error rates. What is Generational Z Garbage Collector? This makes GC more predictable and leads to a lower error rate, pause times are effectively gone due to moving from G1 garbage collection and using Generation ZGC by default.
- Netflix is bullish on virtual threads using Java 23 and has seen deadlocking with old code so they did a rewrite.