The above presentation was given by Netflix Staff Software Engineer Paul Bakker at JavaOne 2025. Some observations on the talk below:

Netflix is mostly a Java shop

At least for most of its back end systems, Netflix runs on Java. Given the scale of their systems they use a microservices architecture built using the Spring Boot framework.


The tech stack includes the following:

  • API Gateway which processes GraphQL requests from front end systems
  • Microservices to process GraphQL requests
  • Backend services that are called by other Netflix microservices, these use gRPC for Inter process communication. No REST is used internally as gRPC is seen more efficient for IPC between backend services
  • Some specialist backend systems for low level platform integration are written in Go and Machine learning in Python but the vast majority of systems run on the JVM with Java and Spring Boot


Migration from JDK 8 to JDK 17+

A number of years ago Netflix was still running on JDK 8. The decision was made to skip moving to JDK 11 as the improvements provided were not significant enough.

A move from JDK 8 to JDK 17 was undertaken about 3 years ago. This involved:
  • Migrating all services (3000+) from an internal application framework to Spring Boot
  • Patching a number of unmainted open source libraries for compatibility with JDK 17

Currently all services now run on JDK 17 or higher. Some services which have very high RPS(request per second) requirements run on JDK 21 or 23 to utilize Garbage collection improvements and Virtual Threads

Garbage collection improvements

  • The G1 Garbage collector in JDK 17 utilizes 20% less CPU compared to the JDK 8
  • Generational ZGC in in JDK 23 gives even better performance

Virtual Threads

Moving to JDK 21+ added support for Virtual Threads. This offered performance improvements such as enabling paralell data fetching when processing GraphQL requests.


Using Virtual Threads is preferable to using a ThreadPoolExecutor threaded model as the overhead of the ThreadPoolExecutor model adds overhead for simple quick requests


Virtual Threads and Structured Concurrency will replace Reactive Programming. Netflix has reduced its use of RxJava due to complexity issues


Spring Boot

Benefits of using Spring Boot for Netflix:

  • Proves to be reliable in the long term
  • Spring Boot is still innovating
  • Large talent pool of developers with knowledge of the framework
  • Extensible

Migrating to Spring Boot 3 created a number of issues:

  • JDK 17+ required (not an issue as all services running on this or above)
  • Move to Jakarta EE namespace from javax.* namespace, more of an issue for libraries to dependency on old javax namespace
  • Some API changes
  • Many updated dependencies