En Son Altyapı Güncellememizden Öğrendiğimiz 4 Ders
Yayınlanan: 2022-05-04Altyapı yükseltme. Özellikle bizimki gibi bir SaaS şirketi için ortak bir görev, değil mi?
En son sürümümüz, ona küçük bir değişiklik eklediğimiz için tipik bir yazılım yükseltmesi değildi.
Ana hedef, yazılımımızı en son sürüme yükseltmekti, ancak bu sefer projeye iki adım daha ekledik - müşterilerimizin izin verilenler listesine alması gereken IP sayısını azaltmak ve veritabanı yedekliliği sağlamak.
Güncellemenin büyük bir kısmı sorunsuz bir şekilde ilerlerken, bu süreçte bazı hizmet kesintileri de yaşadık.
İlerleyen satırlarda, yükseltmeyi neden yaptığımıza, nasıl gittiğine ve ileriye dönük en büyük öğrendiklerimizin neler olduğuna ilişkin perde arkası bilgileri paylaşacağız.
Hemen konuya girelim!
Yükseltmeyi Neden İlk Yerde Gerçekleştirdik ve Neleri Dahil Ettik?
Sahip olduğumuz sorumluluğu ve NitroPack'in müşterilerimizin işlerinin başarısında oynadığı rolü anlıyoruz. Bu nedenle optimum performans, en yüksek güvenlik standartları ve 7/24 hizmet kararlılığının sağlanması çok önemlidir.
Altyapımızı düzenli olarak yükseltmek, tüm bunları sağlamanın birçok yolundan biridir. Ve daha önce de belirtildiği gibi, bu özel yükseltmenin üç bölümü vardı:
1. Yazılımımızı en son kararlı sürüme güncelleyin
Bulut tabanlı bir çözüm olarak, NitroPack'in 100.000'den fazla müşteri sitemiz için yaptığı tüm optimizasyonlar altyapımızda gerçekleştirilmektedir. Şu anda hizmeti çalıştırmak için 100'den fazla sunucu kullanıyoruz. Bu güncelleme ile sunucu filomuzu düzenleyen yazılımı en son kararlı sürüme yükseltmek zorunda kaldık.
2. Müşterilerimizin izin verilenler listesine alması gereken IP sayısını azaltın
Basitçe söylemek gerekirse, IP izin verilenler listesine alma sürecimiz kullanıcı dostu değildi.
Güncellemeden önce müşterilerimiz, NitroPack'in müşteri sitelerine giden trafiğini (isteklerini) sağlayan 40'tan fazla IP adresini izin verilenler listesine eklemek zorundaydı. Üstelik bu IP'ler sabit değildi, yani sunucularımızdan biri kullanımdan kaldırıldığında, yenisi farklı bir IP adresiyle geliyor.
Bu yeni IP oluşturma süreci, NitroPack'in sitelerini başarılı bir şekilde optimize etmesi için müşterilerimizin düzinelerce yeni adresi düzenli olarak izin verilenler listesine eklemesini gerektirdi.
Güncellemeden sonra, müşterilerimizin yalnızca üç sabit, asla değişmeyen IP'yi izin verilenler listesine eklemesi gerekir.
3. Veritabanı Yedekliliği Elde Edin
Uzun süredir, NitroPack'in web sitesi ve panosunun genel performansını artıracağı ve hizmet güvenliğini artırabileceği için veritabanı yedekliliği elde etmek istedik. Ayrıca, bu güncelleme, gelecekteki veritabanı yükseltmelerini sıfır kesinti süresi ile gerçekleştirmemize olanak tanır.
Bu hedefleri göz önünde bulundurarak, süreci iki adıma böldük ve bize ikisi arasında bir gün bırakarak bol bol nefes aldık:
Adım 1: (4 Kasım): IP sayısını azaltmak
2. Adım: (6 Kasım): Veritabanı yedekliliği ve sunucu yazılımı güncellemesi
Ancak her şey beklentilerimize göre gitmedi.
Neler Planlandığı Gibi Gitmedi
Kapsamlı hazırlıklarımıza rağmen, her üç güncellemede de beklenmedik sorunlarla karşılaştık. İşte olanlar:
Sorun 1: IP güncelleme işlemi sırasında bağlantı sorunları
4 Kasım'da, NitroPack'in giden trafiği için IP adresi sayısını azaltmayı amaçlayan bir hizmet ön güncellemesi gerçekleştirmeyi planladık.
Тİlk sürümde, hizmetimizin bazı durumlarda giden bağlantılar oluşturmasına izin vermeyen dahili bir yazılım hatası vardı. Ne yazık ki, bu sorun yalnızca altyapımız yoğun trafik durumları yaşadığında ortaya çıktı. Bu nedenle, ilk testler sırasında hazırlama ortamımızda sorunu tespit etmedik. Bağlantı sorunu, NitroPack'in giden optimizasyonları güvenilir bir şekilde gerçekleştirmemesine neden oldu ve bazı müşterilerimiz birkaç saat boyunca hizmet istikrarsızlığı yaşadı.
İyi haber şu ki, geliştirme ekibimiz HTTP istemcimizin yazılımını güncelleyerek sorunu hemen azaltmayı başardı.

