Ana içeriğe geç

Kitap 09

Yazılım Mimarisi

Büyük kod tabanlarını düzenli ve bakımı kolay tutan tasarım ilkeleri ve mimari stiller.

İçindekiler

  1. 01Adapter Deseni1Adapter deseni, mevcut bir sınıfı yeni bir arayüzle sararak bir arayüz bekleyen kodun uyumsuz bir arayüzü kullanabilmesini sağlayan yapısal tasarım desenidir.
  2. 02Backend for Frontend2Backend for frontend, web ya da mobil uygulama gibi her istemci türünün kendi ihtiyaçlarına göre uyarlanmış küçük bir backend aldığı bir mimari desendir.
  3. 03Builder Pattern3Builder pattern, karmaşık bir nesneyi ayrı bir builder nesnesiyle, argümanlarla dolu uzun bir constructor yerine adlandırılmış adımlarla adım adım oluşturur.
  4. 04Circuit Breaker Deseni4Circuit breaker deseni, arızalı bir bağımlılığa yapılan çağrıları bir süre durdurarak ve zaman aşımlarını beklemek yerine hızlıca hata vererek sistemi korur.
  5. 05Clean Architecture5Clean architecture, temel iş kuralları framework'e, veritabanına ya da kullanıcı arayüzüne asla bağımlı olmasın diye yazılımı katmanlara ayırma yöntemidir.
  6. 06Consistent Hashing6Consistent hashing (tutarlı hashleme), anahtarları sunuculara, sunucu eklenip çıkarıldığında yalnızca küçük bir kısmı yer değiştirecek şekilde dağıtır.
  7. 07CQRS7CQRS, veriyi değiştiren kodu (komutlar) veriyi okuyan koddan (sorgular) ayırarak iki ayrı modele bölen bir mimari desendir.
  8. 08Dağıtık Sistem8Dağıtık sistem, bir ağ üzerinden birlikte çalışan ve kullanıcılarına tek bir sistem gibi görünen bilgisayarlar kümesidir.
  9. 09Decorator Pattern9Decorator pattern, bir nesneyi aynı arayüze sahip başka bir nesneyle sararak orijinal kodu değiştirmeden ona loglama, önbellekleme gibi davranışlar ekler.
  10. 10Dependency Injection10Dependency injection, bir nesnenin ihtiyaç duyduğu diğer nesneleri kendisi oluşturmak yerine dışarıdan almasını sağlayan bir tasarım tekniğidir.
  11. 11Dikey Ölçekleme11Dikey ölçekleme (scale up), daha fazla makine eklemek yerine tek bir makineye daha fazla CPU, bellek ya da daha hızlı depolama vererek kapasiteyi artırır.
  12. 12Domain-Driven Design12Domain-driven design, kodu iş alanına yakından modelleyen ve alan uzmanlarıyla aynı dili kullanan bir yazılım geliştirme yaklaşımıdır.
  13. 13DRY13DRY, her bilgi ya da mantık parçasının çoğaltılmak yerine tek bir yetkili temsile sahip olması gerektiğini söyleyen bir yazılım tasarım ilkesidir.
  14. 14Event Sourcing14Event sourcing, uygulama durumundaki her değişikliği değiştirilemez bir olay olarak saklayıp güncel durumu olayları yeniden oynatarak kuran tasarım desenidir.
  15. 15Factory Deseni15Factory deseni, nesne oluşturmayı özel bir fonksiyona ya da sınıfa taşıyan ve çağıranların somut sınıfı hiç adlandırmadığı oluşturucu bir tasarım desenidir.
  16. 16Gevşek Bağlılık16Gevşek bağlılık, bileşenlerin birbirine olabildiğince az bağımlı olduğu, böylece birinin diğerlerini bozmadan değişebildiği bir tasarım ilkesidir.
  17. 17Hata Toleransı17Hata toleransı, bir sistemin bazı donanım ya da yazılım bileşenleri arızalandığında, belki azalmış kapasiteyle de olsa doğru çalışmayı sürdürebilmesidir.
  18. 18Hexagonal Architecture18Hexagonal architecture, çekirdek iş mantığının dış dünyayla yalnızca portlar ve değiştirilebilir adaptörlerle konuştuğu bir yazılım yapılandırma yöntemidir.
  19. 19İlgilerin Ayrılması19İlgilerin ayrılması, bir programı her biri davranışının açıkça tanımlanmış tek bir yönünden sorumlu ayrı parçalara bölen bir tasarım ilkesidir.
  20. 20İstemci-Sunucu Mimarisi20İstemci-sunucu mimarisi bir sistemi veri ya da işlem isteyen istemcilere ve bunları sağlayan sunuculara ayırır; tarayıcının sunucudan sayfa istemesi gibi.
  21. 21Katmanlı Mimari21Katmanlı mimari, uygulamayı sunum, iş mantığı ve veri erişimi gibi yatay katmanlara böler ve her katman yalnızca altındaki katmanı çağırır.
  22. 22KISS İlkesi22KISS ilkesi, sistemlerin olabildiğince basit tutulduğunda en iyi çalıştığını, gereksiz karmaşıklıktan kaçınılması gerektiğini söyleyen tasarım yönergesidir.
  23. 23Konsensüs Algoritması23Konsensüs algoritması, bir grup makinenin, bazıları çökse ya da mesajlar kaybolsa bile tek bir değerde ya da sıralı bir karar kaydında anlaşmasını sağlar.
  24. 24Mikroservisler24Mikroservisler, bir uygulamanın ağ üzerinden iletişim kuran, küçük ve bağımsız olarak dağıtılabilen servislere bölündüğü bir mimari tarzdır.
  25. 25Monolit25Monolit, tek parça olarak derlenip dağıtılan, tüm özelliklerin tek kod tabanını, tek süreci ve çoğunlukla tek veritabanını paylaştığı yazılım uygulamasıdır.
  26. 26MVC26MVC, uygulamayı veri ve mantık için Model, gösterim için View ve kullanıcı girdisini yöneten Controller olmak üzere üçe ayıran bir mimari desendir.
  27. 27MVVM27MVVM (Model-View-ViewModel), ekranın durumunu ve eylemlerini ViewModel'in tuttuğu, View'in ona bağlandığı arayüz kalıbıdır; durum değişince arayüz de değişir.
  28. 28Observer Deseni28Observer deseni, subject adlı bir nesnenin durumu değiştiğinde abone listesini otomatik olarak bilgilendirdiği davranışsal bir tasarım desenidir.
  29. 29Olay Güdümlü Mimari29Olay güdümlü mimari, servislerin bir siparişin verilmesi gibi olaylar üreterek ve bunlara tepki vererek iletişim kurduğu bir yazılım tasarım tarzıdır.
  30. 30Ölçeklenebilirlik30Ölçeklenebilirlik, bir sistemin daha fazla kullanıcı ya da veri gibi artan iş yükünü, kaynak ekleyerek performansı düşmeden karşılayabilme yeteneğidir.
  31. 31Peer-to-Peer31Peer-to-peer (P2P, eşler arası), eşlerin merkezî sunucu olmadan doğrudan bağlanıp kaynak paylaştığı, her birinin hem istemci hem sunucu olduğu ağ tasarımıdır.
  32. 32Refactoring32Refactoring, mevcut kodun dışarıdan görünen davranışını değiştirmeden daha temiz ve bakımı kolay hâle getirmek için yeniden yapılandırılması sürecidir.
  33. 33Repository Deseni33Repository deseni, veri erişimini koleksiyon benzeri bir arayüzün arkasına gizler; iş kodu nesnelerin nerede saklandığını bilmeden yükleyip kaydedebilir.
  34. 34Saga Deseni34Saga deseni, birkaç servise yayılan bir işlemi yerel adımlar dizisi olarak çalıştırır ve bir adım başarısız olursa tamamlananları telafi eylemleriyle geri alır.
  35. 35Service Discovery35Service discovery (servis keşfi), dağıtık bir sistemde servislerin, örnekler başlayıp durdukça değişen diğer servislerin güncel adreslerini bulma yoludur.
  36. 36Servis Odaklı Mimari36Servis odaklı mimari, kurumsal yazılımı birbiriyle standart sözleşmelerle iletişim kuran, yeniden kullanılabilir ve ağdan erişilebilir servislerden kurar.
  37. 37Sidecar Deseni37Sidecar deseni, bir uygulamanın yanında yaşam döngüsünü ve ağını paylaşan yardımcı bir süreç çalıştırarak loglama, proxy ya da güvenlik gibi özellikler ekler.
  38. 38Singleton Deseni38Singleton deseni, bir sınıfın yalnızca tek bir örneğinin bulunmasını sağlayan ve ona tek, küresel bir erişim noktası sunan oluşturucu bir tasarım desenidir.
  39. 39SOLID39SOLID, geliştiricilerin daha anlaşılır, genişletilebilir, test edilebilir ve bakımı kolay kod yazmasına yardım eden beş nesne yönelimli tasarım ilkesidir.
  40. 40Strangler Fig Deseni40Strangler fig deseni, eski bir sistemi özellikleri tek tek yeni koda yönlendirerek, eski sistem kapatılana kadar adım adım değiştirme yöntemidir.
  41. 41Strategy Deseni41Strategy deseni, değiştirilebilir algoritmaları tek arayüzün arkasına koyup çalışma zamanında aralarında geçiş yapılmasını sağlayan davranışsal bir desendir.
  42. 42Tasarım Deseni42Tasarım deseni, yazılım tasarımında sık görülen bir soruna kanıtlanmış, yeniden kullanılabilir çözümdür; hazır kod değil, genel bir şablon olarak anlatılır.
  43. 43Teknik Borç43Teknik borç, daha uzun sürecek daha iyi bir yaklaşım yerine şimdi hızlı ya da sınırlı bir çözüm seçilmesiyle doğan, gelecekteki ek iş maliyetidir.
  44. 44Twelve-Factor App44Twelve-factor app, bulutta taşınabilir, dağıtımı kolay ve ölçeklenmesi basit olması için on iki pratiğe göre geliştirilmiş bir web uygulamasıdır.
  45. 45Uyum45Uyum, bir modül, sınıf ya da servis içindeki sorumlulukların birbirine ne kadar ait olduğunun ölçüsüdür ve yüksek uyum iyi tasarımın işaretidir.
  46. 46YAGNI46YAGNI, ileride gerekebilir diye değil, gerçekten ihtiyaç duyulana kadar bir özellik ya da soyutlama inşa etmemeyi söyleyen bir extreme programming ilkesidir.
  47. 47Yatay Ölçekleme47Yatay ölçekleme (scale out), bir sistemin kapasitesini tek bir makineyi büyütmek yerine daha fazla makine ekleyip işi onlara dağıtarak artırır.
  48. 48Yüksek Erişilebilirlik48Yüksek erişilebilirlik, bir sistemin, çoğunlukla yedeklilikle tek hata noktalarını ortadan kaldırarak neredeyse her zaman çalışır durumda kalabilmesidir.

Kütüphaneye dönSonraki kitap: Test ve Kalite

Rastgele bir sayfa oku
Bugünkü tekrarı aç
Koyu temaya geç
Read this page in English

Daha fazla

Ayarlar