복원력 있는 시스템 구축: Intercom에서 관찰 가능성을 향한 여정
게시 됨: 2022-07-14Intercom에서 우리는 무엇보다도 고객 경험에 중점을 둡니다. 우리 서비스의 가용성과 성능은 우리의 최우선 순위입니다. 이를 위해서는 팀과 시스템 전반에 걸쳐 강력한 관찰 가능성 문화가 필요합니다.
결과적으로 우리는 애플리케이션의 신뢰성에 많은 투자를 하고 있습니다. 그러나 예측할 수 없는 실패는 불가피하며, 발생하면 이를 해결하는 것은 인간입니다.
우리는 사회 기술적 시스템을 운영하며 역경에 직면했을 때 회복하는 능력을 회복력이라고 합니다. 회복력의 중요한 구성 요소 중 하나는 관찰 가능성으로, 인간이 실행하는 시스템 내부를 "볼" 수 있도록 하기 위해 취하는 단계입니다.
이 게시물은 관찰 가능성의 더 강력한 문화를 구축하기 위한 길과 그 과정에서 우리가 배운 교훈을 탐구할 것입니다.
Intercom에서 관찰 가능성이란 무엇을 의미합니까?
Intercom에서는 배우기 위해 배송합니다. 우리의 프로덕션 환경은 우리의 코드, 인프라, 타사 종속성 및 고객이 함께 모여 객관적인 현실을 만드는 곳입니다. 우리 작업의 영향을 배우고 검증할 수 있는 유일한 장소입니다. 우리는 관찰 가능성을 인간이 생산에 대해 질문하고 답을 얻는 연속적인 과정으로 정의합니다*.
조금 더 분해해 보겠습니다.
- 지속적인 프로세스: 성공적인 관찰 가능성은 사람들이 가능한 한 자주 관찰하는 것을 의미합니다.
- 생산에 관한 질문: 우리는 정의가 광범위하고 일반적이며 우리가 제공하는 광범위한 워크플로를 대표하기를 원했습니다.
- 답변*: 별표에 유의하십시오. 어떤 도구도 답을 줄 수 없으며 실제 답을 찾기 위해 따를 수 있는 리드만 제공합니다. 당신은 당신 자신의 멘탈 모델과 당신이 운영하는 시스템에 대한 이해를 사용해야 합니다.
1단계: 문제 및 솔루션
관찰 가능성에 대한 자체 정의로 무장하여 기존 관행을 평가하고 문제 진술을 공식화했습니다. 최근까지 우리의 관찰 가능성 도구는 주로 메트릭을 기반으로 했습니다. 다양한 속성 조합으로 분할 및 분할된 메트릭이 있는 차트로 가득 찬 대시보드를 보는 것과 관련된 일반적인 워크플로. 사람들은 상관 관계를 찾고 있지만 종종 통찰력을 충족하지 않고 떠납니다.
"측정항목을 추가하고 이해하기는 쉽지만 높은 카디널리티 속성(예: 고객 ID)이 누락되어 조사를 완료하기 어렵습니다."
메트릭은 추가하고 이해하기 쉽지만 높은 카디널리티 속성(예: 고객 ID)이 누락되어 조사를 완료하기 어렵습니다. 이전에는 소수의 관찰 가능성 챔피언이 보조 도구(예: 로그, 예외 등)를 사용하여 워크플로를 계속하여 높은 카디널리티 정보에 액세스하고 전체 그림을 작성하려고 했습니다. 그 기술은 끊임없는 연습이 필요했습니다. 제품을 제공하느라 바쁜 대다수의 제품 엔지니어에게 비현실적인 요구였습니다.
우리는 이러한 통합된 관찰 가능성 경험의 부족을 해결해야 할 문제로 식별했습니다. 우리는 연결되지 않고 설정이 부족하고 값비싼 도구 세트를 마스터하지 않고도 누구나 프로덕션에 대해 임의적인 질문을 하고 통찰력을 얻을 수 있기를 원했습니다. 문제를 완화하기 위해 원격 분석 추적을 두 배로 늘리기로 결정했습니다.
추적을 두 배로 늘리기 전에 사용한 일반적인 운영 대시보드
왜 추적합니까?
모든 관찰 가능성 도구는 뒤에 사람이 있는 도구일 뿐이며 사람은 좋은 시각화가 필요합니다. 어떤 종류의 데이터가 시각화에 도움이 되는지는 중요하지 않습니다. 단지 도구를 사용하여 다양한 시각화 간에 원활하게 전환하고 문제에 대한 대안적 관점을 얻을 수 있다는 것뿐입니다.
추적은 다른 원격 측정 데이터에 비해 엄청난 이점이 있습니다. 즉, 거의 모든 시각화를 지원하는 트랜잭션에 대한 충분한 정보를 인코딩합니다. 추적 위에 가관측성 워크플로를 구축하면 기본 데이터나 도구를 전환할 필요 없이 원활하게 통합된 경험을 보장할 수 있습니다.
트레이스로 구동할 수 있는 몇 가지 시각화 유형
2단계: 추적 구현
Intercom에서는 작게 시작하여 성공의 모습을 결정하고 진행 상황을 모니터링합니다. 우리의 주요 목표는 추적이 관찰 가능성 워크플로를 보다 효율적으로 만들 수 있는지 확인하는 것이었습니다. 이를 위해 가능한 한 빨리 엔지니어의 손에 흔적을 전달해야 했습니다.
"처음부터 추적으로 애플리케이션을 계측하는 대신 이미 종속성에 있었던 기존 추적 라이브러리를 사용했습니다."
시간을 절약하기 위해 개념 증명에 기존 공급업체인 Honeycomb을 사용했습니다. 우리는 과거에 구조화된 이벤트에 도구를 사용하면서 이미 그들과 좋은 관계를 구축했습니다.
처음부터 추적으로 애플리케이션을 계측하는 대신 이미 종속성에 있었던 기존 추적 라이브러리를 사용하고 추적 데이터를 Honeycomb 기본 형식으로 변환하기 위해 약간의 조정을 수행했습니다. 우리는 우리가 처리한 모든 트랜잭션의 ~1%를 유지하면서 단순한 결정론적 샘플링으로 시작했습니다.
팀원이 추적을 채택할 수 있도록 지원
조직을 흔적으로 바꾸는 것은 작은 일이 아닙니다. 추적은 메트릭이나 로그보다 더 복잡하고 학습 곡선이 가파르다. 계측, 데이터 파이프라인 및 도구가 모두 중요하지만 가장 큰 과제는 팀원이 추적 사용을 극대화할 수 있도록 하는 것입니다. 프로덕션 환경에서 개념 증명을 실행하면서 우리는 즉시 관찰 가능성의 문화를 구축하는 데 집중하기 시작했습니다.
"우리는 엔지니어에게만 초점을 맞추지 않았습니다. 우리는 이사, 기술 프로그램 관리자, 보안 팀 구성원 및 고객 지원 담당자와 이야기하여 추적이 특정 문제를 해결하는 데 어떻게 도움이 될 수 있는지 강조했습니다."
동맹을 찾는 것이 성공의 열쇠였습니다. 우리는 이미 관찰력에 능숙한 챔피언 그룹을 모았습니다. 그들은 우리의 가정을 확인하고 팀 내에서 흔적에 대한 소문을 퍼뜨리는 데 도움을 주었습니다. 그러나 우리는 엔지니어에게만 초점을 맞추지 않았습니다. 우리는 이사, 기술 프로그램 관리자, 보안 팀 구성원 및 고객 지원 담당자와 이야기하여 추적이 특정 문제를 해결하는 데 어떻게 도움이 되는지 강조했습니다.
우리의 메시지를 조정하는 것은 지원을 잠그는 데 도움이 되었습니다. 새로운 도구를 도입하는 것은 항상 일정한 위험을 수반합니다. 잠재력을 입증하고 사람들을 흥분시킴으로써 성공 가능성을 높였습니다.
3단계: 적합한 공급업체 결정
지원 프로그램이 시작되면서 우리는 최신 추적 중심 공급업체를 살펴보고 잠재적 후보자를 평가하기 위한 일련의 기준을 공식화했습니다.
워크플로 : 우리는 탐색적 워크플로를 가장 중요한 것으로 식별했습니다. 즉, 엔지니어가 생산 데이터를 임의로 분할 및 분석하고 시각화 및 높은 카디널리티 속성을 통해 통찰력을 얻을 수 있습니다. 문제 진단의 큰 부분은 문제를 발견할 수 있다는 것입니다. 즉, "정상"이 어떻게 보이는지 이해해야 합니다. 우리는 문제가 발생할 때뿐만 아니라 가능한 한 자주 질문하여 엔지니어가 프로덕션을 쉽게 탐색할 수 있도록 하고 싶었습니다.

