Buradasın
Yazılım Projelerinin Yeniden Yazılması Nedenleri ve Yöntemleri
youtube.com/watch?v=SCfDCC2K3XoYapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir yazılım geliştiricisinin meslek hayatındaki deneyimlerini ve düşüncelerini paylaştığı eğitim içeriğidir. Konuşmacı, yazılım projelerinin büyük çoğunluğunun daha önce yazılmış projelerin yeniden yazılması şeklinde olduğunu belirtiyor.
- Video, yazılım projelerinin neden kısa sürelerde yeniden yazılması gerektiği sorusunu ele alıyor. İlk bölümde yazılım ekosisteminin sürekli değişmesi ve geliştirme süreçlerinin henüz olgunlaşmamış olması gibi genel sebepler açıklanırken, ikinci bölümde günlük kurtarma adına yapılan hızlı çözümler, artan kullanıcı sayıları, büyüyen veritabanları ve monolit uygulamaların yönetimi gibi özel nedenler detaylandırılıyor.
- Ayrıca modüler yapı kurmanın önemi, programlama dili ve teknoloji tercihlerinin etkileri, platform seçimi ve mevcut projenin bakımının yeniden yazma sürecinde nasıl planlanması gerektiği gibi pratik bilgiler de paylaşılıyor. Video, yazılım geliştiricilerinin nerede hata yaptığını ve daha iyi yapabilecekleri konusunda öneriler sunarak, yazılımların legacy'e dönüşmesi ve yeniden yazılması konusunda kapsamlı bir bakış açısı sunuyor.
- 00:01Yazılım Projelerinin Yeniden Yazılması Sorunu
- Konuşmacı, meslek hayatında çalıştığı yazılım projelerinin büyük çoğunluğunun (yarısından fazlası) daha önce yazılmış projelerin yeniden yazılması şeklinde olduğunu belirtiyor.
- Twitter'dan yapılan bir paylaşımda, yazılımın genellikle 14-15 sene süreyle ayakta kalabildiği ve 4-5 yıl gibi sürelerde yeniden yazılması gerektiği yorumları geldiğini paylaşıyor.
- Diğer meslek branşlarında uzun yıllarca ayakta kalabilen ürünlerin yazılımda neden 2-3 yılda bir yeniden yazılması gerektiği konusunda merak duyduğunu ifade ediyor.
- 01:42Yazılımın Yeniden Yazılmasının Sebepleri
- Yazılım canlı bir ekosistem ve organizma olarak sürekli yenileniyor, bu nedenle bugün yapılan işler 4-5 sene sonra geçerliliğini yitirebiliyor.
- Yazılım geliştirme süreçleri hala genç ve olgunlaşmasını tamamlamış bir süreç olarak nitelendirilebilir, deneme yanılma yapılarak kararlar veriliyor.
- Yazılım geliştirme süreçlerinin tam anlamıyla oturmadığı için yanlış alınan kararlar ve politikalar yazılımın yeniden yazılmasına sebep olabiliyor.
- 03:00Yazılım Geliştiricileri İçin Önemli Noktalar
- Yazılımın yeniden yazılmasındaki en önemli sebep geçmişte alınan hatalı kararlar ve yanlış mimari kararlar olabilir.
- Yanlış temeller üzerine oturtulan yazılım kod legacy hale gelir, değiştirilebilir ve güncellenebilir yapı barındırmaz.
- Ufak bir bakım veya geliştirme yapmak bile zaman ve bütçe açısından çok maliyetli olabilir, bu da yazılımın yeniden sıfırdan yazılması noktasına götürebilir.
- 03:56Vizyon ve Platform Tercihi
- Vizyon sahibi ekipler, teknolojinin, gündemin ve kullanıcı beklentilerinin değişmesini öngörerek erken aşamada projenin yeniden yazılmasını sağlayabilir.
- Platform tercihi de yazılımların yeniden yazılmasına sebep olabilir, örneğin masaüstü uygulamaların web uygulamalarına, web uygulamalarının mobil uygulamalara dönüştürülmesi.
- SOAP tabanlı web servislerinin, mobil uygulamaların yaygınlaşması ve performans kriterlerinden dolayı REST tabanlı servislere dönüştürülmesi gibi örnekler verilebilir.
- 06:55Yazılım Geliştiricileri İçin Öneriler
- Mimari kararlar alınırken ekiple bir araya gelip detaylı tartışmalar yapılması ve geleceğe yönelik kararlar alınması gerekiyor.
- Karar verilemeyen veya ekibin teknik kapasitesini aşan noktalarda dışarıdan danışman bulunması faydalı olabilir.
- Dokümantasyon, pair programming ve code review gibi önemli noktalara önem verilmesi, yeni ekip üyelerinin kod tabanını ve kodlama standartlarını öğrenmesi için gerekli.
- 08:18Yazılım Projelerinde Karşılaşılan Sorunlar
- Günlük kurtarma adına yapılan çözümler, projenin legas olmamasına neden olabilir; kritik bug'lar hızlı bir şekilde fikslenip canlıya alınabilir, ancak kod standartları ve mimari kurallara uygunluğu gözden kaçırılabilir.
- Artan kullanıcı sayıları ve büyüyen veritabanları, uygulamaların ilk tasarlandığı şekilde gelişmemesine neden olabilir; örneğin, başlangıçta 10.000 kullanıcı ve dakikada 1.000 trafik tasarlanırken, 2 yıl sonra 500.000 kullanıcıya ve 50.000-100.000 trafik çıkabilir.
- Veritabanı türü (NoSQL veya RDBMS), Oracle SQL veya PostgreSQL gibi seçenekler ve veri yapısı, projenin ölçeklenebilirliğini ve uzun yıllar ayakta kalmasını etkileyen önemli faktörlerdir.
- 09:46Monolit Uygulamalar ve Modülerlik
- Monolit uygulamaları yönetmek ve yeniden yazmak ciddi bir problem olabilir; büyük ve tek parça oldukları için yeniden yazma aşaması uzun sürebilir ve ciddi planlama gerektirebilir.
- Mikro servislere geçmek ilk karar olarak düşünülmemeli, ancak monolit uygulamalarda mümkün olduğunca modüler bir yapı kurgulanmalıdır.
- Modüler yapıda geliştirilmiş monolit uygulamalarda, belirli yerlerde yaşanan başarısızlıklar veya problemler diğer modüllerden bağımsız bir şekilde ele alınabilir ve değiştirilebilir.
- 11:12Programlama Dili ve Platform Seçimi
- Programlama dili tercihinde ekibin uzmanlığı ve yazılımcıların kendi uzman oldukları dilin dışındaki dilleri kullanmaya meyilli olmaması önemli faktörlerdir.
- Uygulamanın çalışacağı platform ve kullanılacak üçüncü parti kütüphaneler dikkate alınmalıdır; örneğin, 2020'li yıllarda tüm servisler RESTful mimaride geliştirilirken, SOAP tabanlı web servisleri artık mantıklı bir tercih değildir.
- Bir uygulamayı sıfırdan yeniden yazarken, mevcut uygulamanın arka tarafta ayakta kalması ve bakımının yapılması, kritik güncellemelerin ve yeni fonksiyonların geliştirilmesi planda tutulmalıdır.