Jak nasza infrastruktura rozwija się wraz z naszymi klientami

Opublikowany: 2022-06-03

Poważnie podchodzimy do zapewniania jak najlepszych wrażeń klientom dzięki naszemu systemowi operacyjnemu Engagement. Mamy prawdziwie globalne ambicje, aby przybliżyć naszą misję uczynienia biznesu internetowego osobistym dla największych klientów korporacyjnych na całym świecie.

Ta ambicja znajduje odzwierciedlenie w sposobie, w jaki projektujemy i budujemy infrastrukturę obsługującą platformę Intercom. Budujemy na dłuższą metę – oznacza to domyślną niezawodność i możliwość dostosowania się do masowej skali wraz z rozwojem.

Intercom rozwija się i będzie się rozwijał – wielu z naszych najdłużej działających klientów ewoluowało wraz z nami przez lata. Ponieważ ci obecni klienci rozrastali się, a my witaliśmy coraz większych klientów, zawsze skupialiśmy się na mówieniu „tak” na skalę.

Jest to trzeci post z serii badającej sposoby, w jakie Intercom skalował kluczowe funkcje, aby wspierać potrzeby klientów korporacyjnych.

Rozwijamy się razem z naszymi klientami

  • Chcesz obsługiwać wiele milionów aktywnych użytkowników. Czy domofon może to zrobić?
  • Musisz przechowywać wiele milionów rekordów użytkowników. Czy domofon może to zrobić?
  • Masz wiele tysięcy aktywnych agentów, których potrzebujesz do działania w swoim miejscu pracy. Czy domofon sobie z tym poradzi?

Tak na wszystkie powyższe.

Obecnie nasze systemy dynamicznie skalują się, aby obsłużyć około 50 000 żądań internetowych na sekundę w szczytowym momencie, 26 000 zadań w tle na sekundę i 11 000 żądań publicznych interfejsów API na sekundę – co pokazuje naszą zdolność do ciągłego skalowania w celu spełnienia wymagań nowoczesnych przedsiębiorstw.

Chcemy dopasować się do Twoich ambicji. Oznacza to, że jesteśmy w stanie sprostać ogromnym obciążeniom w sposób niezawodny i wydajny oraz stale je rozszerzać wraz z rozwojem naszych klientów. Chcemy prawdziwie współpracować z naszymi klientami, aby mieć pewność, że rozwiązujemy ich problemy na dużą skalę przez długi czas.

W Intercom staramy się uruchamiać mniej oprogramowania

Opieramy się wyłącznie na bardzo małym zestawie podstawowych technologii. To pozwala nam rozwijać zespoły doświadczonych ekspertów dziedzinowych, aby wspierać i umożliwiać inżynierom produktu podczas budowania następnej generacji interkomów oraz zapewniać światowej klasy narzędzia do obserwacji, skalowanie, niezawodność i domyślne wzorce budowania.

Nasze oprzyrządowanie pozwala na wysoką dostępność

Współpracujemy wyłącznie z AWS jako naszym dostawcą usług w chmurze i obecnie oferujemy usługi hostingu danych w trzech różnych globalnych regionach – USA, UE i Australii – każdy zaprojektowany w wielu strefach dostępności w celu zapewnienia wysokiej dostępności.

Nasza aplikacja dla członków zespołu to frontend Ember.js wspierany przez monolit Ruby on Rails . Aplikacja Rails jest rdzeniem Intercomu i tego, co wdrażamy dla tysięcy pracowników internetowych, API i asynchronicznych w dedykowanych klastrach dla poszczególnych funkcji.

„Każdego roku w Czarny Piątek, gdy wielu naszych klientów osiąga najbardziej pracowity okres, nasza infrastruktura skaluje się tak, aby dopasować się bez interwencji człowieka”

Klastry te automatycznie skalują się do obsługi żądań klientów, gdy każdego dnia przechodzimy przez szczyty i dołki ruchu klientów. Na przykład każdego roku w Czarny Piątek, gdy wielu naszych klientów kończy swój najbardziej pracowity okres, nasza infrastruktura skaluje się tak, aby dopasować się bez interwencji człowieka.

Nasze narzędzia do obserwacji pozwalają nam ściśle monitorować, w jaki sposób obsługujemy ruch

Nasze narzędzia do obserwacji zapewniają, że trzymamy rękę na pulsie, jeśli chodzi o to, jak wydajnie i skutecznie obsługujemy ruch w przeliczeniu na klienta. Ściśle współpracujemy również z AWS w zakresie nowych technologii i podejść zaprojektowanych w celu zapewnienia przyszłego szybkiego rozwoju.