"우리는 데이터가 샘플링되고 유지되는 방식을 완전히 제어하기를 원했습니다."
샘플링 및 보존 제어 : 우리는 데이터가 샘플링되고 보존되는 방식에 대한 완전한 제어를 원했습니다. 결정적 샘플링은 빠르게 시작하고 실행하는 데 도움이 되었지만 계약 한도 미만을 유지하면서 스마트 동적 샘플링을 사용하여 더 많은 "흥미로운" 추적(예: 오류, 느린 요청)을 선택적으로 유지하고 싶었습니다.
정확한 데이터 시각화 : 우리가 사용한 샘플링 기술이 무엇이든 가관측성 도구가 시각화에서 "참" 근사치를 노출하여 투명하게 처리하도록 하고 싶었습니다. 각 공급업체는 이 문제에 다르게 접근했습니다. 일부 공급업체는 오류율, 볼륨 등과 같은 주요 지표에 대한 메트릭을 추론하기 위해 모든 데이터를 글로벌 수집기로 보내야 합니다. 이는 풍부한 계측으로 생성된 방대한 양의 데이터를 고려할 때 우리에게 선택 사항이 아니었습니다.
가격 책정 : 우리는 도구에서 얻을 수 있는 가치와 상관관계가 있는 간단하고 예측 가능한 가격 책정 스키마를 원했습니다. 보유 및 노출된 데이터 양에 대한 비용 청구는 공정해 보였습니다.
참여 메트릭 : 우리는 공급업체가 좋은 파트너가 되기를 원했으며 주요 사용 메트릭과 참여 수준을 노출하여 도구의 채택 및 효율성을 추적하는 데 도움이 되기를 원했습니다.
완벽한 공급업체는 없으므로 약간의 타협을 할 준비가 되어 있습니다. 결국 우리는 Honeycomb이 우리가 식별한 주요 워크플로에 대해 더 잘 작동했을 뿐만 아니라 샘플링, 가격 및 사용 메트릭에 대한 확인란을 선택하여 비용이 많이 드는 공급업체 마이그레이션을 피했다고 결론지었습니다.
1년 간의 힘든 작업 끝에 우리는 관찰 가능성 프로그램의 기술적인 부분을 완료했습니다. 이것이 우리가 달성한 것입니다:
- 우리의 주요 모놀리스 애플리케이션은 고품질 속성이 풍부한 트레이스로 자동 계측되었습니다.
- 엔지니어들은 코드에 맞춤형 계측을 추가할 수 있는 몇 가지 편리한 방법을 가지고 있었습니다.
- 우리는 데이터를 동적으로 샘플링하고 "흥미로운" 흔적을 더 많이 유지하기 위해 Honeycomb Refinery를 배포했습니다. 보다 세분화된 제어를 위해 엔지니어가 사용자 지정 보관 규칙을 구성하도록 권장했습니다. 가장 가치 있는 거래를 위해, 그리고 경제적으로 실현 가능한 경우, 우리는 사람들에게 필요한 데이터를 제공하기 위해 100% 보존을 제공했습니다.
4단계: 채택 증가
Honeycomb에 전념하고 데이터 파이프라인에 대한 작업을 완료한 후 우리는 다시 활성화에 초점을 맞췄습니다. 관찰 가능성의 문화를 구축하려면 사람들이 쉽게 참여할 수 있도록 해야 합니다. 다음은 팀이 새로운 관찰 가능성 도구를 채택하는 데 도움이 된 몇 가지 방법입니다.
개발 환경에서 추적
엔지니어가 추적 계측에 익숙해지고 코드에 추가하도록 장려하기 위해 Honeycomb에 노출된 추적을 사용하여 로컬 개발 환경에서 선택적 추적을 제공했습니다. 이것은 사람들이 코드가 생산에 들어갈 때 보는 것과 똑같은 방식으로 새로운 사용자 정의 계측을 시각화하는 데 도움이 되었습니다.
로그는 읽고 해석하기 어려울 수 있지만 추적 보기는 훨씬 더 구조화되고 구성됩니다.
Slackbot 쿼리 단축키
생산에 문제가 있을 때 마지막으로 원하는 것은 올바른 쿼리를 찾기 위해 노력하는 것입니다. "웹 성능을 보여주세요" 메시지에 맞춤형 봇 반응을 추가했습니다. Slackbot 링크를 따라가면 서비스별로 분류된 웹 엔드포인트 성능이 열립니다.
관찰 가능성 도구 내에서 인기 있는 쿼리에 대한 바로 가기를 제공하는 Slackbot으로 관찰 가능성 워크플로를 간소화합니다.
5단계: 반성과 다음 단계
채택 측정
관측 가능성 도구에 대한 투자 수익(ROI)을 측정하는 것은 어렵습니다. 활성 사용자 수를 추적하는 것은 엔지니어가 도구에 참여하는 빈도를 나타내는 좋은 지표이며 Honeycomb의 사용 메트릭에서 많은 이점을 얻었습니다.
이 차트는 관측 가능성 활성화가 시작된 이후 활성 Honeycomb 사용자 수의 증가를 보여줍니다.
우리는 더 나아가 이러한 계약의 유용성을 측정했습니다. 우리는 관찰 가능성 도구에서 얻은 통찰력이 가치가 있다면 사람들이 그것을 동료들과 공유할 것이라고 가정했습니다. 우리의 엔지니어링 워크플로는 Github 문제에 크게 의존하므로 Honeycomb이 언급되거나 연결된(추적, 쿼리 결과 등) 문제 또는 pull 요청의 수를 채택 지표에 대한 프록시로 계산하기로 결정했습니다. 2021년 말에 활성화를 두 배로 늘리면서 Honeycomb을 언급하는 문제의 수가 폭발적으로 증가하는 것을 관찰하여 우리가 올바른 방향으로 가고 있음을 증명했습니다.
제목 또는 설명에 Honeycomb이 언급된 GitHub 문제 수를 보여주는 막대 차트
예상치 못한 워크플로
견고한 관찰 가능성 기반을 구축하면 이전에는 상상할 수 없었던 워크플로가 가능해졌습니다. 다음은 우리가 가장 좋아하는 것입니다:
알림 비용 프로그램 : 우리는 모든 트래픽을 추적하고 SQL 쿼리, Elasticsearch 요청 등에 대한 범위를 가지고 있기 때문에 인프라의 개별 공유 부분(예: 데이터베이스 클러스터) 사용의 급증을 조사하고 단일 고객에게 귀속할 수 있습니다. 이 데이터를 개별 인프라 구성 요소의 비용과 일치시키면 우리가 제공하는 모든 거래에 대략적인 가격표를 붙일 수 있습니다. 관찰 가능성은 예기치 않게 인프라 비용 프로그램의 필수 구성 요소가 되었습니다.
보안 감사 개선 : 선택한 트랜잭션을 100% 보존할 수 있어 프로덕션 데이터 콘솔과의 모든 상호 작용을 보존할 수 있어 보안이 고객 데이터에 대한 액세스에 대한 더 나은 가시성을 확립하는 데 도움이 되었습니다.
무엇 향후 계획?
관찰 가능성의 문화를 구축하는 것은 계속해서 기술 프로그램의 일부가 될 것입니다. 우리는 온보딩 자료를 개선하고, 추적을 통해 관찰 가능성을 R&D 운영에 추가하고, 프런트 엔드 계측을 탐색하는 데 중점을 둘 것입니다.
우리 팀에 합류하는 데 관심이 있으세요? 여기에서 공개 엔지니어링 역할을 확인하십시오.