요약

  • 2019년 5월 창립자들의 설명은 닮았지만 협력하지 않는 계측 프로젝트가 둘이라는 점을 가장 큰 문제로 꼽았다. 옛 코드와 이어 주는 호환 장치를 우선하고, 두 프로젝트를 연말까지 읽기 전용으로 돌릴 계획을 밝혔다.
  • OpenTelemetry의 2023년 5월 발표는 일곱 언어에서 OpenCensus와 기능이 맞춰졌다고 보고하고, 대부분의 옛 저장소를 7월 31일에 보관할 계획을 냈다. opencensus-python은 명시적인 예외였다.

같은 계측 공사에 두 번 비용을 냈다

분산된 서비스가 내부에서 무엇을 하는지 보려면 애플리케이션과 의존 라이브러리가 요청의 경로와 수치를 기록해 보내야 한다. OpenTracing과 OpenCensus는 이 일을 여러 팀이 함께 쓸 수 있게 만들려 했다. 설계 선택은 달랐지만 통합 작업을 부탁하는 상대는 겹쳤다. 라이브러리 관리자는 한쪽만 지원할지, 둘 다 지원할지, 결론이 날 때까지 기다릴지 정해야 했다. 운영자는 각자가 내린 선택을 실제 장애 조사에서 떠안았다.

Ben Sigelman과 Morgan McLean이 2019년에 쓴 글은 보기 좋은 홍보 문장보다 정확한 문제를 내놓았다. 두 계획의 가장 큰 문제는 둘이라는 사실이었다. 공동 계측으로 반복 작업을 줄이려다, 서로 다른 연결 방식을 유지하는 작업이 생긴 것이다. 요청 하나가 여러 구성요소를 지날 때 그중 한 라이브러리가 다른 방식을 쓰면, 전체 경로를 다시 맞추는 수고가 운영자에게 돌아온다.

2019년 5월의 통합은 새 기여가 모일 장소를 CNCF 아래 하나로 정했다. 초기 운영·기술 위원회에는 Google, LightStep, Microsoft, Uber 관계자가 참여했다. 앞으로의 사양과 코드를 정할 자리는 생겼다. 그러나 배포된 서비스의 의존성은 그날 밤 바뀌지 않았다. 창립자들은 OpenTelemetry를 두 선행 프로젝트 모두의 다음 주요 버전으로 불렀다. 새 버전이라는 말에는 이전 버전을 쓰는 사람의 이동 경로가 필요하다는 뜻도 들어 있었다.

연결 장치는 뒤늦은 변명이 아니었다

옛 두 방식과 소프트웨어 연결 장치로 호환되게 하는 일은 통합 발표 첫날부터 우선순위였다. 기존 계측 코드가 남아 있어도 데이터를 새 프로젝트의 수집 경로로 보내면서 조금씩 교체하도록 한 것이다. 세 프로젝트를 동시에 개발하는 기간을 줄이려는 목표도 있었다. 책임자들은 OpenTracing과 OpenCensus를 2019년 말 전에 읽기 전용으로 돌릴 계획이었다. 당시의 목표이지, 연말까지 모든 사용자가 옮겼다는 기록은 아니다.

저장소가 새 기능을 받지 않아도 서비스는 다음 날 아침 그 라이브러리를 다시 불러올 수 있다. 패키지 버전, 내보내기 경로, 측정값 이름을 차례로 살피고 고쳐야 한다. 연결 장치가 초안부터 있던 이유는 조직을 합치는 속도와 실행 중인 코드를 바꾸는 속도가 다르기 때문이다. 단번에 선을 뽑으면 장애를 살펴볼 데이터까지 끊길 수 있다.

CNCF가 2021년 8월 발표한 보육 단계 진입 소식에는 열한 언어의 API와 SDK, 추적과 지표를 다루는 프로토콜이 등장한다. 같은 발표는 OpenTracing의 공식 보관과 두 선행 프로젝트의 추가 폐기도 앞으로 할 일로 적었다. 합의한 지 2년이 지난 뒤에도 기존 코드를 치우는 일은 완료 도장이 찍힌 항목이 아니었다.

2023년 목록에는 지울 수 없는 예외가 있었다

OpenTelemetry가 2023년 5월 발표한 OpenCensus 종료 안내는 구체적인 목록을 제시했다. 프로젝트는 C++, .NET, Go, Java, JavaScript, PHP, Python에서 OpenCensus와 기능 동등성을 확보했다고 밝혔다. 대부분의 OpenCensus GitHub 저장소는 7월 31일 보관할 계획이었다. 그러나 opencensus-python의 일부는 여전히 운영 환경에 권장돼 일반 규칙에서 빠졌다. 합병 도표의 화살표 하나가 실제 작업에서는 예외 칸이 있는 목록이 됐다.

안내에는 Go, Java, JavaScript, Python용 호환 연결 장치가 소개되고, 일부 어댑터는 아직 출시 전이라고 적혔다. 기존 계측을 당분간 살려 두고 OpenTelemetry 내보내기 장치로 데이터를 보낸 다음 옛 라이브러리를 단계적으로 제거하는 경로다. 프로젝트는 새 시스템이 OpenCensus의 모든 데이터 모델을 완전히 포함하는 것은 아니며, 이동 중 계측 데이터가 달라질 수 있다고도 경고했다. 그래프에 선이 계속 그려진다고 해서 수치의 이름과 뜻까지 같다는 보장은 없다.

보관 예정일은 유지 보수의 경계였다. 발표에 따르면 7월 31일 이후 보관 대상 OpenCensus에는 새 기능이나 보안 수정이 추가되지 않는다. 소스와 기존 패키지는 계속 내려받을 수 있다. 내려받을 수 있는 코드와 누군가 계속 고치는 코드는 다르다. 그 코드를 서비스에 남겨 둘지 결정하는 책임도 함께 달라진다.

위원회는 합쳐도 의존성은 따로 이사한다

2019년 합의는 공동 계측을 어디서 개발할지에 대한 경쟁을 끝냈다. 이미 운영 중인 서비스의 이동은 언어별 구현, 버전 발표, 연결 장치의 품질과 여러 관리자의 일정에 묶였다. 네 해 뒤의 OpenCensus 퇴장 안내가 보여 주는 것은 이 공사의 길이다. 이것만으로 2019년의 읽기 전용 목표가 실패했다고 말할 수는 없다. 읽기 전용과 저장소 보관은 서로 다른 단계다. 다만 2023년에도 구체적인 이동 경로와 예외가 필요했다는 사실은 분명하다. 새 문패는 먼저 걸렸고, 낡은 배선은 그 뒤에 한 가닥씩 옮겨졌다.