Bagaimana skala infrastruktur kami bersama pelanggan kami

Diterbitkan: 2022-06-03

Kami serius dalam memberikan pengalaman pelanggan terbaik dengan Engagement OS kami. Kami benar-benar memiliki ambisi global untuk membawa misi kami menjadikan bisnis internet pribadi bagi pelanggan perusahaan terbesar di seluruh dunia.

Ambisi ini tercermin dalam cara kami merancang dan membangun infrastruktur yang mendukung platform Intercom. Kami membangun untuk jangka panjang – itu berarti memastikan keandalan secara default, dan kemampuan untuk mengakomodasi skala besar seiring pertumbuhan kami.

Interkom telah berkembang, dan hanya akan terus berkembang – banyak pelanggan terlama kami telah berevolusi bersama kami selama bertahun-tahun. Karena pelanggan yang ada ini telah tumbuh, dan kami telah menyambut pelanggan yang semakin besar, kami selalu fokus untuk mengatakan ya untuk meningkatkan.

Ini adalah posting ketiga dalam seri yang mengeksplorasi cara Intercom meningkatkan fungsi utama untuk mendukung kebutuhan pelanggan perusahaan.

Kami tumbuh bersama pelanggan kami

  • Anda ingin melayani jutaan pengguna aktif. Bisakah Interkom melakukan itu?
  • Anda perlu menyimpan jutaan catatan pengguna. Bisakah Interkom melakukan itu?
  • Anda memiliki ribuan agen aktif yang Anda inginkan untuk beraksi di ruang kerja Anda. Bisakah Intercom mengatasinya?

Ya untuk semua hal di atas.

Saat ini, sistem kami secara dinamis menskalakan untuk melayani sekitar 50.000 permintaan web per detik pada puncaknya, 26.000 pekerjaan latar belakang per detik, dan 11.000 permintaan API publik per detik – menunjukkan kemampuan kami untuk terus menskala untuk memenuhi persyaratan perusahaan modern.

Kami ingin mencocokkan ambisi Anda. Itu berarti mampu mengakomodasi beban kerja yang besar dengan cara yang andal dan berkinerja tinggi, dan terus mengembangkannya seiring pertumbuhan pelanggan bersama kami. Kami ingin benar-benar bermitra dengan pelanggan kami untuk memastikan kami memecahkan masalah mereka, dalam skala besar, untuk jangka panjang.

Di Intercom, kami bertujuan untuk menjalankan lebih sedikit perangkat lunak

Kami secara eksklusif membangun di atas seperangkat teknologi inti yang sangat kecil. Hal ini memungkinkan kami untuk mengembangkan tim pakar domain dalam untuk mendukung dan memungkinkan insinyur produk saat mereka membangun Intercom generasi berikutnya, dan menyediakan alat observabilitas kelas dunia, penskalaan, keandalan, dan pola pembangunan yang aman secara default.

Perkakas kami memungkinkan ketersediaan tinggi

Kami bekerja secara eksklusif dengan AWS sebagai penyedia layanan cloud kami dan saat ini menyediakan penawaran hosting data di tiga wilayah global yang berbeda – AS, UE, dan Australia – masing-masing dirancang di beberapa zona ketersediaan untuk ketersediaan tinggi.

Aplikasi rekan tim kami adalah frontend Ember.js yang didukung oleh monolit Ruby on Rails . Aplikasi Rails adalah inti dari Intercom dan yang kami terapkan ke ribuan web, API, dan pekerja asinkron pada kluster per fungsi khusus.

“Setiap tahun pada Black Friday, saat banyak pelanggan kami mencapai periode tersibuk mereka, infrastruktur kami meningkat tanpa campur tangan manusia”

Cluster ini secara otomatis menskalakan untuk melayani permintaan pelanggan saat kami melewati puncak dan palung lalu lintas pelanggan setiap hari. Misalnya, setiap tahun pada Black Friday, saat banyak pelanggan kami mencapai periode tersibuk mereka, infrastruktur kami disesuaikan tanpa campur tangan manusia.

Alat observabilitas kami memungkinkan kami untuk memantau dengan cermat bagaimana kami melayani lalu lintas

Alat observabilitas kami memastikan bahwa kami selalu siap dengan seberapa efisien dan efektif kami melayani lalu lintas berdasarkan basis per pelanggan. Kami juga bermitra erat dengan AWS pada teknologi dan pendekatan baru yang dirancang untuk membuktikan pertumbuhan pesat kami di masa mendatang.

