Netflix가 2020년부터 준비해서 2022년 중단 없이 모든 모바일 앱이 GraphQL로 마이그레이션 되었다고 합니다. 이 마이그레이션 과정 중에 클라이언트 뿐 아니라 서버쪽 API 레이어까지
Netflix가 2020년부터 준비해서 2022년 중단 없이 모든 모바일 앱이 GraphQL로 마이그레이션 되었다고 합니다. 이 마이그레이션 과정 중에 클라이언트 뿐 아니라 서버쪽 API 레이어까지 모두 개편되었다고 합니다. 이 글에서는 이 마이그레이션을 Netflix가 어떻게 수행했는지가 나와 있습니다. GraphQL 도입전에는 Netflix에서 만든 모노리식 Falcor API를 사용하고 있었고 이는 API 팀에서 관리하고 있었다고 합니다. 1단계에서 2020년 UI 엔지니어가 GraphQL로 전환할 준비가 완료되자, 마이그레이션을 본격적으로 하기 전에 Falcor API 앞에 Graph Shim 서비스를 추가하게 되고 아주 자세히 나와있진 않지만 Shim이라는 이름으로 봤을때 GraphQL을 변환해서 API로 요청하게 하는 중간 프록시 서버 정도로 이해했습니다. 이 Shim 서비스를 통해 클라이언트는 GraphQL로 전환하는 실험을 할 수 있고 성능 테스트도 할 수 있었으며 서버측 마이그레이션과는 별개로 진행할 수 있었다고 합니다. 이때는 A/B 테스트를 사용했다는 것으로 보아 Falcor와 GraphQL을 비교하면서 진행한 것으로 보입니다. 2단계에서는 서버 앞에 Federated GraphQL을 사용해서 각 도메인팀의 GraphQL 서비스를 이용하게 하고 레거시 Falcor와 GraphQL Shim은 사용하기 않게 했습니다. 이때는 Replay 테스트를 사용해서 GraphQL로 들어온 요청을 기존 API에도 재현해서 기대 결과가 같은지 검사하고 Sticky 카나리를 통해서 안정적으로 마이그레이션을 했다고 합니다. 기능적 요구사항과 멱등성을 가진 요청에서는 Replay 테스트를 사용했고 캐싱, 로깅 등의 비기능적 요구사항은 Replay를 사용할 수 없으므로 A/B 테스트와 Sticky 카나리를 이용했다고 합니다. https://netflixtechblog.com/migrating-netflix-to-graphql-safely-8e1e4d4f1e72