Mikroservis yaklaşımında servisler arası iletişim mimarileri
Inter-service communication architectures in microservices approach
Yazar: YALÇIN YELPAZE
Danışman: DR. ÖĞR. ÜYESİ SERPİL YILMAZ
İzmir Katip Çelebi Üniversitesi / Fen Bilimleri Enstitüsü / Yazılım Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2024
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control ; Bilim ve Teknoloji = Science and Technology
Dizin: Bilgisayar yazılımları = Computer softwares ; Bilişim mühendisliği = Informatic engineering ; Bilişim teknolojileri ve yazılım dersi = Information technology and software course ; Mimari yazılımlar = Architectural softwares ; Nesneye dayalı yazılım = Object oriented software ; Yazılım mühendisliği = Software engineering

Özet:
Mikroservis mimarisi, günümüz monolitik mimarisine oranla modern yazılım geliştirme süreçlerinde giderek daha popüler hale gelmektedir. Bu mimari, bir uygulamayı küçük, bağımsız ve işlevsel parçalara ayırarak geliştirmeyi ve dağıtmayı amaçlar. Her servis diğer servislerden teknoloji, programlama dili vb. bağımsız olarak geliştirilebildiği için son yıllarda popüler olmaya başlamıştır. Her ne kadar son yıllarda popüler olmaya devam etse de, bu mikroservis tabanlı sistemlerdeki iletişimlerde, genellikle karmaşıklık ve zorluklarla karşılaşılabilinir. Geleneksel monolitik mimarilere kıyasla, mikroservislerin dağıtılmış doğası, farklı servisler arasındaki iletişimin karmaşıklığını artırmaktadır. Bu karmaşıklığın üstesinden gelmek için, çeşitli iletişim stratejileri ve mimarileri kullanılmaktadır. Bu tezde, son dönemde çok tercih edilen mikroservisler arasındaki iletişim mimarileri üzerinde durulmuştur ve ilgili mimari ve iletişim stratejileri ele alınarak karmaşıklık durumlarında veya ilk defa kullanımlarda tercih edilmesi gereken iletişim yöntemleri gerçek örneklemler ile açıklanmıştır. İlk olarak, HTTP tabanlı RESTful servisler, mikroservisler arasında yaygın bir iletişim protokolü olarak kabul edilmiştir. Ancak, bu yaklaşımın performans, güvenilirlik ve ölçeklenebilirlik açısından sınırlamaları bulunmaktadır. Her geçen gün daha da değişen ve gelişen teknolojik dünyada yeni yöntemlere ihtiyaç duyulmuştur. Bu nedenle, RPC (Remote Procedure Call), mesaj kuyrukları ve yayın/abonelik gibi alternatif iletişim yöntemleri üzerinde araştırmalar yoğunlaşmıştır. Bu tezde, farklı iletişim mimarilerinin avantajları, dezavantajları ve kullanım senaryoları incelenmektedir. Özellikle, iş yüküne, performansa, güvenilirliğe ve genel sistem mimarisine göre hangi iletişim yönteminin daha uygun olduğu tartışılmaktadır. Sonuç olarak, mikroservisler arasındaki iletişim mimarileri, uygulama gereksinimlerine ve mevcut altyapıya bağlı olarak değişkenlik göstermektedir. Bu nedenle, geliştiricilerin, monolitik yapıdan mikroservis mimarisine geçişte, yeni geliştirilmeye başlanan projelerde veya mevcut mikroservis mimarisinde altyapı iyileştirmesi yapmak istediklerinde uygun iletişim stratejilerini seçerken dikkatli bir şekilde değerlendirme yapmaları gerekmektedir. Bu çalışmada sunulan bilgilerin, mikroservis mimarisine geçiş sürecindeki geliştiricilere rehberlik etmek ve sistemlerini daha etkin bir şekilde tasarlamalarına yardımcı olmak için önemli bir kaynak sağlayacağı düşünülmektedir.

Abstract:
Microservices architecture is becoming more popular in modern software development processes compared to traditional monolithic architecture. This architecture aims to develop an application by decomposing it into small, independent, and functional services. Each service has become popular in recent years because they can be developed independently in terms of technology, programming language, etc. Despite its popularity, communication in these microservice-based systems can be often complex and challenging. Compared to traditional monolithic architectures, the distributed nature of microservices increases the complexity of communication between different services. To overcome this complexity, various communication strategies and architectures have been used. This thesis focuses on the communication architectures between microservices and explains the preferred communication methods in cases of complexity or first-time use with the help of real-world examples. Initially, HTTP-based RESTful services were accepted as a common communication protocol between microservices. However, this approach has limitations in terms of performance, reliability, and scalability. In a constantly changing and evolving technological world, new methods are required. Therefore, research has focused on alternative communication methods such as RPC (Remote Procedure Call), message queues, and publish/subscribe mechanisms. In this study, the advantages, disadvantages, and use cases of these various communication architectures are examined. Specifically, the suitability of communication methods is discussed based on workload, performance, reliability, and overall system architecture. As a result, communication architectures between microservices vary depending on application requirements and existing infrastructure. Therefore, developers need to carefully evaluate appropriate communication strategies when starting new projects or enhancing the infrastructure of their existing microservices architecture. This study is expected to provide an important resource to guide developers in the transition to microservices architecture and help them design their systems more effectively.