Selain metrik dan logging standar, monolit Rails kami dilengkapi secara otomatis dengan jejak berkualitas tinggi dan kaya atribut. Ini memungkinkan para insinyur untuk mengamati produksi tanpa perlu menulis kode tambahan apa pun.

Pipa observability kami didasarkan pada Honeycomb Refinery dan secara dinamis mengambil sampel permintaan berharga untuk mempertahankan jejak yang menarik (misalnya kesalahan yang dihadapi pelanggan) secara default. Kami juga memiliki kemampuan untuk mengonfigurasi aturan khusus untuk kontrol pengambilan sampel penuh.

“Kami mendukung retensi 100% untuk memberikan semua data yang dibutuhkan engineer saat kami membangun fitur baru atau men-debug masalah produksi”

Yang terpenting, untuk transaksi yang paling berharga, kami mendukung retensi 100% untuk memberikan semua data yang dibutuhkan engineer saat kami membangun fitur baru atau men-debug masalah produksi. Selain itu, saat kami menandai semua jejak dengan ID pelanggan dari pembuat permintaan, kami dapat menyelami lebih dalam bagaimana pelanggan kami mengalami Intercom.

Penyimpanan data yang berbeda memungkinkan pengoptimalan di berbagai kasus penggunaan

Kami menjalankan beberapa jenis penyimpanan data yang berbeda untuk mendukung berbagai persyaratan baca dan tulis data kami di seluruh aplikasi:

  • AWS Aurora MySQL : Sumber penyimpanan data kebenaran kami sebagian besar dibangun di atas AWS Aurora MySQL. Sebagai bagian dari penskalaan awal kami, kami membagi database berdasarkan fungsi. Setelah kluster database individual berkembang menjadi instans terbesar yang disediakan AWS Aurora, kami memulai program untuk membangun database per pelanggan yang berada di beberapa kluster dari kluster database yang lebih kecil, yang sekarang dapat kami skalakan baik secara horizontal maupun vertikal. Pekerjaan ini selesai pada awal 2020 dan arsitekturnya memungkinkan kami untuk menskalakan tabel terbesar kami tanpa batas.
  • Elasticache : Di depan database kami, kami memiliki lapisan caching memcached yang dibangun di atas Elasticache.
  • DynamoDB : Kami menggunakan DynamoDB dengan hemat untuk kasus penggunaan baca dan tulis yang sangat tinggi .

Pencarian adalah bagian tak terpisahkan dari Intercom

Pencarian mendukung seluruh fitur inti Interkom – Tampilan Kotak Masuk , API , Artikel , daftar pengguna, Keluar , Pelaporan , Bot Resolusi , dan sistem pencatatan internal kami.

Pencarian sebagian besar didukung oleh banyak cluster Elasticsearch per fungsi . Kami telah membuat banyak alat yang mengotomatiskan tugas-tugas paling sulit dari Elasticsearch termasuk patch keamanan, peningkatan, dan penggantian perangkat keras yang rusak. Kami juga telah membuat alat yang memungkinkan kami menjalankan migrasi (dengan cara yang mirip dengan MySQL) terhadap indeks.

“Infrastruktur global kami dirancang untuk melayani ratusan ribu perusahaan, besar dan kecil”

Selain meningkatkan kemampuan teknisi kami untuk beralih pada skema indeks dalam skala besar, ini memungkinkan kami untuk memecah indeks besar menjadi indeks yang lebih kecil yang lebih mudah untuk dikelola dan memberikan kinerja dan stabilitas yang lebih tinggi. Ini juga memberi kami dimensi lebih lanjut di mana kami dapat menskalakan klaster Elasticsearch kami. Seperti pendekatan sharding MySQL kami, ini memberi kami landasan penskalaan selama bertahun-tahun.

Infrastruktur global Intercom dibangun untuk skala internet

Infrastruktur global kami dirancang untuk melayani ratusan ribu perusahaan, besar dan kecil, dan ketelitian yang kami terapkan untuk mengelola operasi infrastruktur kami memastikan semuanya berjalan lancar.

Saat melakukan pemetaan jalan, penskalaan adalah masukan utama yang dipertimbangkan oleh setiap tim. Tinjauan operasional reguler kami disumbangkan oleh para ahli di berbagai tingkatan di seluruh tim backend kami di mana kami menilai metrik infrastruktur dan meninjau persyaratan kapasitas.

Kami bekerja keras dan cerdas untuk mempertahankannya, dan itulah sebabnya pelanggan kami mempercayai kami – dari perusahaan rintisan terkecil hingga perusahaan terbesar di dunia.

Temukan posting lain di seri Intercom for Enterprise