Sorun #2: Veritabanı yedeklemesi tahmin edilenden daha uzun sürdü
6 Kasım'da veritabanı yedekliliği üzerinde çalışmaya başladığımızda, bunun planlanandan çok daha uzun süreceğini hemen anladık. Bu bizi bir gün sonra sunucu yazılımı yükseltmesini zorlamaya zorladı.
Ama aklında iyi niyet vardı. Yedeklemeyi sorunsuz bir şekilde gerçekleştirebilmemiz için ilk etapta veritabanını yedeklerken son derece dikkatli olmak istedik.
Sorun #3: Bir sunucu hatası, yazılım yükseltme sürecini yavaşlattı
7 Kasım'da sunucu yazılımı yükseltmesini dağıtmaya başladığımızda, sunucuların az bir kısmı (%1'den az) beklenmedik hatalar vermeye başladı ve bu da güncellemenin dağıtılmasını önledi ve tüm süreci yavaşlattı. Sorunları kendimiz çözmenin bir yolu yoktu ve bunu Sunucu Sağlayıcımıza iletmek zorunda kaldık.
Görevin büyüklüğü göz önüne alındığında, küçük bir hıçkırık gibi görünse de, bu beklenmedik hata, NitroPack istemcilerinin küçük bir bölümünün (%2'den az) aralıklı kısa hizmet kesintisi yaşamasına neden oldu.
Sorun 4: Beklenmeyen 502 CDN Hataları Hizmet Kararsızlığına Neden Oldu
Yükseltmenin bittiğini düşündüğümüzde, izleme sistemimiz sık sık meydana gelen CDN hatalarını HTTP durum kodu 502 ile kaydetmeye başladı.
Ne yazık ki, hata tüm müşterilerimizi etkiledi ve birkaç gün boyunca CDN kaynak tesliminde kararsızlığa neden oldu. Sorunu inceledikten sonra hizmet kararsızlığını kalıcı olarak gideren bir yazılım güncellemesi yayınladık.
NitroPack ile ilgili her şey düzgün çalıştığında, bu altyapı yükseltmesinden öğrendiklerimize dayanarak gelecekte neleri iyileştirebileceğimizi düşünmek için geriye dönük bir toplantı yaptık.
Aynı Sorunların Gelecekte Tekrar Yaşlanmamasını Sağlamak İçin Attığımız Adımlar
Genel olarak, tüm yükseltmenin gidişatından gurur duyuyoruz. Ara sıra hizmet istikrarsızlığı yaşadık, ancak bu kontrollü bir şekilde oldu ve tüm müşteri tabanı için tüm hizmetin kesinti süresini başarıyla önledik.
Ancak, sırtımızı sıvazlamanın ve tamamen neyin doğru gittiğine odaklanmanın bizi bir şirket ve hizmet olarak ileriye taşımayacağını biliyoruz.
Bu nedenle, gelecekteki yükseltmeleri daha da verimli bir şekilde gerçekleştirmek için uygulayacağımız iyileştirmeleri iletmek istiyoruz. İşte ana noktalar:
Stres Testi Yapabilen Evreleme Ortamı
Bu, yalnızca on binlerce isteğin olduğu yüksek hacimli durumlarda meydana gelen hataları tespit etmemize olanak tanır. Örneğin, bu, HTTP istemcisini ve yeniden kullanılabilir bağlantı sorunlarını önceden belirlememize yardımcı olabilirdi ve IP güncellemesini kesinti olmadan gerçekleştirebilirdik.
Daha İyi İzleme ve Uyarı Sistemleri
Bu yükseltme sırasında meydana gelen sorunlara dayanarak, hem izleme hem de uyarı vermediğimiz alanları tespit edebildik. Harika haber şu ki, her ikisini de bu alanlar için yapılandırdık.
Daha İyi Ekipler Arası İşbirliği ve Daha Proaktif Müşteri İletişimi
Yükseltmeye dahil olan çeşitli ekipler birbirleriyle ideal bir şekilde senkronize edilmediğinden, yükseltmenin ilerlemesini mevcut müşterilerimize proaktif ve zamanında tam olarak iletemediğimizi düşünüyoruz. Herkesin yükseltme ile neler olduğunu takip edebilmesi için status.nitropack.io sayfamız vardı, ancak bu yeterli değildi.
Bir dahaki sefere, sosyal medya, e-posta, kontrol paneli ve web sitesi dahil olmak üzere mümkün olduğunca çok kanalda yükseltmenin ilerlemesini bildireceğiz!
Sunucu Sağlayıcımızla Daha İyi Koordinasyon
Gelecekteki güncellemeler için, beklenmedik sorunlara zamanında çözümler sağlamak için Hizmet Sağlayıcımızla daha iyi koordinasyon için çaba göstereceğiz. Bu, öngörülemeyen sunucu hatalarını daha verimli bir şekilde ele almamıza yardımcı olacaktır.
Son olarak, tüm müşterilerimize sabırları ve anlayışları için teşekkür ederiz. Güveniniz, hizmetimizi sürekli iyileştirmek için itici gücümüzdür.
