RabbitMQ'ü Message Queue alanında güçlü kılan iki nokta vardır. Bunlardan birincisi, hemen hemen her programlama dili için desteğinin bulunması diğeri ise, hemen hemen tüm işletim sistemleri için desteğinin bulunmasıdır. Son zamanlarda Message Queue alanında cloud uygulamaları da yaygınlaşsa da halen en çok tercih edilen yöntem local sunucuların kurulmasıdır.
Bu makalemizin konusu RabbitMQ Server kurulumu yapılırken işletim sistemi seçimidir. Aynı zamanda sunucu seçimi yapılırken de projeye uygun işletim sisteminin seçiminin önemi ve bu konudaki ipuçları anlatılacaktır. Bunlarla beraber RabbitMQ sunucusunun hangi durumlarda ayrı bir sunucuda konumlandırılması üzerine de ufak tüyolar vermeye çalışacağım.
Makalenin anlaşılması açısından konuyu hiç hakim değilseniz Message Queue Mantığı ve RabbitMQ Nedir? makalelerine de göz atmanızı tavsiye ederim. Ama konuyu zaten biliyorsanız ve merak ettiğiniz asıl konuı RabbitMq Server kurulumu için işletim sistemi seçimi ise o zaman konumuza yavaş yavaş başlaya biliriz...
Makalye başlamadan önce bir not daha düşmek istiyorum. Eğer RabbitMQ kurulumunu sadece eğitim amaçlı kurulumunu yapmayı düşünüyorsanız ilgili linklere tıklayarak kurulumları yapabilirsiniz. Teknik olarak eğitim amaçlı kurulum yapıyorsanız RabbitMQ sunucusunun nerede olduğunun çokta önemi yok. Önemli olan kurulumdan sonra RabbitMQ sunucusuna erişebiliyor olmanızdır. Bu makalenin konusu daha çok profesyonel projelerde RabbitMQ tercih ettiyseniz bu sunucunun nerede ve nasıl barındırılması, hangi donanımsal özelliklere sahip sunucu seçimi üzerinedir.
Konuya giriş yapmak açısından belirtmem gerekir ki sistem mimarinizin tamamı windows, yada tamamı Linux sunucularda ise RabbitMQ Server kurulumu için de böyle bir tercih yapmak zorunda değilsiniz. Özgürsünüz diyebilirim...
RabbitMQ Server ayrı bir sunucuda olacaksa kesinlikle dikkat etmeniz gereken konu sizin saniyelik ne kadar veri transferi yaptığınızdır. Örnek vermem gerekirse kendi kişisel bilgisayarım bile saniyede kuyruğa 3000'den fazla mesaj yazıp, bunun 6-7 katı kadar mesaj okuyabiliyorum. Ve önemli nokta da publisher ve consumer uygulamalarının da aynı bilgisayar üzerinde olması ve bu uygulamaları paralel olarak çalıştırmasıdır.
Bu işlemi ayrı-ayrı bir sunucu üzerindeki testlerini de makalenin ilerleyen bölümlerinde paylaşacağım. Aslında yukarıda verdiğim performans ölçümlerini paylaşmamın asıl nedeni mesaj alışverişi konusunda RabbitMQ Server uygulamasının ne kadar başarılı olduğunu gösterebilmek.
Sunucu seçiminden daha önemli olan noktalardan bir tanesi doğru ihtiyaç analizidir. Bunun için fikrimce proje başlangıcında analizlerin doğru yapılması ve biraz da tecrübeyle gelecek planlamasının doğru yapılmasıdır. Bu yüzden özellikle MİMARI TASARIM aşamasında Agile proje yönetim metodojisinin benimsenmemesinin de çok büyük önemi var...
Kuyruklarla çalışırken önemli olan diğer bir noktada da her zaman kuyruk sayısının artabileceği gerçeğidir. RabbitMQ Server uygulaması aslında sizin hangi kuyruğa veri yazmanızı çok önemsemez. Yani sizin kuyruk sayınızın çok olması aslında Exchange patternlerinin seçimi ile alakalı. Örneği direct paternini seçtiyseniz routing key'e bakar ve mesaj uygun kuyruğa yönlendirlir. Ama fanout paternini kullanırsanız ise tüm kuyruklara aynı verileri yazmış olursunuz.Topic yada header paterninde ise kriterlere göre Exchange'in karar vermesini beklersiniz. Demeye çalıştığım şey aslında olabilecek gelen giden mesaj sayısını yazılımı da göz önünde bulundurarak hesaplamaktır. Örneğin kullanacağım patternlerin ne olduğu ile ilgili mimari tasaımda bilginiz yoksa, ama mesaj sayısı ile ilgili ortalama bir fikriniz varsa anlık mesaj sayısını 3'le çarparak işlem yapabilirsiniz.
Önemli olan diğer bir nokta da kuyruk ve mesaj yapılarının kontrolsüzce büyüyebileceği noktalarda her zaman yeni RabbitMQ sunusunun kurulabileceğidir. Ama tabi ki yazılımı da buna göre tasarlamakta fayda var. Özellikle de RabbitMQ Server ayarlarını herzaman istediğiniz kadar sunucu eklenebilecek ve kuyrukları da mümkün olduğu kadar configlerden yönetebilmek çok önemlidir. Bu anlattıklarımın anlık mesaj sayısının 100 000'lerin üzeri için geçerli olduğunu da söylemek istiyorum. Ve hatta 100 binin altında bir mesaj trafiğiniz varsa uygun olan tek sunucuya kurabilirsiniz.
RabbitMQ Server için sunucu seçimiyle alakalı en önemli olan nokta bence KABA TABIRLE çökmelere karşı en dayanıklı sunucu seçimidir. Aslında bu tüm Message Queue uygulamaları için geçerli olan bir konudur. Çünkü Message Queue uygulamalarının temelinde mesajların güvenliği yatar. Tamamen çökmeyen bir sunucu tanımlaması yapmak imkansız aslında. En azından fiziksel sorunlar dışındaki sorunları çözebilme kapasitesi en yüksel işletim sistemi seçimi aslında burada devreye giriyor. Ne yazık ki Windows sunucuların bu konuda dayanıklılığı ile alakalı bir tecrübem yok. Ama 4 sene hatasız çalışan Redhat sunucusu ile bir tecrübem var ve bu konuda da önerebileceğim Linux çekirdekli işletim sistemlerinden Redhat.
Redhat'ın reklamını yapmak, diğer sunucuları özellikle Windows sunucuları kötülemek gibi bir niyetim yok. Böyle anlaşılmasın. Demeye çalıştığım şey aslında diğerleri ile uzun süreli bir tecrübem olmadığı yönünde.
Diğer önemli noktalardan biri de seçilecek sunucunun donanımsal özellikleridir. Aslında bunun için seçeceğiniz sunucuya yük testleri yapmak çok önemlidir. Mümkün olduğu kadar oluşabilecek mesaj trafiğinin 2-3 katı yükü kaldırabilecek kapasitede olması çok önemlidir. Tabi ki, RabbitMQ Server sunucunun özelliklerine göre performans sergiler ki bu yüzden de network trafiğini de dikkate alarak bazı durumlarda sadece sunucu kapasitesini artırmak yerine birkaç RabbitMQ sunucusu da kurmayı tercih edebilirsiniz.
Son olarak konuyu özetleyecek olursak, bana göre RabbitMQ Server kurulumu için en önemli olan nokta mesaage releability'sini sağlayacak bir sunucu seçimi çok önemlidir. Bunun yanında yüksek mesaj trafiği için RabbitMQ sunusunu çoklamanız gereken durumlar da olabilir.
Fikrimce en önemli olan nokta mimari tasarım için tecrübedir. Ve tabi ki doğru proje analizi ve bu analize göre doğru mimari tasarımdır. Olabilecek tüm durumlara hazırlı olmak için publisher ve consumer uygulamalarında RabbitMQ Server ayarlarını çoklanabilecek durumda olması da işini gelecekte çok kolaylaştırabilir.
Makelenin okunabilirliğini düşünerek burada makalemi sonlandırmak istiyorum. Umarım anlattığım konular faydalı olmuştur. Konuyla alakalı sorularınız olursa sormaktan çekinmeyin. Fırsat buldukça yanıtlamaya çalışacağım...
Bu makalemizin konusu RabbitMQ Server kurulumu yapılırken işletim sistemi seçimidir. Aynı zamanda sunucu seçimi yapılırken de projeye uygun işletim sisteminin seçiminin önemi ve bu konudaki ipuçları anlatılacaktır. Bunlarla beraber RabbitMQ sunucusunun hangi durumlarda ayrı bir sunucuda konumlandırılması üzerine de ufak tüyolar vermeye çalışacağım.
Makalenin anlaşılması açısından konuyu hiç hakim değilseniz Message Queue Mantığı ve RabbitMQ Nedir? makalelerine de göz atmanızı tavsiye ederim. Ama konuyu zaten biliyorsanız ve merak ettiğiniz asıl konuı RabbitMq Server kurulumu için işletim sistemi seçimi ise o zaman konumuza yavaş yavaş başlaya biliriz...
Makalye başlamadan önce bir not daha düşmek istiyorum. Eğer RabbitMQ kurulumunu sadece eğitim amaçlı kurulumunu yapmayı düşünüyorsanız ilgili linklere tıklayarak kurulumları yapabilirsiniz. Teknik olarak eğitim amaçlı kurulum yapıyorsanız RabbitMQ sunucusunun nerede olduğunun çokta önemi yok. Önemli olan kurulumdan sonra RabbitMQ sunucusuna erişebiliyor olmanızdır. Bu makalenin konusu daha çok profesyonel projelerde RabbitMQ tercih ettiyseniz bu sunucunun nerede ve nasıl barındırılması, hangi donanımsal özelliklere sahip sunucu seçimi üzerinedir.
Konuya giriş yapmak açısından belirtmem gerekir ki sistem mimarinizin tamamı windows, yada tamamı Linux sunucularda ise RabbitMQ Server kurulumu için de böyle bir tercih yapmak zorunda değilsiniz. Özgürsünüz diyebilirim...
RabbitMQ Server ayrı bir sunucuda olacaksa kesinlikle dikkat etmeniz gereken konu sizin saniyelik ne kadar veri transferi yaptığınızdır. Örnek vermem gerekirse kendi kişisel bilgisayarım bile saniyede kuyruğa 3000'den fazla mesaj yazıp, bunun 6-7 katı kadar mesaj okuyabiliyorum. Ve önemli nokta da publisher ve consumer uygulamalarının da aynı bilgisayar üzerinde olması ve bu uygulamaları paralel olarak çalıştırmasıdır.
Bu işlemi ayrı-ayrı bir sunucu üzerindeki testlerini de makalenin ilerleyen bölümlerinde paylaşacağım. Aslında yukarıda verdiğim performans ölçümlerini paylaşmamın asıl nedeni mesaj alışverişi konusunda RabbitMQ Server uygulamasının ne kadar başarılı olduğunu gösterebilmek.
Sunucu seçiminden daha önemli olan noktalardan bir tanesi doğru ihtiyaç analizidir. Bunun için fikrimce proje başlangıcında analizlerin doğru yapılması ve biraz da tecrübeyle gelecek planlamasının doğru yapılmasıdır. Bu yüzden özellikle MİMARI TASARIM aşamasında Agile proje yönetim metodojisinin benimsenmemesinin de çok büyük önemi var...
Kuyruklarla çalışırken önemli olan diğer bir noktada da her zaman kuyruk sayısının artabileceği gerçeğidir. RabbitMQ Server uygulaması aslında sizin hangi kuyruğa veri yazmanızı çok önemsemez. Yani sizin kuyruk sayınızın çok olması aslında Exchange patternlerinin seçimi ile alakalı. Örneği direct paternini seçtiyseniz routing key'e bakar ve mesaj uygun kuyruğa yönlendirlir. Ama fanout paternini kullanırsanız ise tüm kuyruklara aynı verileri yazmış olursunuz.Topic yada header paterninde ise kriterlere göre Exchange'in karar vermesini beklersiniz. Demeye çalıştığım şey aslında olabilecek gelen giden mesaj sayısını yazılımı da göz önünde bulundurarak hesaplamaktır. Örneğin kullanacağım patternlerin ne olduğu ile ilgili mimari tasaımda bilginiz yoksa, ama mesaj sayısı ile ilgili ortalama bir fikriniz varsa anlık mesaj sayısını 3'le çarparak işlem yapabilirsiniz.
Önemli olan diğer bir nokta da kuyruk ve mesaj yapılarının kontrolsüzce büyüyebileceği noktalarda her zaman yeni RabbitMQ sunusunun kurulabileceğidir. Ama tabi ki yazılımı da buna göre tasarlamakta fayda var. Özellikle de RabbitMQ Server ayarlarını herzaman istediğiniz kadar sunucu eklenebilecek ve kuyrukları da mümkün olduğu kadar configlerden yönetebilmek çok önemlidir. Bu anlattıklarımın anlık mesaj sayısının 100 000'lerin üzeri için geçerli olduğunu da söylemek istiyorum. Ve hatta 100 binin altında bir mesaj trafiğiniz varsa uygun olan tek sunucuya kurabilirsiniz.
RabbitMQ Server için sunucu seçimiyle alakalı en önemli olan nokta bence KABA TABIRLE çökmelere karşı en dayanıklı sunucu seçimidir. Aslında bu tüm Message Queue uygulamaları için geçerli olan bir konudur. Çünkü Message Queue uygulamalarının temelinde mesajların güvenliği yatar. Tamamen çökmeyen bir sunucu tanımlaması yapmak imkansız aslında. En azından fiziksel sorunlar dışındaki sorunları çözebilme kapasitesi en yüksel işletim sistemi seçimi aslında burada devreye giriyor. Ne yazık ki Windows sunucuların bu konuda dayanıklılığı ile alakalı bir tecrübem yok. Ama 4 sene hatasız çalışan Redhat sunucusu ile bir tecrübem var ve bu konuda da önerebileceğim Linux çekirdekli işletim sistemlerinden Redhat.
Redhat'ın reklamını yapmak, diğer sunucuları özellikle Windows sunucuları kötülemek gibi bir niyetim yok. Böyle anlaşılmasın. Demeye çalıştığım şey aslında diğerleri ile uzun süreli bir tecrübem olmadığı yönünde.
Diğer önemli noktalardan biri de seçilecek sunucunun donanımsal özellikleridir. Aslında bunun için seçeceğiniz sunucuya yük testleri yapmak çok önemlidir. Mümkün olduğu kadar oluşabilecek mesaj trafiğinin 2-3 katı yükü kaldırabilecek kapasitede olması çok önemlidir. Tabi ki, RabbitMQ Server sunucunun özelliklerine göre performans sergiler ki bu yüzden de network trafiğini de dikkate alarak bazı durumlarda sadece sunucu kapasitesini artırmak yerine birkaç RabbitMQ sunucusu da kurmayı tercih edebilirsiniz.
Son olarak konuyu özetleyecek olursak, bana göre RabbitMQ Server kurulumu için en önemli olan nokta mesaage releability'sini sağlayacak bir sunucu seçimi çok önemlidir. Bunun yanında yüksek mesaj trafiği için RabbitMQ sunusunu çoklamanız gereken durumlar da olabilir.
Fikrimce en önemli olan nokta mimari tasarım için tecrübedir. Ve tabi ki doğru proje analizi ve bu analize göre doğru mimari tasarımdır. Olabilecek tüm durumlara hazırlı olmak için publisher ve consumer uygulamalarında RabbitMQ Server ayarlarını çoklanabilecek durumda olması da işini gelecekte çok kolaylaştırabilir.
Makelenin okunabilirliğini düşünerek burada makalemi sonlandırmak istiyorum. Umarım anlattığım konular faydalı olmuştur. Konuyla alakalı sorularınız olursa sormaktan çekinmeyin. Fırsat buldukça yanıtlamaya çalışacağım...
Yorumlar
Yorum Gönder