고객과 함께 인프라를 확장하는 방법

게시 됨: 2022-06-03

우리는 Engagement OS로 최고의 고객 경험을 제공하는 데 진지합니다. 우리는 인터넷 비즈니스를 전 세계의 가장 큰 기업 고객에게 개인화한다는 우리의 사명을 가져오려는 진정한 글로벌 야망을 가지고 있습니다.

이러한 야망은 Intercom 플랫폼을 지원하는 인프라를 설계하고 구축하는 방식에 반영됩니다. 우리는 장기적으로 구축하고 있습니다. 즉, 기본적으로 안정성을 보장하고 성장에 따라 대규모 규모를 수용할 수 있는 능력을 보장합니다.

Intercom은 성장해 왔으며 앞으로도 계속 그렇게 될 것입니다. 우리의 오랜 고객 중 많은 수가 수년 동안 우리와 함께 발전해 왔습니다. 이러한 기존 고객이 성장하고 더 많은 고객을 환영함에 따라 우리는 항상 확장에 예라고 말하는 데 집중해 왔습니다.

이것은 Intercom이 기업 고객의 요구를 지원하기 위해 주요 기능을 확장한 방법을 탐구하는 시리즈의 세 번째 게시물입니다.

고객과 함께 성장하고 있습니다

  • 수백만 명의 활성 사용자에게 서비스를 제공하려고 합니다. 인터콤이 할 수 있습니까?
  • 수백만 개의 사용자 레코드를 저장해야 합니다. 인터콤이 할 수 있습니까?
  • 작업 공간에서 작업을 원하는 수천 명의 활성 에이전트가 있습니다. 인터콤이 처리할 수 있습니까?

위의 모든 것에 예.

오늘날 당사 시스템은 최대 초당 약 50,000개의 웹 요청, 초당 26,000개의 백그라운드 작업, 초당 11,000개의 공개 API 요청을 처리하도록 동적으로 확장되어 현대 기업의 요구 사항을 충족하도록 지속적으로 확장할 수 있는 능력을 보여줍니다.

우리는 당신의 야망에 부응하고 싶습니다. 즉, 안정적이고 성능이 뛰어난 방식으로 거대한 워크로드를 수용할 수 있고 고객이 우리와 함께 성장함에 따라 지속적으로 확장할 수 있습니다. 우리는 장기적으로 대규모로 고객의 문제를 해결할 수 있도록 고객과 진정으로 협력하고 싶습니다.

Intercom에서는 더 적은 소프트웨어를 실행하는 것을 목표로 합니다.

우리는 매우 적은 수의 핵심 기술을 기반으로 독점적으로 구축합니다. 이를 통해 우리 는 심층 도메인 전문가 팀 을 개발 하여 차세대 Intercom을 구축할 때 제품 엔지니어를 지원 및 활성화하고 세계적 수준의 관찰 가능성 도구, 확장성, 안정성 및 기본적으로 안전한 빌드 패턴을 제공할 수 있습니다.

우리의 도구는 고가용성을 허용합니다

우리는 클라우드 서비스 제공업체로서 AWS와 독점적으로 협력하고 있으며 현재 미국, EU, 호주 등 3개의 서로 다른 글로벌 지역에서 데이터 호스팅 제품을 제공하고 있습니다.

우리 팀 동료 앱은 Ruby on Rails 모놀 리스가 지원하는 Ember.js 프론트엔드 입니다. Rails 애플리케이션은 Intercom의 핵심이며 우리가 기능별 전용 클러스터에서 수천 개의 웹, API 및 비동기 작업자에게 배포하는 것입니다.

"매년 블랙 프라이데이에 많은 고객이 가장 바쁜 시기를 겪을 때 사람의 개입 없이 인프라가 확장됩니다."

이러한 클러스터는 매일 고객 트래픽의 최고점과 최저점을 통과할 때 고객 요청을 처리하도록 자동으로 확장됩니다. 예를 들어, 매년 블랙 프라이데이가 되면 많은 고객이 가장 바쁜 시기를 겪을 때 사람의 개입 없이 인프라가 확장됩니다.

관찰 가능성 도구를 사용하면 트래픽을 제공하는 방법을 면밀히 모니터링할 수 있습니다.

우리의 관찰 가능성 도구는 우리가 고객별로 트래픽을 얼마나 효율적이고 효과적으로 제공하고 있는지에 대한 정보를 제공합니다. 또한 AWS의 빠른 성장을 미래에 증명할 수 있도록 설계된 새로운 기술 및 접근 방식에 대해 AWS와 긴밀하게 협력하고 있습니다.