Oprócz standardowych metryk i rejestrowania, nasz monolit Rails jest automatycznie wyposażony w wysokiej jakości, bogate w atrybuty ślady. Dzięki temu inżynierowie mogą obserwować produkcję bez konieczności pisania dodatkowego kodu.

Nasz potok obserwowalności jest oparty na rafinerii Honeycomb i dynamicznie pobiera próbki cennych żądań, aby domyślnie zachować interesujące ślady (np. błąd klienta). Mamy również możliwość skonfigurowania niestandardowych reguł dla pełnej kontroli próbkowania.

„Wspieramy zachowanie 100%, aby zapewnić inżynierom wszystkie dane, których potrzebują, gdy opracowujemy nowe funkcje lub debugujemy problemy produkcyjne”

Co najważniejsze, w przypadku najbardziej wartościowych transakcji wspieramy zachowanie 100%, aby zapewnić inżynierom wszystkie dane, których potrzebują podczas tworzenia nowych funkcji lub debugowania problemów produkcyjnych. Dodatkowo, ponieważ oznaczamy wszystkie ślady identyfikatorem klienta autora wniosku, możemy zagłębić się w to, jak każdy z naszych klientów korzysta z interkomu.

Różne magazyny danych umożliwiają optymalizację w różnych przypadkach użycia

Prowadzimy kilka różnych typów datastore w celu obsługi różnych wymagań dotyczących odczytu i zapisu danych w aplikacjach:

  • AWS Aurora MySQL : Nasze magazyny danych będące źródłem prawdy są w dużej mierze oparte na AWS Aurora MySQL. W ramach naszego początkowego skalowania podzieliliśmy bazy danych według funkcji. Gdy poszczególne klastry baz danych rozrosły się do największych instancji dostarczonych przez AWS Aurora, uruchomiliśmy program do tworzenia baz danych dla klientów, które znajdują się w wielu klastrach mniejszych klastrów baz danych, które możemy teraz skalować zarówno w poziomie, jak i w pionie. Prace te zostały ukończone na początku 2020 roku, a architektura pozwala nam skalować nasze największe stoły w nieskończoność.
  • Elasticache : Przed naszymi bazami danych mamy warstwę pamięci podręcznej memcached zbudowaną na bazie Elasticache.
  • DynamoDB : Używamy DynamoDB oszczędnie w przypadku bardzo wysokiego odczytu i zapisu .

Wyszukiwanie jest nieodzowną częścią Interkomu

Wyszukiwanie stanowi podstawę całego szeregu podstawowych funkcji interkomu – widoków skrzynki odbiorczej , interfejsu API , artykułów , listy użytkowników, wiadomości wychodzących , raportowania , botów rozwiązywania problemów oraz naszych wewnętrznych systemów rejestrowania.

Wyszukiwanie jest w dużej mierze oparte na wielu klastrach Elasticsearch dla poszczególnych funkcji . Stworzyliśmy wiele narzędzi , które automatyzują najbardziej pracochłonne zadania Elasticsearch, w tym łatanie zabezpieczeń, uaktualnianie i wymianę zdegradowanego sprzętu. Zbudowaliśmy również narzędzia, które pozwalają nam przeprowadzać migracje (podobnie jak MySQL) na indeksy.

„Nasza globalna infrastruktura została zaprojektowana tak, aby obsługiwać setki tysięcy firm, dużych i małych”

Oprócz poprawy zdolności naszych inżynierów do iteracji schematu indeksów na dużą skalę, pozwala nam to podzielić duże indeksy na mniejsze, które są łatwiejsze w zarządzaniu i zapewniają wyższą wydajność i stabilność. Daje nam to również kolejny wymiar, w którym możemy skalować nasze klastry Elasticsearch. Podobnie jak nasze podejście do shardingu MySQL, daje nam to wiele lat skalowania pasa startowego.

Globalna infrastruktura Intercomu jest zbudowana na skalę internetową

Nasza globalna infrastruktura jest zaprojektowana tak, aby obsługiwać setki tysięcy firm, dużych i małych, a rygor, jaki stosujemy do zarządzania naszymi operacjami infrastrukturalnymi, zapewnia płynne działanie.

Podczas planowania działań skalowanie jest kluczowym elementem, który bierze pod uwagę każdy zespół. Nasze regularne przeglądy operacyjne są prowadzone przez ekspertów na wielu poziomach w naszych zespołach zaplecza, gdzie oceniamy metryki infrastruktury i sprawdzamy wymagania dotyczące przepustowości.

Ciężko i mądrze pracujemy, aby tak pozostało, i dlatego nasi klienci nam ufają – od najmniejszych startupów po największe światowe przedsiębiorstwa.

Odkryj inne posty z serii Intercom for Enterprise