Girişimlerin ve Küçük Yazılım Şirketlerinin Sunucu İle İmtihanı

Bir yazılım ürününün en büyük gider kalemlerinden olan sunucu ve servis masrafları ile ilgili tatsız gerçekleri duymaya hazır mısınız? O zaman ileri, ileri, kabul et, ileri, son!



Sunucu ihtiyacınızı bulut sistemleri, dedicated, VPS, fiziksel sunucular gibi çözümlerle karşılayabilirsiniz. Bu kadar çok seçenek olmasının yanında bol bol reklam ve şehir efsaneleriyle bilgi bombardımanına tutulan biz yazılımcılar hangi seçeneğin bizim için en uygun olduğu konusunda kararsız kalıyoruz. Karar versek bile içimizde hangisinin daha iyi olduğuna dair bir arayış devam ediyor, acaba soruları kafamızın içinde sürekli dönüyor.

Diyelim ki bir yazılım ürününü ele avuca gelecek şekilde (MVP minimum viable product) geliştirdiniz. Belli bir kullanıcı kitleniz de oluştu. Paylaşımlı sunucu barındırma (shared hosting) hizmeti ile belli bir yere kadar uygulamanız sorunsuz çalışıyor. Ancak kullanıcılarınıza daha kaliteli bir kullanım deneyimi yaşatmak ve kesintisiz bir hizmet sunmak istiyorsanız artık kendi sunucularınıza (evet çoğul kelime) geçme zamanı geldi demektir.

Benim zaten çok kullanıcım yok, sunuculara verebileceğim çok param da yok, kullandığım kadar ödeyeyim, ihtiyacım olduğunda makine açarım ihtiyacım yoksa kapatırım diyorsanız bulut dünyasına hoş geldiniz. AWS, Azure, Google Cloud, Digital Ocean, VULTR, Paperspace gibi birçok seçenek karşınızda. Bu tür bulut sağlayıcıları kullanmak hızlı bir şekilde ürün geliştirmeye yardımcı oluyor. Kullanıcı karşısına çıkma süreniz kısalıyor. Şimdi gelelim dezavantajlarına:
  • Küçük sayıda isteklerde maliyet çok küçükken (ya da yokken) yüksek trafikte maliyetin katlanarak artması.
  • Döviz kuru dalgalanmaları nedeniyle maliyetin de dalgalanması (genelde yükselmesi)
  • Ani fiyat artışları olabilir. E-postanıza gelen “biz fiyatlarımızı yükselttik” bilgilendirmesini okurken boncuk boncuk terleyebilirsiniz. Benim kullandığım bir hizmetin fiyatı 3 (yazıyla üç) kat birden artmıştı.
  • Bu tür bulut sağlayıcıların Türkiye’de hizmet noktaları olmadığı için ağ gecikmesi (lag) yaşanabiliyor. Hizmet aldığınız yer ile Türkiye’deki bir sisteminiz sürekli iletişim halinde ise bu gecikmeler nedeniyle sistem çalışamaz hale gelebiliyor. Örneğin veri tabanı AWS’de uygulama sunucusu ise Türkiye’de ise kullanıcı sayısı artmaya başladığında uygulamanız hissedilir seviyede yavaşlamaya başlıyor. Eğer iki mikro servis birbirinden uzaktalar ise kafa patlatarak tasarladığınız dağıtık mimari tasarımları hiçbir işe yaramayabiliyor.
  • Kodlar ve geliştirme ortamı platform bağımlı olabiliyor. Platforma has kodlar ve hizmetler projenizin içine işleyebiliyor.
  • Açıklanamayan kaynak tüketimi için ücret kesilmesi yaşanabiliyor. Aynı uygulama yerel bilgisayarda az işlemci tüketirken, bulutta yüksek işlemci tüketebiliyor. Örneğin yerelde oluşturduğunuz sanal bilgisayarda %2-%5 civarında işlemci kullanan bir job’ı aynı özelliklere sahip uzaktaki bir sanal bilgisayarda çalıştırdığınızda %20-%30 civarında işlemci tüketebiliyor. Veri tabanında aniden çalışan sorgu sayısı arttı diye alarm gelirken, durumu kontrol ettiğinizde veri tabanına fazla istek gelmediğini ama veri tabanının fazla kaynak tükettiğini görebiliyorsunuz. Bu durumlar nadiren de olsa oluyor.
  • Otomatik ölçeklemelerin gecikmeli olarak canlıya açılması ya da hiç açılmaması. Kullanıcı trafiği arttığında otomatik olarak ek sunucuların açılması için kurallar yazmış olmanıza rağmen trafik arttığında ölçeklemenin yapılmadığına zaman zaman rastlayabilirsiniz. Ölçekleme için yeni açılmaya çalışan sunucunun askıda kalıp bir türlü canlı duruma geçmediğini görebilirsiniz. Bel bağladığınız ölçekleme özelliğinin çalışmaması nedeniyle yaşanan kesinti yüzünden kullanıcılardan birçok şikâyet alıp kullanıcı kaybedebilirsiniz.
  • Kullanılan bir hizmetin 2-3 ay sonra kapatılacağına dair bir bilgilendirme alabilirsiniz. İhtiyacınızı çözen, geliştirme yapmak zorunda kalmadan kullandığınız bir servis veya API olduğunu düşünün. Zaten elinizde yeterli personel yokken, yapılacak işler sırada beklerken böyle bir haber aldığınızda neler hissedeceğinizi düşünün. Kullandığınız hizmet başka bir yerde yoksa kendiniz geliştirmek zorundasınız. Başka bir yerde varsa veri kaybı olmadan, kullanıcılara hizmet kesintisi yaşatmadan geçiş sürecini planlamak ve uygulamak zorundasınız.
  • Türkiye yurtdışı internet çıkışında yaşanabilecek sorunlar, mahkeme kararı ile IP ve domainlere yasaklama kararının çıkması, bulutun verdiği paylaşılan IP’lerin kara listede olması gibi sürpriz durumlarla karşılaşabilirsiniz.
  • Personel ve danışmanlık maliyetini de unutmamak lazım. Bulut sunucusunda projeyi yayınlayacak (DevOps) kişilerin maaş ve istekleri sizin için önemli bir maliyet olabilir. Bulut sunucusundaki bir servis için danışmanlık almak istediğinizde size gelen teklifteki rakamı gördüğünüzde işi gücü bırakıp danışmanlık yapsam acaba diye düşünebilirsiniz.