표준 메트릭 및 로깅 외에도 Rails 모노리스는 고품질의 풍부한 속성 추적으로 자동 계측됩니다. 이를 통해 엔지니어는 추가 코드를 작성할 필요 없이 생산을 관찰할 수 있습니다.

우리의 관찰 가능성 파이프라인은 Honeycomb Refinery 를 기반 으로 하며 기본적으로 흥미로운 추적(예: 고객 대면 오류)을 유지하기 위해 귀중한 요청을 동적으로 샘플링합니다. 또한 전체 샘플링 제어를 위해 사용자 지정 규칙을 구성할 수 있습니다.

"우리는 엔지니어에게 새로운 기능을 구축하거나 생산 문제를 디버그할 때 필요한 모든 데이터를 제공하기 위해 100% 보존을 지원합니다."

결정적으로, 가장 가치 있는 거래에 대해 100% 보존을 지원하여 엔지니어에게 새로운 기능을 구축하거나 프로덕션 문제를 디버그할 때 필요한 모든 데이터를 제공합니다. 또한 요청 발신자의 고객 ID로 모든 추적에 태그를 지정하면 고객이 어떻게 인터콤을 경험하고 있는지 자세히 알아볼 수 있습니다.

다양한 데이터 저장소를 통해 다양한 사용 사례에서 최적화 가능

애플리케이션 전반에 걸쳐 다양한 데이터 읽기 및 쓰기 요구 사항을 지원하기 위해 여러 유형의 데이터 저장소를 실행합니다.

  • AWS Aurora MySQL : 당사의 원본 데이터 저장소는 대부분 AWS Aurora MySQL을 기반으로 구축됩니다. 초기 확장의 일부로 기능별로 데이터베이스를 분할했습니다. 개별 데이터베이스 클러스터가 AWS Aurora가 제공하는 가장 큰 인스턴스로 성장한 후 우리는 더 작은 데이터베이스 클러스터의 여러 클러스터에 상주하는 고객별 데이터베이스를 구축하는 프로그램을 시작했으며 이제 수평 및 수직으로 확장할 수 있습니다. 이 작업 은 2020년 초에 완료되었으며 아키텍처를 통해 가장 큰 테이블을 무기한으로 확장할 수 있습니다.
  • Elasticache : 우리 데이터베이스 앞에는 Elasticache 위에 구축된 memcached 캐싱 레이어가 있습니다.
  • DynamoDB : 매우 높은 읽기 및 쓰기 사용 사례에는 DynamoDB를 드물게 사용합니다 .

검색은 인터콤에서 없어서는 안될 부분입니다.

검색은 Inbox Views , API , Articles , 사용자 목록, Outbound , Reporting , Resolution Bot 및 내부 로깅 시스템과 같은 핵심 Intercom 기능의 전체 호스트를 뒷받침 합니다.

검색은 대부분 기능별 Elasticsearch 클러스터에 의해 구동됩니다. 우리는 보안 패치, 업그레이드 및 성능 저하된 하드웨어 교체를 포함하여 Elasticsearch의 가장 힘든 작업을 자동화하는 많은 도구 를 구축했습니다. 또한 인덱스에 대해 마이그레이션(MySQL과 유사한 방식)을 실행할 수 있는 도구를 구축했습니다.

"우리의 글로벌 인프라는 크고 작은 수십만 개의 회사에 서비스를 제공하도록 설계되었습니다."

대규모 인덱스 스키마를 반복하는 엔지니어의 능력을 향상시킬 뿐만 아니라 큰 인덱스를 관리하기 쉽고 더 높은 성능과 안정성을 제공하는 더 작은 인덱스로 나눌 수 있습니다. 또한 Elasticsearch 클러스터를 확장할 수 있는 추가 차원을 제공합니다. 우리의 MySQL 샤딩 접근 방식과 마찬가지로 이것은 우리에게 수년간의 확장 활주로를 제공합니다.

Intercom의 글로벌 인프라는 인터넷 규모에 맞게 구축되었습니다.

당사의 글로벌 인프라는 크고 작은 수십만 회사에 서비스를 제공하도록 설계되었으며 인프라 운영 관리에 적용하는 엄격함은 일이 원활하게 실행되도록 보장합니다.

로드맵을 작성할 때 확장은 모든 팀이 고려하는 핵심 입력입니다. 정기적인 운영 검토는 인프라 메트릭을 평가하고 용량 요구 사항을 검토하는 백엔드 팀의 여러 수준에 있는 전문가의 도움을 받습니다.

우리는 이를 유지하기 위해 열심히 일하고 있으며, 이것이 바로 가장 작은 신생 기업에서 세계 최대 규모의 기업에 이르기까지 고객이 우리를 신뢰하는 이유입니다.

Intercom for Enterprise 시리즈의 다른 게시물 살펴보기