분산 시스템은 존재조차 몰랐던 컴퓨터의 장애로 인해 자신의 컴퓨터를 사용할 수 없게 될 수 있는 시스템입니다.
1987년에 나온 선견지명이지만 2018년에도 여전히 유효합니다. 또한 문제를 과소평가하고 있습니다.
카우치베이스는 참여 데이터베이스 플랫폼을 제공하는 것을 사명으로 삼고 있습니다. 현대 사회를 위한 참여형 시스템을 구축하는 경우, 반응성이 뛰어나야 합니다. 앱의 응답 속도가 느리면 인스턴트 메시지나 새로운 '인스티'에 대한 알림으로 인해 사용자가 앱을 사용하는 데 방해가 될 수 있습니다. 앱의 반응 속도가 느리다는 것은 곧 사용자의 손실을 의미합니다.
하지만 문제가 있습니다. 많은 톱니바퀴가 작동하는 분산 시스템에서 단 하나의 톱니바퀴가 속도를 늦추는 경우(그것도 가끔씩만!) 이를 어떻게 식별할 수 있을까요?
더 나은 보트가 필요해
많은 사용자들이 증명하듯, Couchbase는 이미 문제를 찾는 데 꽤 능숙합니다. 우리는 오랫동안 진단 도구 세트를 제공해 왔습니다. Java SDK에 내장된 메트릭에서 N1QL의 고급 메트릭 및 프로필 정보또는 Couchbase Server 5.0에 도입된 임계값 및 로깅에 대해 설명합니다.
업계는 더 많은 클라우드 및 컨테이너 제공업체의 추상화 계층을 통해 더욱 분산되는 추세에 있습니다. 동시에 최신 시스템은 정상 상태에서는 매우 낮은 지연 시간으로 작동하는 경향이 있지만, 가끔 정체나 오류가 발생하는 경우 지연 시간에 대한 시스템 허용 오차는 거의 동일할 것으로 예상됩니다. 수십 마이크로초에서 몇 초 만에 시간 초과(TCP 사양에 따르면 TCP 재전송 시 1초 대기!)가 발생하는 것은 산에서 갑자기 깎아지른 절벽에 부딪히는 것과 같습니다.
실제로 여러분도 이런 경험을 해보셨을 겁니다. 많은 사람들이 고화질 비디오와 고품질 스테레오 오디오로 Skype/행아웃/회의 통화를 해본 경험이 있을 것입니다. 하지만 그 중 100%는 비디오가 몇 프레임 멈추거나 가끔씩 비디오 노이즈가 발생하고 오디오가 끊기거나 왜곡되는 현상을 경험한 적이 있을 것입니다.
운 좋게도 많은 쉬운 문제를 해결하고 도구가 더 이상 다음 어려운 문제의 원인을 찾기에 충분하지 않을 때, 그때가 바로 새로운 도구를 혁신할 때입니다.
포스 사용, 개발자
하지만 솔루션 혁신이 반드시 백지 상태에서 시작하는 것을 의미하지는 않습니다.
우리는 다음과 같은 생각을 믿습니다. 혁신은 다른 곳에서 일어납니다 같은 생각을 가진 열정적인 인재를 찾아 함께 솔루션을 개발하는 것이 저희의 이익에 부합한다고 믿습니다.
팀과 저는 몇 가지 연구를 진행했고, 다음과 같은 연구 노트를 작성했습니다. ACM의 커뮤니케이션 는 고무적이었습니다. 이를 계기로 클라우드 네이티브 컴퓨팅 재단의 일부인 오픈트레이싱 프로젝트에 참여하게 되었습니다. 카우치베이스는 CNCF의 회원입니다.
오픈트레이싱 는 분산 추적을 위한 표준화된 API가 되기 위해 노력하고 있습니다. 카우치베이스는 추적 도구를 구축하는 사업을 하고 있지는 않지만, 우리도 나름대로의 필요를 가지고 있으며 커뮤니티의 혁신에 기여하고 활용할 수 있다면 그렇게 해야 합니다.
또한 개방형 솔루션을 기반으로 구축하면 동일한 인터페이스를 기반으로 구축된 더 광범위한 통합 요소로 작업을 확장할 수 있습니다.
결정해야 할 것은 주어진 타이밍을 어떻게 활용할 것인지*뿐입니다.
Couchbase Server 5.5에서는 다음과 같은 새로운 기능을 도입할 예정입니다. 응답 시간 관찰 가능성. 이렇게 하면 시스템 배포자가 (조정 가능한) 임계값을 기준으로 응답 시간을 관찰할 수 있는 매우 간단한 방법을 즉시 사용할 수 있습니다. 팀은 이 기능을 항상 효율적이고 안전하게 사용할 수 있도록 하는 방법과 배포 시 발생할 수 있는 복잡성을 신중하게 고려했습니다.
마이크 골드스미스(마이크 골드스미스)가 주도한 sdk-rfc) 는 자신의 블로그에서 ThresholdLoggingTracer에 대해 설명합니다. 낮은 수준에서 알려진 대로, 그리고 계속 발전하고 있으며 유니티가 기여하고 있는 오픈트레이싱을 활용하는 방법에 대해 설명합니다.
그런 다음 그의 블로그에서에서 마이클 니칭거는 Java SDK가 Couchbase의 ThresholdLoggingTracer를 구현하는 방법과 다른 추적 시스템에서 사용하거나 사용자가 직접 확장하여 시스템에서 발생하는 상황을 더 잘 관찰할 수 있는 (현재 휘발성) OpenTracing 인터페이스에 대해 설명합니다.
이제 Couchbase Server 5.5를 사용할 수 있습니다. 포럼이나 이슈 트래커를 통해 피드백을 주시면 감사하겠습니다.
* 이 특정 참조가 다소 모호할 수 있지만, 누군가에게는 도움이 될 것입니다!