API 호환성을 넘어서: 라이브러리 변경의 파급 효과를... 노트

API 호환성을 넘어서: 라이브러리 변경의 파급 효과를 측정하는 도구 구축

Netflix는 광범위한 저장소 생태계 전반에 걸쳐 Java 라이브러리 변경의 영향을 파악하기 위해 Quasar를 개발했습니다. 라이브러리 생산자는 종종 API 변경 사항을 보지만 변경된 기호에 어떤 소비자가 의존하는지에 대한 통찰력이 부족합니다. 코딩 에이전트가 개발 수명 주기에 점점 더 많이 참여함에 따라 이러한 가시성은 매우 중요합니다.Quasar는 Netflix 저장소 전반에 걸쳐 기호 정의 및 참조를 색인화하여 이를 해결합니다. 생산자를 위해 두 가지 주요 질문에 답합니다. 라이브러리의 공개 API에서 무엇이 변경되었으며 어떤 저장소가 해당 변경된 기호를 정확히 사용하고 있습니까? 이는 일반적인 호환성 경고를 실행 가능한 증거로 변환합니다.기존 도구는 부족합니다. 호환성 검사기는 계약 변경 사항은 식별하지만 사용량은 식별하지 못하고, 종속성 그래프는 선언된 도달 범위를 보여주지만 실제 호출은 보여주지 않으며, 텍스트 검색은 미묘한 차이를 놓칠 수 있습니다. Quasar는 개방형 상호 운용 형식인 SCIP를 활용하여 언어별 색인기가 정의 및 참조를 인코딩할 수 있도록 합니다. Quasar는 라이브러리 버전 및 커밋에 대한 API 정의를 유지하여 독립적인 색인화와 관계없이 변경 사항을 정확한 사용량과 연결합니다.CI 빌드가 실행되면 색인기는 SCIP 색인기를 Quasar에 제출하여 API 정의 및 소비자 참조를 저장합니다. 풀 요청 검토 중에 Quasar는 색인화된 기본 및 헤드 정의를 비교하고 Amazon Athena를 사용하여 직접 소비자 참조 수를 계산합니다. 이 데이터는 REST, GraphQL 및 MCP API를 통해 노출됩니다.메서드 제거와 같은 단순화된 API 변경의 경우 Quasar는 이전 메서드를 계속 호출하는 저장소, 해당 종속성 버전 및 파일 위치를 식별합니다. 이를 통해 생산자는 호환성이 깨지는 변경 사항을 릴리스하기 전에 마이그레이션을 조정할 수 있습니다.Quasar는 풀 요청 분석 중에 상세한 영향 보고서를 제공하여 기호를 추가, 제거 또는 수정된 것으로 분류한 다음 제거 및 수정에 대한 소비자 영향을 분석합니다. 영향을 받는 저장소, 버전 분포, 샘플 소비자 위치 및 라이브러리 중요도를 보여줍니다. 이를 통해 생산자는 사용 중단, 마이그레이션 경로 게시 또는 광범위한 마이그레이션 조정와 같은 정보에 입각한 결정을 내릴 수 있습니다.SCIP를 기반으로 하는 시스템의 다국어 기반은 여러 언어 생태계를 색인화할 수 있도록 합니다. 생성된 Java 멤버를 통해 Protobuf 정의와 같은 복잡한 관계를 연결된 소비자 저장소로 추적할 수 있습니다. Quasar는 JVM 및 Protobuf API 변경 사항을 평가하지만 Go 또는 Python과 같은 다른 언어에 대한 완전한 호환성이 깨지는 API 변경 평가는 진행 중입니다.Quasar는 현재 풀 요청에서 결과를 표시하여 병합 전 결정을 지원합니다. 목표는 이 컨텍스트를 코딩 워크플로에 더 일찍 통합하여 에이전트가 공개 API 편집을 인식하고 풀 요청을 열기 전에 Quasar에 쿼리할 수 있도록 하는 것입니다. 이 사전 예방적 접근 방식은 에이전트가 정보에 입각한 결정을 내리는 데 도움이 되지만, 풀 요청 분석은 여전히 검증에 중요합니다.
CdXz5zHNQW_uBo5VUclOg.png