%100 Uptime’a Nasıl Erişilir?

100-uptime

%100 Uptime’a Nasıl Erişilir?

%100 Uptime’a Nasıl Erişilir?

%100 uptime; ulaşılması hakikaten zor olan bir ayakta kalma oranıdır ve enteresan bir şekilde ise parayla ya da 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ış da yanlıştır çünkü %100 uptime parayla ya da 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,
  • Donanıma bağlı ayarlardan bağımsızlaşmak,
  • Sunuculardan bağımsızlaşmak,
  • Servisleri yedekli çalıştırmak,
  • Coğrafi yedekleme ile ortamdan bağımsızlaştırmak,
  • Yönetilebilir alt yapılar ile çalışmak,
  • Farklı coğrafyalara trafiği yönlendirebilecek mekanizmalar kurmak,
  • Tüm sistemi 7/24 izlemek,
  • Sistemi her yönüyle yönetecek uygulamayı geliştirmek.
Donanımdan Bağımsızlaşmak

Bu aslında hepimizin bildiği temel adımlardan bir tanesi. Basitçe sanallaştırmadan bahsediyoruz. Sanallaştırma olmadan elbette %100 uptime’a erişilebilir ama bunun için çok yüksek miktarda yatırım yapılması gerekiyor.

Donanıma Bağlı Ayarlardan Bağımsızlaşmak

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

Bu oldukça önemli bir adım, çünkü 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 mevcut. Yapılması gereken işlemler şöyledir;

  1. İşlemciden bağımsız hale getirmek: Eğer işlemciye bağlı (işlemci ailesi, seri numarası vs.) herhangi 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: 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 konfigürasyonları 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. Alternatif bir çözüm bulmanız gerekebilir.
  3. Disk’ten bağımsız hale getirmek: Çoğu uygulama kendi dosyalarını bulunduğu disk’in üzerine yazmak gibi bağımlılıklara sahip. Bu durumu değiştirmek elbette mümkün ancak nispeten zor. 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: 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.
Sunuculardan Bağımsızlaşmak

Tüm internet zaten IP üzerinden haberleşmiyor mu? Siz de yazılımlarınızın kullandığı sistemleri IP üzerinden haberleştirebilirsiniz. Bunun için tek yapmanız gereken şey, yazılımınız ait veri tabanı gibi doğrudan yazılımınızla göbek bağı olmayan servisleri farklı sunuculara kurmak ve IP üzerinden haberleşmelerini sağlamak.

Servisleri Yedekli Çalıştırmak

Her servis aslında kendi içerisinde farklı yedekleme tipleriyle çalışır. Örneğin veri tabanları 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, birden fazla uygulama sunucusu çalıştırma ile yedeklilik sağlanmaktadır.

Elbette yedekli çalışma durumu her ne kadar riskleri azaltsa da, doğrudan sıfıra indirmez. Bu sebepten ihtiyacınız olduğu düşündüğünüz sürece yedeklilik oranlarını arttırabilirsiniz. En az iki sunucuyla başlayarak ve riski gözeterek yedek sayınızı artırabilirsiniz.

Coğrafi Yedekleme ile Ortamdan Bağımsızlaşmak

Servislerimizin aynı veri merkezinde çalışması, yedekli bir biçimde çalışması elbette sürekliliği arttıracak bir yöntemdir. Dünya üzerinde bir coğrafyada gerçekleşecek herhangi 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ü, sistemleri coğrafi şekilde yedeklemek de ciddi anlamda sürekliliği artıracak bir çözümdür.

Yönetilebilir Altyapılar ile Çalışmak

Yukarıda bahsi geçen 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. Tam bu noktada Bulut sistemleri devreye girer. Bildiğiniz gibi bir sistemin Bulut olabilmesi için yazılım tarafından yönetilebiliyor olması gereklidir. Yani yazılımınız kendisi ihtiyaç olduğu bir durumda çeşitli kaynaklara erişebilmeli ve kendi kendine ihtiyacı olan optimum kaynağı bulup o kaynak üzerinde çalışmaya başlayabilmelidir. Bunu yapmak da ancak yönetilebilir altyapılar ile mümkündür.

Farklı Coğrafyalara Trafiği Yönlendirebilecek Sistemler Kurmak

Bu noktada en temel trafik yönlendirme mekanizması olan DNS’i kolaylıkla kullanabilirsiniz. Çünkü 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ş oluyorsunuz. Bu sayede herhangi 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 veri merkezine yönlendirebilirsiniz.

Tüm Sistemi 7/24 İzlemek

Tüm bunlara erişebilmeniz için bir de yönetim ve alarm sistemlerine sahip olmanız gerekiyor. Çünkü sürekli olarak gözünüzü dört açıp tüm sunucuları izleyemezsiniz. Özellikle 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 olacak.

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 bulunuyor. Dilerseniz bizimle irtibata geçerek sizin için yapabileceklerimizi bizden dinleyebilirsiniz.

Ya da 23 Haziran’da Şişli’de gerçekleşecek etkinliğimize katılıp merak ettiklerinizi bizimle konuşma imkanı bulabilirsiniz.