넷플릭스 백엔드의 비밀, 자바 활용법 공개!

by DD
1개월 전
조회수 0

넷플릭스는 대규모 백엔드 시스템 구축에 자바(Java)를 핵심 언어로 사용하며, 스프링 부트(Spring Boot)를 표준 개발 프레임워크로 채택함

자바 버전 업그레이드 시 발생하는 패키지 네임스페이스 변경(Java -> Jakarta)과 같은 이슈를 코드 변환 도구(bytecode manipulation)로 해결하는 전략을 공유함

GC(Garbage Collection) 성능 개선을 위해 G1 GC에서 ZGC로 전환하며, 특히 대규모 메모리 환경에서의 이점을 강조함

그래프QL(GraphQL) 아키텍처를 도입하여 프론트엔드와 백엔드 간의 효율적인 데이터 통신을 구현하고, 서비스 간 통신(IPC)에 gRPC를 활용함

생성형 AI(Generative AI)를 자바 서비스에 통합하여 개발 생산성을 높이고, 에이전트 워크플로우(Agent Workflow)를 통해 복잡한 작업을 자동화하는 방안을 모색함

넷플릭스 백엔드의 자바 생태계

넷플릭스는 대규모 스트리밍 서비스를 지원하기 위해 자바를 백엔드의 핵심 언어로 채택했습니다. 특히 스프링 부트(Spring Boot)를 표준 개발 프레임워크로 사용하여 개발 생산성과 일관성을 확보하고 있습니다. 이는 수천 개의 마이크로서비스를 효율적으로 관리하고 배포하는 데 필수적입니다. 또한, gRPC를 서비스 간 통신(IPC)에 활용하여 고성능 및 효율적인 통신을 구현합니다.

자바 버전 업그레이드와 Jakarta EE 전환

발표자는 넷플릭스가 자바 버전 업그레이드에 적극적으로 대응하는 과정을 설명합니다. 특히 Java EE에서 Jakarta EE로의 전환 시 발생했던 패키지 네임스페이스 변경(Java -> Jakarta) 문제를 해결하기 위해 바이트코드 조작(bytecode manipulation) 도구를 활용한 경험을 공유합니다. 이는 대규모 시스템에서 오픈소스 프레임워크의 변화에 유연하게 대처하는 중요성을 보여줍니다.

GC 성능 개선과 ZGC 도입

넷플릭스는 GC(Garbage Collection) 성능 최적화를 위해 지속적으로 노력하고 있습니다. 과거 G1 GC를 사용했으나, 대규모 메모리 환경에서의 성능 병목 현상을 해결하기 위해 ZGC(Z Garbage Collector)를 도입했습니다. ZGC는 낮은 지연 시간(low latency)높은 처리량(high throughput)을 동시에 제공하여 서비스 안정성을 크게 향상시켰습니다.

그래프QL과 마이크로서비스 아키텍처

넷플릭스는 그래프QL(GraphQL) 아키텍처를 적극적으로 활용하여 프론트엔드와 백엔드 간의 데이터 통신 효율을 높였습니다. 이를 통해 프론트엔드는 필요한 데이터만 정확히 요청할 수 있으며, 백엔드 서비스는 다양한 데이터 소스를 통합하여 응답합니다. 이는 마이크로서비스 아키텍처(Microservices Architecture) 환경에서 API 엔드포인트 관리를 단순화하는 데 기여합니다.

생성형 AI(Generative AI) 도입 및 에이전트 워크플로우

최근 넷플릭스는 생성형 AI(Generative AI)를 자바 서비스에 통합하는 실험을 진행 중입니다. 특히 에이전트 워크플로우(Agent Workflow)를 구축하여 개발자들이 반복적인 작업을 자동화하고, 코드 생성, 테스트 케이스 작성 등 생산성을 향상시키는 방안을 모색하고 있습니다. 이는 AI 기반 개발 도구의 잠재력을 보여주는 사례입니다.

테스트 자동화와 스프링 부트 테스트

넷플릭스는 테스트 자동화를 매우 중요하게 생각하며, 이를 위해 스프링 부트 테스트(Spring Boot Test)를 적극적으로 활용합니다. 특히 테스트 격리(test isolation)를 위해 테스트 팩토리(test factory) 패턴과 테스트 슬라이스(test slice) 기능을 사용하여 특정 컴포넌트나 기능에 대한 단위 테스트(unit test)통합 테스트(integration test)를 효율적으로 수행합니다. 이는 개발 생산성 향상코드 품질 유지에 필수적입니다.

How Netflix Uses Java - 2026 Edition #JavaOne