Software Architecture Flashcards
Professional Keywords
design pattern
Belirli bir problemi çözmek için veya bir amaca ulaşmak için tasarlanmış tekrar tekrar kullanılabilen, test edilmiş ve kanıtlanmış bir çözüm şablonudur.
Professional Keywords
domain driven design (DDD)
(Yineleyici desen) Gerçek dünyadaki iş modellerini herkesin anlayabileceği ortak bir dil(Ubiquitous Language) ile oluşturarak dijital dünyaya uyarlamak için yazılımların nasıl modellenmesi gerektiği konusunda bir felsefeyi savunur.
Domain = Bir uygulama içerisinde bir biri ile bağlantılı olan ve uygulamanın logic’ini oluşturan ufak kümeler anlamına gelmektedir.
Professional Keywords
monolitik app
Monolitik uygulama mimarisi, tüm uygulamanın tek bir kod tabanı içinde bulunduğu bir yapıdır.
Bu mimaride, tüm bileşenler tek bir çalışma zamanında çalışır ve birbirleriyle doğrudan iletişim kurarlar.
Uygulamanın her bir parçası birbiriyle yakından bağlantılıdır ve genellikle aynı veritabanını kullanırlar.
Bu, uygulamanın ölçeklendirilmesini ve değiştirilmesini zorlaştırabilir. Ancak, monolitik mimari, basit, küçük ve orta ölçekli uygulamalar için kolay bir geliştirme süreci sunabilir.
Professional Keywords
microservices
uygulamanın farklı bileşenlerinin, özerk ve bağımsız bir şekilde çalıştığı bir yapıdır.
Her bir bileşen, kendine özgü bir işlevi yerine getirir ve diğer bileşenlerle iletişim için bir API sağlar.
Bu mimaride, her bir bileşenin ölçeklendirilmesi ve bakımı kolaydır, çünkü her bir bileşen ayrı bir işlemci çekirdeği, bellek ve veritabanı kullanabilir.
Microservice mimarisi, büyük ve karmaşık uygulamalar için özellikle uygun bir çözümdür, ancak uygulamanın farklı parçalarının birbirleriyle iletişimi için daha fazla işlem ve ağ trafiği gerektirebilir.
Professional Keywords
iterator pattern
bir nesne koleksiyonundaki elemanlara sırayla erişmek ve koleksiyon üzerinde işlem yapmak için bir arayüz sağlar.
Bu desen, koleksiyonun iç yapısını gizleyerek, elemanlara erişimi kolaylaştırır ve sadece bir iterasyon arayüzü sağlar.
Örneğin programala dillerindeki for-each yapıları
Professional Keywords
state machine
(Durum makinesi), bir sistemdeki durumları ve olayları tanımlayarak sistemin davranışını modelleyebilir.
Örneğin, bir oyun oynarken karakterin farklı durumları (duruyor, koşuyor, saldırıda, savunmada vb.) ve bunlar arasındaki geçişler bir durum makinesi ile modellenebilir.
Aynı şekilde, bir otomobilin farklı hızlarda sürüşü de bir durum makinesi ile modellenebilir.
Professional Keywords
rule engine
Kurallara dayalı işlem yapan bir yazılım bileşenidir.
Kural motoru, bir dizi kuralı değerlendirerek belirli bir işlemi yapar veya bir sonuç üretir.
Kural motoru, verileri analiz ederek,
belirli koşulların yerine getirildiği durumlarda belirli eylemleri tetikleyebilir.
Professional Keywords
N-tier
N-tier mimaride, uygulama üç veya daha fazla katmana ayrılır.
Bu katmanlar genellikle;
* Kullanıcı arayüzü (UI),
* iş mantığı (business logic)
* veri depolama (data storage) katmanlarıdır.
N-tier mimaride, her katman kendi sorumluluklarına sahip olur ve diğer katmanlardan bağımsız çalışır.
Bu da uygulamanın daha esnek ve ölçeklenebilir hale gelmesini sağlar.
Örneğin, uygulamanın kullanıcı sayısı arttığında, işlemci gücünü artırmak için iş mantığı katmanı birden fazla sunucuda çalıştırılabilir
Professional Keywords
functional programming
Bu yaklaşımda fonksiyonlar, girdilerle çalışır ve bir çıktı üretirler, fakat programın başka bir yerinde durumu etkilemezler.
Nesneye yönelik programlama yaklaşımının aksine, değişmez veri yapıları kullanır ve işlevleri birbirinden bağımsız hale getirir.
Bu da programın daha anlaşılır, okunaklı ve modüler olmasını sağlar. Ayrıca fonksiyonların girdi ve çıktıları net bir şekilde belirtilir, dolayısıyla bir fonksiyonun test edilmesi ve doğruluğunun kontrol edilmesi kolaylaşır.
Professional Keywords
non-blocking I/O
Bir işlemin (genellikle bir I/O işlemi) tamamlanması beklenirken, programın diğer işlemleri yürütmeye devam etmesini sağlayan bir programlama yöntemidir.
Bu yöntem, bir I/O işlemi sırasında programın diğer işlemleri yürütmesine izin vererek, sistem kaynaklarını daha etkili bir şekilde kullanmasına olanak sağlar.
Professional Keywords
concurrent marking
(Eş zamanlı işaretleme) JS de kullanılan garbage collection tekniğidir. Avantajı main-thread’in çalışmasını durdurmuyor
Professional Keywords
memory leak
(Bellek sızıntısı) Production ortamındaki bir uygulamanın kullanım oranında anormal bir artış olmamasına rağmen devamlı artan bellek tüketimi
Professional Keywords
MVC(Model-View-Controller)
Burada Model verileri ve mantığı yönetir, Görünüm bilgileri görüntüler ve denetleyici Model ile Görünümü birbirine bağlayarak kullanıcı girişini yönetir.
Kullanım: Veri işleme ile kullanıcı arayüzü arasında net bir ayrım olan Web uygulamaları için.
Professional Keywords
MVP(Model-View-Presenter)
Burada, Model verileri yönetir, ekran verilerini görüntüler ve Sunucuya kullanıcı komutları gönderir; Sunucu ise Modelden verileri alır ve Görünüme sunar.
Kullanım: Android uygulamaları gibi test ve kullanıcı arayüzü mantığını vurgulayan uygulamalar.
Professional Keywords
MVI(Model-View-Intent)
MVI, tek yönlü veri akışını benimseyen reaktif bir mimaridir ve belirli bir durum verildiğinde kullanıcı arayüzünün tutarlı kalmasını sağlar.
Burada Model durumu temsil eder, Görünüm durumu yansıtır, niyet ise durumu değiştiren kullanıcı eylemlerini temsil eder.
Kullanım: Durum tutarlılığına odaklanan RxJava gibi reaktif uygulamalar veya çerçeveler.