Farklı alanlarda çalışan organizasyonlar aynı gibi görünen yazılım geliştirme kalıplarını birbirlerinden bağımsız olarak keşfetmekteler. Bu sistemler modern ihtiyaçları karşılayabilmek amacıyla daha sağlam, daha dirençli ve daha esnekler.
Bu değişiklikler uygulama gereksinimlerinin son yıllarda dramatik olarak değişmesinden dolayı ortaya çıktı. Bundan yalnızca birkaç yıl önce büyük bir uygulama demek onlarca sunucu, saniyeler düzeyinde tepki zamanı, saatlerce süren çevrimdışı bakım ve gigabaytlarca veri demekti. Bugün ise uygulamalar mobil cihazlardan, binlerce çok-çekirdekli işlemcili sunuculardan oluşan bulut tabanlı sunucu kümelerine kadar bir çok yerde çalışmakta. Kullanıcılar milisaniyeler içerisinde yanıt ve %100 erişilebilirlik talep etmekteler. Veriler petabayt cinsinden ölçülmekte. Uzun lafın kısası bugünün ihtiyaçları dünün yazılım mimarileriyle karşılanamamakta.
Biz sistem mimarisinde tutarlı bir yaklaşıma ihtiyaç duyulduğuna ve gerekli olan tüm parçaların zaten farkında olunduğuna inanıyoruz: biz duyarlı, dirençli, esnek ve mesaj güdümlü sistemler istiyoruz. Bu sistemlere Reaktif Sistemler diyoruz.
Reaktif Sistem olarak geliştirilen sistemler daha esnek, gevşek bağlı ve ölçeklenebilir olmaktadır. Bu da onların daha kolay geliştirilebilir ve değişime açık olmasını sağlamaktadır. Bu sistemler arızalara karşı çok daha toleranslı olmakla beraber arıza oluştuğunda felakete dönüşmesini önleyecek şekilde onunla zarifçe başa çıkarlar. Reaktif sistemler kullanıcılarına verimli bir etkileşim sunma adına ileri derecede duyarlıdırlar.
Reaktif Sistemler:
Duyarlıdır: Sistem eğer mümkünse anlamlı bir sürede yanıt verir. Duyarlılık, kullanılabilirlik ve işe yararlığın temel taşlarından biridir ama bundan daha önemlisi arızaların daha hızlı tespit edilip etkin şekilde ele alınması anlamına da gelir. Duyarlı sistemler hızlı ve istikrarlı yanıt zamanına odaklanır, güvenilir üst sınırlar içerisinde istikrarlı hizmet kalitesi sunarlar. Bu istikrarlı davranış, hatalarla mücadeleyi basitleştirir, son kullanıcıda güven sağlar ve daha fazla etkileşime girmeyi destekler.
Dirençlidir: Sistem arıza anında duyarlı kalır. Bu, yalnızca yüksek erişilebilir, kritik sistemlere has değildir. Dirençli olmayan her sistem arıza durumunda duyarsız kalacaktır. Dirençlilik replikasyon, kapsama, izolasyon ve delegasyon ile sağlanır. Arızaların bileşenlerce kapsanması ve bileşenlerin birbirlerinden izole edilmesi sistemin parçalarının arızalanması durumunda sistemin tamamını etkilemeden arızalanan bileşenlerin onarılabilmesini sağlar. Her bileşenin onarımı başka bir (dışarıdan) bileşene delege edilmiştir ve gerektiğinde yüksek erişilebilirlik replikasyon ile sağlanır. Bileşenlerin istemcileri arızalarla uğraşmak zorunda bırakılmaz.
Esnektir: Sistem değişken iş yükü altında duyarlı kalır. Reaktif Sistemler, gerektiğinde girdilere hizmet veren kaynakları artırarak ya da azaltarak girdi seviyelerindeki değişikliklere tepki verebilirler. Bu, merkezi darboğazları ve çekişme noktaları olmayan, bileşenleri parçalayıp ya da replike edip girdileri onlara dağıtma yeteneğine sahip tasarımlarla mümkün olmaktadır. Reaktif Sistemler tahminlenebilir ve bir o kadar da Reaktif, ölçeklenebilir algoritmaları uygun canlı performans ölçütleri sağlayarak destekler. Esnekliğe herkesin erişebileceği uygun maliyetli donanım ve yazılım platformları üzerinde ulaşır.
Mesaj Güdümlüdür: Reaktif Sistemler gevşek bağlılık, izolasyon ve konum şeffaflığını sağlayacak ve hataları mesaj olarak delege etmeyi mümkün kılacak şekilde bileşenleri arasında bir sınır çizmek için asenkron mesaj iletimini kullanır. Belirtik mesaj iletimi kullanmak sistemdeki mesaj kuyruklarını şekillendirip izleyerek ve gerektiğinde geri-basınç uygulayarak yük yönetimini, esnekliği ve akış kontrolünü sağlar. İletişim için konumdan bağımsız mesajlaşma kullanmak tek sunucuda ya da sunucu kümelerinde aynı kurgu ve semantik ile arıza yönetimini mümkün kılar. Tıkanmasız iletişim alıcıların kaynakları yalnızca etkin olduklarında kullanmasına izin vererek, daha az kaynak kullanımının yolunu açar.
Büyük sistemler daha küçük sistemlerin bir araya gelmesinden oluşurlar ve bu sebeple bileşenlerinin Reaktif özelliklerine bağımlıdırlar. Bunun anlamı, Reaktif Sistemler tasarım ilkelerini hayata geçirirler ve bu özellikleri bütün seviyelerde geçerli kılarlar, dolayısıyla bir araya gelerek büyük sistemler oluşturabilirler. Dünyanın en büyük sistemleri bu özellikler üzerine kurulu mimarilere sahiptirler ve her gün milyarlarca insanın ihtiyaçlarına hizmet vermektedirler. Bu tasarım ilkelerini her seferinde yeniden keşfetmek yerine, bilinçli olarak en baştan uygulamanın zamanı gelmiştir.