Child pages
  • %100 Uptime'a nasıl erişilir ?
Skip to end of metadata
Go to start of metadata

%100 uptime ulaşılması hakikaten zor olan bir ayaktan kalma oranıdır enteresan bir şekilde ise parayla ve sunucuların yedeklenmesiyle bir ilgisi bulunmamaktadır.

Sanılır ki servisler veya sistemler tek bir noktada ne kadar yedekli olursa o kadar sağlıklı çalışır, veya sanılır ki aynı sistemin birebir kopyasını başka bir yerde çalıştırmanız için mevcut kaynaklar kadar kaynak kullanılması gerekir. Her iki inanışta yanlıştır, çünkü %100 uptime parayla ve yedeklemeyle olmaz, servislerin tasarımı ve yönetimiyle olur.

%100 uptime'a erişmek için yapılması gereken adımlar şöyledir;

 

Donanımdan bağımsızlaşmak

Bu aslında hepimizin bildiği temel adımlardan bir tanesidir. Aslında basitçe sanallaştırmadan bahsediyoruz. Sanallaştırma olmadan da elbette %100 uptime'a erişilebilir ama bunun için çok paranız olması gerekiyor (smile)

Sanallaştırma işlemini biz zaten sizin için hazırlamış ve tek tuşla kullanılabilir yapmış olduğundan bu adımı geçiyoruz.

Donanıma bağlı ayarlardan bağımsızlaşmak

Donanıma bağlı ayarlardan bağımsızlaşmak şu demek; işlemci, ram, disk ve ağ gibi ayarlara bağımlı olmadan yazılımlarınızı çalıştırabilmelisiniz.

Bu oldukça önemli bir adım zira yazılımınızı aslında her ortamda ve her şekilde çalışabilir hale getirmekten söz ediyoruz. Çoğu sistemci veya yazılımcı için bu pek mümkün görünmeyebilir çünkü hepimiz bazı standartlar (ve varsayımlar) üzerine sistemler geliştiriyoruz. Dolayısıyla kolay olmadığının farkındayız ancak bunun için oldukça kolay yöntemler bulunmaktadır. Yapılması gereken işlemler şöyledir;

  1. İşlemciden bağımsız hale getirmek kolay; eğer işlemciye bağlı (işlemci ailesi, seri numarası vs.) her hangi bir servis geliştirmediyseniz zaten bu adım kendiliğinden olacaktır. Eğer işlemci ailesi ve/veya işlemci seri numarası gibi şeylere bağımlıysanız kendinize farklı yöntemler bulmak zorundasınız.
  2. Ram'den bağımsız hale getirmek de kolay; zira yazılımların çoğunun RAM'i kullanmanın haricinde pek işi olmaz, ancak eğer bir java uygulaması yazıyorsanız veya uygulamanıza veya servisinize ram miktarını önceden belirtmeniz gerekiyorsa bu işlem zor olabilir. Java'da kolay çözümler var, doğrudan kullanacağınız konfigurasyonları da yazılımın bir parçası haline getiriyorsunuz ve sorun çözülüyor ancak eğer yazılımın kurulumu sırasında RAM ile ilgili bir işlem yapıyorsanız bu adım sizin için zor olabilir. Bir alternatif çözüm bulmak zorundasınız.
  3. Disk'ten bağımsız hale getirmek işin nisbeten zor kısmı çünkü çoğu uygulama kendi dosyalarını bulunduğu disk'in üzerine yazmak gibi bağımlılıklara sahip. Bu durumu da değiştirmek elbette mümkün ancak nisbeten zor. Bizim en çok tavsiye ettiğimiz ve hızlı olan yöntem Linux ortamında NFS ve Windows ortamında Samba/CIFS/Windows Sharing mekanizmalarını kullanmak ve yazılımların dosyalarını başka sunucular üzerinde kurulmuş ve paylaştırılmış olan klasörlerin üzerine yazmalarını sağlamak. Bu sayede en azından yazılımınız hangi sunucuda çalışırsa çalışsın doğrudan kendi dosyalarına erişibilecektir.
  4. Ağ'dan bağımsız hale getirmek ise oldukça kolay. Eğer uygulama sanallaştırması için container bazlı bir yapı kullanıyorsanız bunu okumanıza bile gerek yok ama eğer işletim sistemi sanallaştırması yapıyorsanız doğrudan DHCP ile IP dağıtmayı ve IP yönetimini yapmanızı gerektiren bir durum oluşuyor. Ne mutlu ki bu problemi de sizin yerinize biz çözmüş durumdayız, bu sebepten geçiyoruz (smile)

Yukarıdaki işlemleri yaptığınızda ilk adımımız bitmiş oluyor.

Sunuculardan bağımsızlaşmak