Gelelim Türkiye sınırları içerisinde sunucu kullanımı ile ilgili gerçeklere. Türkiye’deki bilindik sunucu firmaları düşük gecikme ve düşük maliyet sunsalar bile maalesef istenmeyen birçok özelliğe sahipler. Hepsinin ortak özelliği bir sorun olduğunda iletişim kurmanın zor hatta imkansız olması. Birisine ulaşsanız bile aldığınız cevap “bakıyoruz” oluyor. Nedense sürekli DDOS saldırısına uğruyor Türkiye’deki sunucu firmaları. DDOS saldırısı sabit menü, doğru mu söylüyorlar yalan mı söylüyorlar bilemiyorsunuz. En sevdiğim özellikleri ise habersiz planlı bakım yapmaları. Kesinti oluyor, arıyorsunuz ve aldığınız cevap planlı bakım yapıyoruz oluyor. Kesinti olduğunda size bilgilendirme yapılmıyor. Bu yüzden kesinlikle bir alarm sistemi kurmalısınız. Türkiye’de hiçbir fiziki altyapısı olmayan bazı sunucu firmaları, sahte sunucu ve cihaz resimleriyle süslüyor web sitelerini. Sorsanız şu kadar sunucuları var, bu kadar altyapı yatırımı yapmışlar.

Gürültücü komşular, Türkiye’deki sunucu firmalarının diğer bir sorunu. Yan sunucularda çalışan bir uygulama tüm internet trafiğini sömürebiliyor. Bu gibi durumlarda sunucu firmalarının önlem alması çok uzun sürebiliyor, neden böyle bir durum oluyor diye sorduğunuzda ise “olur bazen” cevabı alıyorsunuz.

Türkiye’de bazı sunucu firmaları zaten vermek zorunda oldukları bazı hizmetler için “danışmanlık ücreti” altında ilave ücret istiyorlar. Hem de dolar ile, hem de çok yüksek miktarlarda.

Bir gün aniden sunucularınıza erişimi kaybedebiliyorsunuz. Sunucu firmasına ulaştığınızda (ulaşabilirseniz ne mutlu) saldırı vardı portları kapattık sonrada sizin sunucunun portunu açmayı unutmuşuz gibi bir cevap alabilirsiniz.

Kurum/şirket içi (on premise) sunucu barındırma ise bir korku filmi hikâyesidir. Eğitime göndermezler, ikinci el donanım alırlar, danışmanlık satın almazlar. Güvenlikten sorumlu kişi en güncel anti-virüs kullanılsın, Windows-Java en güncel sürümde olsun ister. Satın almacı acil bir donanım ihtiyacı için 2-3 yerden teklif toplar, varsa çıkma donanım bulur onu verir size. Dosyalarını yanlışlıkla sildiğini iddia eden bir personel o çok önemli Excel dosyasının yedeklerden geri getirilmesi için başınızda bekler. Veri tabanın parolası birinde, Administrator parolası başka birinde, sanal makine yönetimi başka birindedir. Acil bir düzeltme yapmak istersiniz ama o da ne. Bunu yapmaya yetkili olan kişi toplantıdadır.

Sunucu ihtiyacı için doğru çözümü bulanlar bulamayanlara anlatsın. Her proje için ihtiyaç değişir diyorsanız o zaman hikâye yeniden baştan başlıyor.

(Bu yazıda bazı senaryoları ve teknik terimleri yazının basit kalması adına dillendirmedim.)

Yorumlar

Bu blogdaki popüler yayınlar

KPSS Çalışan Yazılımcı

On-Prem Çilesi

Yeteneğini Kaybeden Yazılımcı