Merhabalar,
Bu makelemde, çoğumuzun akış diyagramı olarak bildiği bir kavram olan algoritmaların gücünü anlatmaya çalışacağım. Aslında işleri nasıl kolaylaştırıp, nasıl daha da anlaşılır sistemler dizayn edebileceğimiz hakkında biraz da farkındalık oluşturmak istiyorum. Yazımın sonuna geldiğimde ise, aslında hayatımızı tam da algoritmalara göre yönettiğimizi anlayacağınızı düşünüyorum.
Algoritma deyince, yazılımcıların kullandığı metodlar aklımıza geliyor. Lise ve üniversite yıllarımda algoritma dersleri de vardı vakti zamanında. Sanırım hala farklı isimler altında bu tip eğitimler veriliyordur okullarda. Yazılım dersleri içinde de okutulurdu. “Klavyeden girilen….” şeklinde cümlelerle başlardı hatta. 🙂 Peki, algoritma nedir? diyerek yazıma başlıyorum.
Algoritma Nedir?
Herhangi bir sorunu çözmek, amaçladığımız belli bir noktaya ulaşmak ya da yepyeni bir sistemin işleyiş adımlarını oluşturmak üzere, tasarlayacağımız sistemdeki tüm adımların açıkça gösterildiği, karar mekanizmalarının belirlendiği akış diyagramlarıdır.
Matematikte ve programlamada olmazsa olmazdır. Çünkü algoritması olmayan bir program düşünülemez. Şöyle düşünün, bir program yazacaksanız, kapsamlı ya da basit hiç farketmez, neyi nasıl yapacağınızı önceden tasarlamanız gerekir. Veriyi nasıl toplayacağınızı, sonra bu veriyle ne yapacağınızı, ve yapılan işlem sonrasında çıktıyı nereye göndereceğinizi tanımlamanız gerekmekte.
Algoritmaları kullanmayı iyi öğrendiğinizde, aslında çok büyük problemleri, çok küçük parçalara ayırarak, karmaşık ve zor gibi görünen birçok problemi çözebilirsiniz.
Algoritma/Akış diyagramı oluştururken, çeşitli sembollerle işlem yapılır. Bunlar genel kabul görmüş ve herkesin, baktığında ne yapılacağını anladığı evrensel sembollerdir. Fakat bazı gösterimlerde küçük değişiklikler olabilir ve muhtelif zamanlarda kendimize göre bu sembolleri kullanabiliyoruz. Şimdi bu semboller neler kısaca onlara bakalım.
Benim en çok kullandığım semboller aşağıdaki gibi. Yazılımcı değilim ve bu şekillerden daha fazlasına da ihtiyacım yok. Sistem tarafında yapacağım işler için çok da yeterli. Akış diyagramlarınızı Microsoft Visio programıyla çizebilirsiniz.
Küçük bir örnek yapalım birlikte. Sabah evden çıkıp işe gideceğiz, ama hava nasıl diye camdan bir baktık, ve akış diyagramını oluşturduk.
NOT: Normal günlük kıyafetlerinizi giydiğinizi var sayıyoruz 🙂 Akış diyagramı eksik diye düşünmeyin, o kısım başka bir akış diyagramı parçasında 🙂
Burada sadece yağmur olup olmadığını kontrol ettik, başka birşeyle ilgilenmedik. Malumunuz, sonbahara girmiş bulunuyoruz. İşimiz sadece şemsiyeyle bitmeyebilir, belki üzerimize üşümemek için bir hırka ya da mont almak isteriz. 🙂
Havanın yağmurlu olup olmadığını kontrol ettik, sonra bir de soğuk mu diye kontrol ettik, sorunun cevabına göre aksiyonu aldık ve evden çıktık.
Bu örneği daha da geliştirip kullanabiliriz. Burada anlatmak istediğim, yaptığımız her hareketin bir gözlem, işlem ve sonuç olarak tezahür ettiği. Tıpkı hayatta aldığımız kararlar, bu kararların uygulanması, uygulama sonucunda iyi ya da kötü birşeylerin ortaya çıkması gibi. Bir otobüsü kaçırdığımızda hemen alternatif yolları düşünmemiz, işe ya da eve giderken farklı bir yol seçtiğimizde, ya da sıkışan trafiğe bağlı olarak kullandığımız kaçamak yollar ve sonrasında karşılaştığımız her durum, sürekli değişen bir karar-sonuç mekanizmasını karşımıza çıkarır değil mi? 🙂 İşte hayatın algoritması da bu bence. Fazla felsefi oldu, şimdi biraz aksiyona geçelim.
Bir proje örneği yapalım. Vereceğim örnek, gerçek bir upgrade projesinin adımlarıdır. Yaptığım projelerin her adımını kendimce şematize edip, stratejimi buna göre şekillendiriyorum. Böylece bir noktada problem çıktığında, problemli adımı çok rahat analiz edip, önceden planladığım şekilde çözüm adımlarını uyguluyorum.
Vmware Altyapısının Upgrade işlemlerinin akış diyagramı
Şimdi VMware altyapısının komple upgrade senaryosunun nasıl yapılacağını gösteren diyagramı paylaşıyorum. Bu diyagram, sadece vmware altyapısı işlemleri için kullanılan kısmı. Donanım uyumluluğu, üst versiyon destekleri vs vs kontrol adımlarının yapıldığı kısım başka bir algoritma parçasında. Hani makalemin en başında belirtmiştim ya, büyük problemleri küçük parçalara ayırın ve kolaylaştırın diye. İşte o kontrolleri başka bir akış diyagramında yapıp, sonucu olumluysa bu parçaya yönlendirdim gibi düşünün. 🙂 Okların yönü ve bağlandığı yerler, sizin bakış açınıza göre değişiklik gösterebilir. Elbette ki herkesin kendine göre bakış açısı var, zaten yapılan işin kalitesini de bu farklılıklar etkilemiyor mu?
VMware altyapılarında upgrade işleminin nasıl yapılacağını da anlatmış oluyorum aslında. Öncelikle vCenter sunucudan başlanır, işlem başarılı bittiğinde ESXi upgrade işlemleri yapılır. Eğer önce ESXi ile başlarsanız, bunun versiyonu vCenter versiyonundan yüksek olduğu için o host’un yönetimini yapamazsınız. vCenter versiyonu, her durumda ya ESXi versiyonlarına eşit ya da onlardan yüksek versiyonda olmalıdır.
Şimdi yukarıdaki senaryoyu gerçekleştirmek için web bloğumda her makale mevcut. ESXi sunucuların birçok şekilde upgrade işlemini, vCenter sunucu için appliance ortamına migration -sıfırdan kurulum-upgrade işlemlerini detaylıca anlattığım makalelerime göz atabilirsiniz. O halde bu algoritmaya göre, komple altyapı güncelleme işlemini yapabilirsiniz diye düşünüyorum. 🙂
Şimdi bir akış diyagramı daha çizelim. Bakınız bu da çok önemli bir örnek olacak, kesinlikle uygulayınız.
Daha farklı karar döngüleri oluşturulabilir elbet ama o kısımları da siz tamamlarsınız artık 🙂 🙂 Yani geliştirmeye oldukça açık bir diyagram bu 🙂
Yararlı olması dileğiyle.
Yusuf İşleyen