Tüm internet zaten IP üzerinden haberleşmiyor mu ? Siz de yazılımlarınızın kullandığı sistemleri pek tabiiki IP üzerinden haberleştirebilirsiniz. Bunun için tek yapmanız gereken şey, yazılımınız ait veritabanı gibi aslında doğrudan yazılımınızla göbek bağı olmayan servisleri farklı sunuculara kurmak ve IP üzerinden haberleşmelerini sağlamak. Bu adım oldukça basit bir adım olduğundan ve tahmin ediyorum ki çoğunuz da zaten yapıyor olduğunuzdan geçiyorum.

Servisleri yedekli çalıştırmak

Her servis aslında kendi içerisinde farklı yedekleme tipleriyle çalışmaktadır. Örneğin veritabanları yedekliliği aktif-aktif, aktif-pasif şekilde çalışan kopya (replication) servisler şeklinde sağlamaktadır ancak uygulama sunucularında ortak bir data olmasına gerek olmadığı durumlar, birde fazla uygulama sunucusu çalıştırma şekilde yedeklilik sağlanmaktadır.

Elbette ki yedekli çalışma durumu her ne kadar risk'leri azaltsa da doğrudan sıfıra indirmemektedir. Bu sebepten ihtiyacınız olduğu düşündüğünüz sürece yedeklilik oranlarını arttırabilirsiniz. Yani en az iki sunucuyla başlayarak riskinizi de gözeterek yedek sayınızı arttırabilirsiniz.

Coğrafi yedekleme ile ortamdan bağımsızlaştırmak

Servislerimizin aynı datacenter'da çalışması yedekli bir biçimde çalışması elbette sürekliliği arttıracak bir yöntem olacaktır ancak dünya üzerinde bir coğrafyada gerçekleşecek her hangi bir olayın farklı bir coğrafyada aynı anda gerçekleşmesi oranı düşük olduğundan ve artık bu konuda çeşitli imkanlara sahip olduğumuzdan ötürü coğrafi anlamda yedekleme yapmak yani sistemleri coğrafi şekilde yedeklemekte ciddi anlamda sürekliliği arttıracak bir çözüm olacaktır.

Yönetilebilir alt yapılar ile çalışmak

Yukarıda bahsettiğimiz konuların tamamı aslında tek başına bile yönetmesi zor olabilecek konulardır, dolayısıyla bu konuları aslında bir şekilde otomatiğe bağlamanız ve ihtiyaç anında kolaylıkla devreye alınabilir bir halde tutmanız gerekecektir. Bu noktada işte Bulut sistemler devreye girmektedir. Bildiğiniz gibi bir sistemin Bulut olabilmesi için yazılım tarafından yönetilebiliyor olması gerekmektedir. Yani sizin yazılımınız kendisi sıkıntılı bir durumda çeşitli kaynaklara erişebilmeli ve kendi kendine ihtiyacı olan optimum kaynağı bulup o kaynak üzerinde çalışmaya başlayabilmelidir. Bunu yapmakta ancak yönetilebilir alt yapılar ile mümkündür. 

Farklı coğrafyalara trafiği yönlendirebilecek mekanizmalar kurmak

Bu noktada en temel trafik yönlendirme mekanizması olan DNS'i kolaylıkla kullanabilirsiniz. Çünkü siz bir domain için birden fazla A kaydı girdiğinizde aslında otomatik olarak yük dengeleme de yapmış yani farklı coğrafyalara ziyaretçilerinizi yönlendirmişte oluyorsunuz. Bu sayede her hangi bir sıkıntılı durumda anında DNS kayıtlarınızı değiştirerek arızalı olan coğrafyadaki trafiği çalışan başka bir datacenter'a yönlendirebilirsiniz.

Tüm sistemi 7/24 izlemek

Tüm bunlara erişebilmeniz için birde yönetim ve alarm sistemlerine sahip olmanız gerekmektedir. Çünkü siz sürekli olarak gözünüzü dört açıp tüm sunucuları izleyemezsiniz. Özellikle artık sunucularınız kendi yazılımlarınız tarafından yönetiliyorsa bunu yapabilmeniz teknik olarak mümkün bile olmayabilir. Tüm bu sebeplerden dolayı yine yazılım tarafından yönetilebilir izleme sistemlerine ihtiyacınız olmakta.

Sistemi her yönüyle yönetecek uygulamayı geliştirmek

En son ve aslında zorlu kısım da bu, çünkü bu noktada artık yukarıdaki tüm adımları anlamış, öğrenmiş ve nasıl çalışması gerektiğini çözmüş olmanız gerekiyor ki gerekli yazılım'ı da geliştirebilesiniz. Ancak bunlar için elbette bizim elimizde çeşitli basit çözümler bulunmakta. Dilerseniz bunları müsait bir vaktinizde beraber tartışabiliriz.

İşte %100 uptime'ın giriş seviyesi ihtiyaçları genel olarak bu şekilde. Vaktimiz oldukça bu yazıyı da genişleteceğiz.

  • No labels