Yılın ilk yarısı geride kaldı. Bazı özellikler eklendi, bazı hatalar düzeltildi ve bazı fikirler başarılı oldu. Ancak, bazı konular beklenenden daha uzun süre backlog’ta kaldı.
Bana göre bu, büyük bir yol haritası yapmak veya gerçekçi olmayan hedefler koymakla ilgili değil. Daha çok basit bir soruyu sormakla ilgili:
Yıl bitmeden hangi backend sistemlerini daha iyi hale getirmek istiyorum?
Son çalışmalarımı düşündüğümde, kendimi üç alanda geri dönmeye buldum:
- Performans
- Güvenlik
- Dokümantasyon
Bunlar göz alıcı hedefler değildir. Her zaman kullanıcılar tarafından görünmezler. Ancak, uzun vadede bir backend kod tabanını daha sağlıklı, daha güvenli ve çalışması daha kolay hale getiren türden iyileştirmelerdir.
Yıl Ortası Mühendislik Resetini Neden Tercih Ediyorum
Yıl Ortası Mühendislik Resetini Neden Tercih Ediyorum
Yılın başında, hedefler genellikle heyecan verici gelir. Yeni projeler, yeni özellikler, yeni araçlar ve yeni alışkanlıklar planlarız.
Fakat yıl ortasına geldiğimizde, gerçekler ortaya çıkmaya başlar.
Acelesi olan düzeltmeler ortaya çıkar. Ürün öncelikleri değişir. Bazı teknik borçlar göz ardı edilmiştir çünkü her zaman gönderilecek daha önemli bir şey vardır.
Bu yüzden H2 mühendislik resetini seviyorum.
Üzerinde çalıştığım sistemleri taze bir zihinle gözden geçirme şansı veriyor. Sadece “Bir sonraki neyi inşa etmeliyiz?” diye sormak yerine, şu soruları sorabiliyorum:
- Bizi ne yavaşlatıyor?
- Ne sıklıkla bozuluyor?
- Anlaması zor olan şeyler neler?
- Önümüzdeki altı ayı kolaylaştıracak olan nedir?
Bu tür bir resetin avantajı, backend kalitesinin tek bir büyük an içinde inşa edilmemesidir. Küçük, dikkatli iyileştirmeler yoluyla zamanla inşa edilir.
Hedef 1: Performansı İyileştir
Hedef 1: Performansı İyileştir
Performans, kullanıcılar acıyı hissetmeye başlayana kadar göz ardı edilmesi kolay bir konudur.
Bir sayfa biraz yavaş yüklenir. Bir API birkaç ekstra saniye alır. Bir veritabanı sorgusu 100 kayıtla iyi çalışır ama 100.000 kayıtla acı verici hale gelir.
Başlangıçta, bu sorunlar acil gibi görünmeyebilir. Ancak yavaş yavaş ürünün ağırlaşmasına neden olurlar.
Yılın ikinci yarısı için backend performansına daha intentional yaklaşmak istiyorum.
Üzerinde Durmak İstediğim Alanlar
Üzerinde Durmak İstediğim Alanlar
Laravel projeleri için bu, bazı yaygın alanlara yakından bakmak anlamına geliyor:
- Yavaş veritabanı sorguları
- Kayıp indeksler
- N+1 sorgu sorunları
- Ağır API yanıtları
- Gereksiz arka plan görevleri
- Tekrar tekrar getirilmesi gereken önbelleğe alınabilir veriler
Basit bir örnek, bir kontrol paneli sayfasıdır.
Belki kontrol paneli kullanıcı istatistiklerini, son siparişleri, ödeme verilerini ve bildirimleri gösteriyor. Başlangıçta her şey iyi çalışır. Ama birkaç ay sonra, sayfa yüklenmesi daha uzun sürmeye başlar.
Sorun tüm sistemde olmayabilir. Mesele, çok fazla veri yükleyen bir sorgu veya ilişkiyi doğru bir şekilde eager load etmeyen bir yapıdır.
Küçük düzeltmeler büyük farklılık yaratabilir.
Almak İstediğim Pratik Adımlar
Almak İstediğim Pratik Adımlar
Almak İstediğim Pratik Adımlar
Performans resetim basit olacak:
Öncelikle, en yavaş uç noktaları tanımlamak istiyorum. Tahmin yapmak istemiyorum. Ölçmek istiyorum.
Daha sonra, bu uç noktaların arkasındaki veritabanı sorgularını gözden geçirmek istiyorum. Fazla mı yükleniyorlar? İndeksleri doğru bir şekilde mi kullanıyorlar? İlişkileri temiz bir şekilde mi yüklüyorlar?
Son olarak, gerçekten mantıklı olduğunda önbelleği kullanmak istiyorum.
Her şey önbelleğe alınmak zorunda değil. Ancak sık değişmeyen verilerin her istekte yeniden oluşturulmaması gerekir.
Amaç her şeyi mükemmel hale getirmek değil. En çok kullanılan sistem parçalarını daha hızlı ve daha güvenilir hale getirmek.
Hedef 2: Güvenliği Güçlendirin
Hedef 2: Güvenliği Güçlendirin
Güvenlik tek seferlik bir görev değildir.
Kimlik doğrulama ekledikten veya bir paket yükledikten sonra tamamlanan bir şey değildir. Uygulama büyüdükçe düzenli gözden geçirme gerektirir.
Yeni rotalar eklenir. Yeni izinler oluşturulur. Yeni entegrasyonlar bağlanır. Zamanla, küçük boşluklar ortaya çıkabilir.
Bu nedenle güvenlik, benim ikinci H2 backend hedefimdir.
Yeniden Kontrol Etmek İstediğim Alanlar
Yeniden Kontrol Etmek İstediğim Alanlar
Laravel uygulamalarında, şunları gözden geçirmek istiyorum:
- Kimlik doğrulama akışı
- Yetkilendirme kuralları
- Rol ve izin kontrolleri
- API token kullanımı
- Form istek doğrulaması
- Dosya yükleme işlemleri
- Duyarlı veri açığa çıkması
- Ortam yapılandırması
Pek çok geliştiricinin karşılaştığı gerçek bir durum, izin mantığının dağınık hale gelmesidir.
Örneğin, bir kontrolcü bir kullanıcının admin olup olmadığını kontrol eder. Diğeri, kullanıcının kaynağa sahip olup olmadığını kontrol eder. Başkası bir politika kullanır. Bir diğeri ise mantığı doğrudan metodun içine yazmıştır.
Her şey işleyebilir, ama güvenilir hale getirmek zorlaşır.
Yetki mantığı tutarsız olduğunda, gelecekteki değişiklikler riskli hale gelir.
Almak İstediğim Pratik Adımlar
Almak İstediğim Pratik Adımlar
Almak İstediğim Pratik Adımlar
Yılın ikinci yarısı için, yetkilendirme mantığını temizlemek ve daha fazla kontrolü uygun Laravel politikalarına veya kapılara taşımak istiyorum.
Ayrıca, doğrulama kurallarını daha dikkatli gözden geçirmek istiyorum.
İyi bir doğrulama sadece güzel hata mesajları göstermekle ilgili değildir. Sistemi kötü verilerden, beklenmedik girdilerden ve uç durum senaryolarından korur.
Ayrıca, API’lerden dönen verileri kontrol etmek de önemlidir.
Bazen bir API yanıtı, ön yüzün gerçekten ihtiyaç duyduğundan daha fazla alan içerebilir. Bu, içerideki veya hassas bilgileri yanlışlıkla açığa çıkarabilir.
Bu nedenle güvenlik hedefi basit:
Erişimi net, girişi katı ve çıktıyı kasıtlı hale getirin.
Bu cümle kolay hatırlanır ve çok şeyi kapsar.
Hedef 3: Dokümantasyonu İyileştir
Hedef 3: Dokümantasyonu İyileştir
Dokümantasyon genellikle ertelenmesi en kolay şeydir.
Meşgul olduğumuzda, kendimize “Bunu daha sonra dokümante ederim.” diye söyleriz.
Ama sonra genellikle “asla” olur.
Ve birkaç ay sonra, birisi sorar:
“Bu iş nasıl çalışıyor?”
“Bu API neden bu şekilde davranıyor?”
“Bu webhook başarısız olduğunda ne oluyor?”
“Bu yapılandırma nereden geliyor?”
Ve aniden, eksik dokümantasyon pahalı hale gelir.
H2 için, dokümantasyonu bir arka uç sisteminin parçası olarak görmek istiyorum, ekstra bir görev olarak değil.
Daha İyi Dokümante Etmek İstediğim Şeyler
Daha İyi Dokümante Etmek İstediğim Şeyler
Büyük belgeler yazmak istemiyorum, kimsenin okumadığı. Geliştiricilerin daha hızlı hareket etmesine yardımcı olan yararlı dokümantasyon istiyorum.
Bu şunları içerir:
- API davranışı
- Önemli iş kuralları
- Queue görevleri
- Planlı komutlar
- Webhook akışları
- Ortam değişkenleri
- Kurulum adımları
- Yaygın hata ayıklama notları
Örneğin, bir ödeme webhook’u bir sipariş durumunu güncellerse, bu akışın anlaşılması kolay olmalıdır.
Bir geliştirici kısa bir not okuyarak şunları bilmelidir:
- Ödeme sağlayıcının hangi olayı geldiği
- Hangi rotanın bunu aldığı
- Hangi görev işleyeceği
- Hangi tabloların güncelleneceği
- Webhook başarısız olursa ne olacağı
Bu, 20 sayfalık bir belge gerektirmez. Temiz bir Markdown dosyası yeterli olabilir.
Almak İstediğim Pratik Adımlar
Almak İstediğim Pratik Adımlar
Almak İstediğim Pratik Adımlar
Dokümantasyon resetim, sistemin en kafa karıştırıcı bölgeleri ile başlayacak.
Daha önce defalarca açıklamak zorunda kaldığım alanları dokümante etmek istiyorum. Bu genellikle dokümantasyonun eksik olduğuna dair iyi bir işarettir.
Ayrıca, mümkünse belgeleri kodun yakınında tutmak istiyorum.
Örneğin:
- API notları bir
/docsklasöründe - Kurulum talimatları
README.mdiçinde - Karmaşık hizmet açıklamaları ilgili modülün yanında
- Kısa yorumlar, sadece kodun bağlama ihtiyaç duyduğu yerlerde
İyi bir dokümantasyon her kod satırını açıklamaz. Kararları, akışları ve bariz olmayan önemli detayları açıklar.
Resetin Gerçekçi Olmasını Sağlamak
Resetin Gerçekçi Olmasını Sağlamak
Planlama ile ilgili en büyük hata, her şeyi bir anda düzeltmeye çalışmaktır.
Bu genellikle hayal kırıklığına yol açar.
Bu nedenle, H2 resetini küçük ve gerçekçi tutmak istiyorum.
“Tüm backend’i iyileştir” demek yerine, şunları diyebilirim:
- En yavaş 3 uç noktayı optimize et
- En hassas modüller için yetkilendirmeyi gözden geçir
- En kafa karıştırıcı 5 backend akışını dokümante et
Bunlar çok daha ulaşılabilir görünüyor.
Ayrıca görünür ilerleme yaratıyor.
Bir backend sistemi, belirli sorunları seçip dikkatlice çözdüğümüzde gelişir.
Kaynak: Orijinal Makale



