Ana içeriğe atla

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

Bir Uluslararası Yazılım Şirketinin Batış Hikayesi

 Güzel başlamıştı hikaye. Yazılımcılar mutlu, kullanıcılar memnundu. Sonra pandemi başladı. Sorun para değildi. Olmayan şey huzurdu… Durdurun hype trenini, inecek var kırık kalpler durağında  — Photo by Kelly Sikkema on  Unsplash Gerçek olamayacak kadar güzeldi çalışma ortamı. Yazılımcılara istedikleri eğitim ve donanım alınıyordu, personel arası hiyerarşik bir yapı yoktu, sorumluluğun yanında yetki de veriliyordu, esnek çalışma saatleri yazılımcılara göre esnekti, izin isteyen hiç kimse geri çevrilmiyordu, pandemiden önce bile uzaktan çalışma vardı. Ne oldu bu şirkete? Nazar mı değdi? Şirketin yazılım ürünü Türkiye’de doğmuştu. Ürün birçok ülkede hem kamu tarafından hem de özel sektör tarafından kullanılıyordu. Yazılım geliştirme ekipleri hem Türkiye’de hem de diğer ülkelerde bulunuyordu. Yazılımın argesi için gelen geri bildirimlerin çoğu Türkiye’den geliyordu. Yazılımın kalbi Türkiye’de atıyordu.  Koronavirüs pandemisi nedeniyle Türkiye’de kamu kuruluşları hizmet alımı ile aldıklar

Türkiye'de Yazılım Şirketi Açmak ve Çıldırmamak

Aklında bir fikir vardı. Piyasada bunu karşılayan yazılımlar vardı ama hepsi eksikti. Hayalindeki yazılım ürününe hiçbiri yaklaşamıyordu. Gördüğü kadarıyla piyasanın böyle bir ürüne ihtiyacı vardı. Kullanıcılar mevcut ürünlerden şikayetçiydi. Kendi ekibini toplayıp hayalindeki şirketi kurmaya niyetlendi. Rüzgarlara dikkat!- Francesco Ungaro -  Pexels İşinden istifa etmeden önce piyasa araştırmasını yaptı, rakip ürünleri inceledi. En önemlisi ekibini kurdu. Ürününün MVP hali için çalışmaları başlattı. Girişim kurmak ile ilgili birçok kitap ve blog okudu, podcastler dinledi. Girişimci birkaç kişinin çayını kahvesini içti. Öngörebildiği her şey için önlemini aldı ve istifa edip kendi yazılım şirketini kurdu. Şirket kurmak için gerekli süreçler düşündüğünden daha kolay geçti. Şirketin adı ve logosu zaten hazırdı. Şirket teknoparkta yerini almıştı. Kendisi etiketlere çok önem vermiyordu ama yine de LinkedIn’deki profiline “Founder of the …” ibaresini ekledi. MVP’nin ortaya çıkması hedefini

Yazılımcılar İçin Yan Proje Oluşturma Rehberi

İster hobi amaçlı olsun ister maddi amaçlı her yazılımcının bir yan projesi olmalıdır. Peki yan proje oluştururken nelere dikkat edilmelidir, nasıl bir yan projemiz olmalıdır? Organize olalım beyler Yan proje (side project) için öncelikle bir fikir bulmak gerekli. Bu projenin amacı ne olacak? Hangi ihtiyacı çözecek? Yeni bir fikir mi olacak yoksa mevcut bir fikrin daha iyi uygulanmış bir hali mi olacak? Sadece yeni bir teknolojiyi öğrenmek için mi? Deneysel mi olacak ya da eğlenceli mi? Yoksa maddi bir getirisi olacak mı? Bu proje ürün olursa kimler kullanacak? Ürünü kullanacak kişilere erişip geri bildirim alabilecek miyim? . . . Bu soruların doğru bir cevabı yok, cevaplar size bağlı. Ama proje bir amaca hizmet edip bir ihtiyacı çözecekse, hele birde maddi getirisi olacaksa motivasyonunuz yükselecektir. Bunun yanında sadece eğlence amaçlı olan deneysel bir proje yapmak stressiz bir öğrenme ortamı sağlayacaktır. Gün içinde proje için aklınıza gelen her şeyi not alın. Not almazsan