Elimde birden fazla uygulama var ve bunları entegre etmek istiyorum. Mesela bir uygulamam içerik üretirken diğer uygulamam da üretilen içerik üzerinden bazı hesaplamalar yapıp kullanıcılara tavsiyelerde bulunması gerekiyor.
İki uygulamayı entegre etmek için nasıl yöntemler kullanabilirim?
Tecrübe ettiklerim ve okuduklarım içinde en yaygın kullanım ve/veya uygun kullanım sanıyorum mesaj kuyrukları oluşturmaktır.
Tipik olarak bir sistemde bir kod çalıştığı zaman ya da bir belirli aksiyonlar gerçekleştiği zaman bir mesaj kuyruğu (message queue) içine mesaj atılır. O kuyruğu dinleyen başka uygulamalar da gelen mesajlara göre iş yapar. Yapı olarak mesajı atan ve mesajı alan aynı uygulama da olabilir. Mesajı yayınlayan ile mesajı alan kısımlar birbirinden bağımsızdır. Aynı anda çalışıyor olmasına bile gerek yoktur. Mesajı attıktan sonra alan kısım belirli bir süre sonra alsa da sıkıntı yaşanmaz. Büyük oranda işleri halleder. Rabbit MQ, Apache Kafka mesajlaşma türleri için kullanılabilir. Birden fazla şekli olduğu için destekleyen yapıları bilmek gerekir.
Eğer birim zamanda gelen kayıtlar çok fazla ise dosya işleme seçeneği de kullanılabilir. Yani gün boyunca bir sürü işlem yapıyorsunuz ve gün sonunda bu işlemlerin hepsini birden başka bir sisteme aktarmak istiyorsunuz, bu durumda işlemleri bir dosya aracılığıyle çıkarmak(export) ve daha sonra diğer sistemden içeri almak (import) da bir seçenek olarak önümüzde durur. Apache Camel sanıyorum en çok kullanılan uygulamalardan birisidir. Bunun yanında benim proje bazlı direk python kodlarıyla yaptığım örnekler de var.
Gönderici ile alıcı arasındaki bağlantı gerçek zamanlı olacaksa web servisler de kullanılabilir. Rest ve Soap bazlı servisler işinizi görecektir.
Daha da hızlı için direk açık bir bağlantı(live connection) da kurulabilir ama pratikte her zaman kullanmak gerekli olmayabilir.