Esnek bir sistem inşa etmek: Intercom'da gözlemlenebilirlik yolculuğumuz
Yayınlanan: 2022-07-14Intercom'da her şeyden önce müşteri deneyimine odaklanıyoruz - hizmetimizin kullanılabilirliği ve performansı bizim önceliğimizdir. Bu, ekiplerimiz ve sistemlerimiz arasında güçlü bir gözlemlenebilirlik kültürü gerektirir.
Sonuç olarak, uygulamamızın güvenilirliğine çok yatırım yapıyoruz. Ancak öngörülemeyen başarısızlıklar kaçınılmazdır ve meydana geldiklerinde onları düzelten insanlardır.
Sosyo-teknik bir sistem işletiyoruz ve bu sistemin zorluklarla karşılaştığında kendini toparlama yeteneğine dayanıklılık denir. Dayanıklılığın en önemli bileşenlerinden biri, insanların çalıştırdıkları sistemlerin içine “bakmasını” sağlamak için attığımız adımlar olan gözlemlenebilirliktir.
Bu gönderi, daha güçlü bir gözlemlenebilirlik kültürü oluşturmanın yolunu ve bu süreçte öğrendiğimiz dersleri keşfedecek.
Intercom'da gözlemlenebilirlik ile ne demek istiyoruz?
Intercom'da öğrenmek için gönderiyoruz. Üretim ortamımız, kodumuzun, altyapımızın, üçüncü taraf bağımlılıklarımızın ve müşterilerimizin nesnel bir gerçeklik yaratmak için bir araya geldiği yerdir - çalışmamızın etkisini öğrenmek ve doğrulamak için tek yer orasıdır. Gözlenebilirliği, insanların üretim hakkında sorular sorması ve yanıtlar almasıyla oluşan sürekli bir süreç olarak tanımlıyoruz*.
Bunu biraz daha parçalayalım:
- Sürekli süreç: Başarılı gözlemlenebilirlik, insanların mümkün olduğunca sık gözlem yapması anlamına gelir.
- Üretimle ilgili sorular: Tanımımızın geniş, genel ve hitap ettiğimiz geniş iş akışları kapsamını temsil etmesini istedik.
- Cevaplar*: Yıldız işaretine dikkat edin. Hiçbir araç size cevap vermez, sadece gerçek cevapları bulmak için takip edebileceğiniz müşteri adayları sunar. Kendi zihinsel modellerinizi ve çalıştırdığınız sistemleri anlamanız gerekir.
Aşama 1: Sorun ve çözüm
Kendi gözlemlenebilirlik tanımımızla donanmış olarak mevcut uygulamalarımızı değerlendirdik ve bir sorun ifadesi oluşturduk. Yakın zamana kadar, gözlemlenebilirlik araçlarımız temel olarak metriklere dayanıyordu. Tipik bir iş akışı, çeşitli öznitelik kombinasyonları tarafından dilimlenmiş ve dilimlenmiş metriklere sahip grafiklerle dolu bir panoya bakmayı içeriyordu. İnsanlar korelasyon ararlar, ancak çoğu zaman içgörüleri yerine getirmeden ayrılırlar.
"Metriklerin eklenmesi ve anlaşılması kolaydır, ancak yüksek kardinalite öznitelikleri (ör. Müşteri Kimliği) eksiktir ve bu da bir araştırmayı tamamlamayı zorlaştırır"
Metriklerin eklenmesi ve anlaşılması kolaydır, ancak yüksek kardinalite öznitelikleri (ör. Müşteri Kimliği) eksiktir ve bu da bir araştırmayı tamamlamayı zorlaştırır. Önceden, bir avuç gözlemlenebilirlik şampiyonu, yüksek kardinalite bilgilerine erişmeye ve daha eksiksiz bir resim oluşturmaya çalışarak ikincil araçları (ör. günlükler, istisnalar vb.) kullanarak iş akışına devam ederdi. Bu beceri sürekli pratik gerektiriyordu – ürünü teslim etmekle meşgul olan ürün mühendislerinin çoğunluğu için gerçekçi olmayan bir istek.
Bu konsolide gözlemlenebilirlik deneyimi eksikliğini çözülmesi gereken bir sorun olarak belirledik. Herkesin üretim hakkında keyfi bir soru sormasının ve bir dizi bağlantısız, az kurulmuş ve pahalı araçta uzmanlaşmak zorunda kalmadan içgörüler elde etmesinin kolay olmasını istedik. Sorunu azaltmak için telemetri izlemeyi ikiye katlamaya karar verdik.
İzleri ikiye katlamadan önce kullandığımız tipik bir operasyonel gösterge panosu
Neden izler?
Herhangi bir gözlemlenebilirlik aracı, arkasında bir insan olan bir araçtır ve insanların iyi görselleştirmelere ihtiyacı vardır. Görselleştirmeye ne tür verilerin güç verdiği önemli değildir, yalnızca aracın farklı görselleştirmeler arasında sorunsuz bir şekilde geçiş yapmanıza ve sorun hakkında alternatif bakış açıları elde etmenize olanak sağlamasıdır.
İzler, diğer telemetri verilerine göre büyük bir avantaja sahiptir - neredeyse her türlü görselleştirmeyi desteklemek için işlemler hakkında yeterli bilgiyi kodlarlar. İzlerin üzerine gözlemlenebilirlik iş akışları oluşturmak, temel verileri veya aracı değiştirmeye gerek kalmadan sorunsuz bir konsolide deneyim sağlar.
İzler tarafından desteklenebilen bazı görselleştirme türleri
2. Aşama: İzleri uygulama
Intercom'da başarının neye benzediğine karar vererek ve yol boyunca ilerlemeyi izleyerek küçük başlıyoruz. Ana hedefimiz, izlemelerin gözlemlenebilirlik iş akışlarını daha verimli hale getireceğini doğrulamaktı. Bunun için de bir an önce izleri mühendislerin eline bırakmamız gerekiyordu.
"Uygulamamızı sıfırdan izlerle donatmak yerine, zaten bağımlılıklarda bulunan mevcut bir izleme kitaplığını kullandık"
Zamandan tasarruf etmek için, kavram kanıtlamamız için mevcut tedarikçimiz Honeycomb'u kullandık. Geçmişte yapılandırılmış etkinlikler için araçlarını kullanırken onlarla harika bir ilişki kurmuştuk.
Uygulamamızı sıfırdan izlemelerle donatmak yerine, zaten bağımlılıklarda bulunan mevcut bir izleme kitaplığını kullandık ve izleme verilerini Petek yerel biçimine dönüştürmek için küçük bir ayarlama yaptık. İşlediğimiz tüm işlemlerin ~%1'ini elinde tutan basit bir deterministik örnekleme ile başladık.
Takım arkadaşlarının izleri benimsemesini sağlama
Bir organizasyonu izlere doğru kaydırmak küçük bir başarı değildir. İzler, metriklerden veya günlüklerden daha karmaşıktır ve dik bir öğrenme eğrisine sahiptir. Enstrümantasyon, veri hattı ve araçların tümü önemlidir, ancak en büyük zorluk, ekip arkadaşlarınızın iz kullanımlarını en üst düzeye çıkarmasını sağlamaktır. Üretimde çalışan kavram kanıtımızla, hemen bir gözlemlenebilirlik kültürü oluşturmaya odaklanmaya başladık.
"Yalnızca mühendislere odaklanmadık - izlerin belirli sorunlarını çözmelerine nasıl yardımcı olabileceğini vurgulamak için yöneticiler, teknik program yöneticileri, güvenlik ekibi üyeleri ve müşteri destek temsilcileriyle konuştuk"
Müttefik bulmak başarının anahtarıydı. Gözlemlenebilirlik konusunda zaten yetenekli olan bir grup şampiyon oluşturduk. Varsayımlarımızı doğrulamaya yardımcı oldular ve takımlarında izlerle ilgili haberleri yaydılar. Ancak yalnızca mühendislere odaklanmadık - izlerin belirli sorunlarını çözmelerine nasıl yardımcı olabileceğini vurgulamak için yöneticiler, teknik program yöneticileri, güvenlik ekibi üyeleri ve müşteri destek temsilcileriyle konuştuk.
Mesajımızı uyarlamak, desteğin kilitlenmesine yardımcı oldu. Yeni takımların tanıtılması her zaman belirli bir risk taşır - potansiyeli göstererek ve insanları heyecanlandırarak başarı şansımızı artırdık.
Aşama 3: Doğru satıcıya karar vermek
Etkinleştirme programı başladığında, modern izleme merkezli satıcılara bakmaya başladık ve potansiyel adayları değerlendirmek için bir dizi kriter oluşturduk.
İş akışları : Keşif iş akışını en önemli olarak belirledik - mühendislerin üretim verilerini keyfi olarak dilimlemelerine ve zarlara ayırmalarına ve görselleştirmeler ve yüksek kardinalite öznitelikleri aracılığıyla içgörüler elde etmelerine olanak tanır. Bir sorunu teşhis etmenin büyük bir kısmı, onu tespit edebilmektir ve bu, “normal” in nasıl göründüğünü anlamak anlamına gelir. Sadece sorunlar ortaya çıktığında değil, mümkün olduğunca sık sorular sorarak mühendislerin üretimi keşfetmesini kolaylaştırmak istedik.

“Verilerin örneklenme ve saklanma şekli üzerinde tam kontrol istedik”
Örnekleme ve saklama kontrolleri : Verilerin örneklenme ve saklanma şekli üzerinde tam kontrol istedik. Deterministik örnekleme, hızlı bir şekilde ayağa kalkmamıza ve çalışmaya başlamamıza yardımcı oldu, ancak daha seçici olmak ve sözleşme sınırının altında kalırken akıllı dinamik örneklemeyi kullanarak daha fazla "ilginç" izleri (örn. hatalar, yavaş istekler) korumak istedik.
Doğru veri görselleştirmeleri : Kullandığımız örnekleme tekniği ne olursa olsun, gözlemlenebilirlik araçlarının görselleştirmelerde "doğru" yaklaşık sayıları göstererek bunu şeffaf bir şekilde ele aldığından emin olmak istedik. Her satıcı bu soruna farklı şekilde yaklaştı - bazıları hata oranı, hacim vb. gibi temel göstergeler için metrikler çıkarmak için tüm verileri küresel bir toplayıcıya göndermeyi gerektiriyor. Zengin enstrümantasyonumuz tarafından oluşturulan devasa veri hacmi göz önüne alındığında, bu bizim için bir seçenek değildi.
Fiyatlandırma : Araçtan alacağımız değerle ilişkili basit, öngörülebilir bir fiyatlandırma şeması istedik. Saklanan ve açığa çıkan veri miktarı için ücret almak adil görünüyordu.
Katılım metrikleri : Satıcının iyi bir ortak olmasını ve temel kullanım metriklerini ve katılım düzeylerini ortaya çıkararak aracın benimsenmesini ve etkinliğini izlememize yardımcı olmasını istedik.
Mükemmel bir satıcı yok, bu yüzden bazı tavizler vermeye hazır olun. Sonunda Honeycomb'un yalnızca belirlediğimiz ana iş akışı için daha iyi çalıştığına değil, aynı zamanda örnekleme, fiyatlandırma ve kullanım ölçütlerine ilişkin kutuları işaretlediğine karar verdik - bu nedenle maliyetli satıcı geçişinden kaçındık.
Zorlu bir çalışmanın ardından, gözlemlenebilirlik programının teknik bölümünü tamamlamıştık. Bu, elde ettiğimiz şeydi:
- Ana monolit uygulamamız, yüksek kaliteli, öznitelik açısından zengin izlerle otomatik olarak donatıldı.
- Mühendislerin, kodlarına özel enstrümantasyon eklemek için küçük bir dizi kullanışlı yöntemi vardı.
- Verileri dinamik olarak örneklemek ve "ilginç" izlerin çoğunu korumak için Honeycomb Rafinerisini devreye aldık. Mühendisleri, daha ayrıntılı denetim için özel saklama kuralları yapılandırmaya teşvik ettik. En değerli işlemler için ve ekonomik olarak mümkün olduğunda, insanlara ihtiyaç duydukları verileri sağlamak için %100 saklama teklifinde bulunduk.
4. Aşama: Kabulü artırma
Honeycomb'u taahhüt edip veri hattı üzerindeki çalışmaları tamamladıktan sonra odağımızı yeniden etkinleştirmeye kaydırdık. Bir gözlemlenebilirlik kültürü inşa etmek için, insanların dahil olmasını kolaylaştırmalısınız. Ekiplerin yeni gözlemlenebilirlik araçlarını benimsemesine yardımcı olduğumuz yöntemlerden bazıları şunlardır:
Geliştirme ortamında izleme
Mühendisleri izleme araçlarıyla tanıştırmak ve onları kodlarına eklemeye teşvik etmek için, Honeycomb'da açığa çıkan izlere sahip yerel geliştirme ortamından isteğe bağlı izlemeyi sunduk. Bu, insanların yeni özel enstrümantasyonu, kod üretime ulaştığında görecekleri şekilde görselleştirmelerine yardımcı oldu.
Günlüklerin okunması ve yorumlanması zor olabilir, oysa izleme görünümleri çok daha yapılandırılmış ve organize edilmiştir
Slackbot sorgu kısayolları
Üretimin başı belaya girdiğinde, isteyeceğiniz son şey doğru sorguyu bulmaktır. "Bana web performansını göster" mesajına özel bir bot tepkisi ekledik. Slackbot bağlantısının ardından, hizmete göre ayrılmış bir web uç noktaları performansı açılır.
Gözlenebilirlik araçlarımız içinde popüler bir sorguya kısayol sağlayan bir Slackbot ile gözlemlenebilirlik iş akışımızı kolaylaştırıyoruz
Aşama 5: Düşünceler ve sonraki adımlar
Benimseme ölçümü
Gözlemlenebilirlik araçları üzerinde yatırım getirisini (ROI) ölçmek zordur. Aktif kullanıcı sayısını takip etmek, mühendislerin takımlarla ne sıklıkta etkileşim kurduğunun iyi bir göstergesidir ve Honeycomb'un kullanım ölçümlerinden çok faydalandık.
Bu grafik, gözlemlenebilirlik etkinleştirme başladığından beri etkin Honeycomb kullanıcılarının sayısındaki artışı göstermektedir.
Daha da ileri gittik ve bu etkileşimlerin faydasını ölçtük. Gözlenebilirlik araçlarından elde edilen içgörüler değerli olsaydı, insanların bunları akranlarıyla paylaşacağını varsaydık. Mühendislik iş akışlarımız büyük ölçüde Github sorunlarına bağlı olduğundan, Honeycomb'un bahsedildiği veya bağlantılı olduğu (izleme, sorgu sonucu vb.) sorunların veya çekme isteklerinin sayısını benimseme metriği için bir proxy olarak saymaya karar verdik. 2021'in sonuna doğru etkinleştirmeyi ikiye katlarken Honeycomb'dan bahseden sorunların sayısında bir patlama gözlemleyerek doğru yolda olduğumuzu kanıtladık.
Başlıkta veya açıklamada Honeycomb'un geçtiği GitHub sorunlarının sayısını gösteren çubuk grafik
Beklenmeyen iş akışları
Sağlam bir gözlemlenebilirlik temeli oluşturmak, daha önce hayal bile edemediğimiz iş akışlarını etkinleştirdi. İşte favorilerimizden bazıları:
Bilgilendirme maliyeti programı : Tüm trafiği takip ettiğimiz ve SQL sorguları, Elasticsearch istekleri vb. için yayılma alanımız olduğu için, altyapımızın ayrı paylaşılan bölümlerinin (örneğin veritabanı kümesi) kullanımındaki ani artışları araştırabilir ve bunları tek bir müşteriye atfedebiliriz. Bu verileri ayrı altyapı bileşenlerinin maliyetiyle eşleştirerek, sunduğumuz her işleme yaklaşık bir fiyat etiketi koyabiliriz. Gözlenebilirlik, beklenmedik bir şekilde altyapı maliyet programımızın ayrılmaz bir parçası haline geldi.
Güvenlik denetiminin iyileştirilmesi : Seçilen işlemlerin %100'ünü elde tutabilmek, üretim veri konsolumuzla tüm etkileşimleri korumamıza izin vererek, güvenliğin müşteri verilerimize erişim üzerinde daha iyi görünürlük oluşturmasına yardımcı oldu.
Sıradaki ne?
Bir gözlemlenebilirlik kültürü oluşturmak, teknik programımızın bir parçası olmaya devam edecek: ilk katılım materyalimizi geliştirmeye, izler yoluyla gözlemlenebilirliği Ar-Ge operasyonlarımıza eklemeye ve ön uç enstrümantasyonu keşfetmeye odaklanacağız.
Ekibimize katılmayı düşünür müsünüz? Açık mühendislik rollerimize buradan göz atın.