Geri Dön

Measuring and evaluating the maintainability of microservices

Mikroservislerin sürdürülebilirliğinin ölçülmesi ve değerlendirilmesi

  1. Tez No: 900268
  2. Yazar: RAHİME YILMAZ
  3. Danışmanlar: DOÇ. DR. FEZA BUZLUCA
  4. Tez Türü: Doktora
  5. Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Bilim ve Teknoloji, Mühendislik Bilimleri, Computer Engineering and Computer Science and Control, Science and Technology, Engineering Sciences
  6. Anahtar Kelimeler: Belirtilmemiş.
  7. Yıl: 2024
  8. Dil: İngilizce
  9. Üniversite: İstanbul Teknik Üniversitesi
  10. Enstitü: Lisansüstü Eğitim Enstitüsü
  11. Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
  12. Bilim Dalı: Bilgisayar Mühendisliği Bilim Dalı
  13. Sayfa Sayısı: 150

Özet

Mikroservis Mimarisi (MSA), uygulamaların bağımsız olmasını ve modüler işlevsel hizmetlere ayrılmasını mümkün kılan popüler bir mimari modeldir. Bu mimari yaklaşım, sürdürülebilirlik ve ölçeklenebilirlik gibi çeşitli avantajlar sunarak, büyük ve karmaşık yazılım sistemlerinin daha yönetilebilir ve esnek hale getirilmesini sağlar. Bir yazılım sistemini, hedeflenen bu avantajlarla bir dizi mikroservis olarak geliştirmek, sistemin özelliklerinin ölçülmesine odaklanan bir kalite değerlendirme stratejisi gerektirir. Bu tür sistemlerin (mikroservislerin) kalite değerlendirmesi ve sürdürülebilirlik tahmini, bu mimarinin doğası gereği zor olmaktadır. Bu sebeple, mikroservislerin kalite değerlendirmesini sistematik bir şekilde yapan çalışmalar oldukça sınırlıdır. Bu tez çalışması, literatürdeki bu açığı gidermek amacıyla, mikroservislerin sürdürülebilirlik seviyesini tahmin etmek için kural tabanlı ve öğrenme tabanlı iki farklı değerlendirme metodolojisi önermektedir. Çalışmanın ilk bölümünde, bulanık mantık tabanlı sistemlerin mikroservis kalite değerlendirmesindeki potansiyel kullanımı incelenerek, kural tabanlı hiyerarşik bir kalite modeli oluşturulmuştur. İkinci bölümde ise öğrenme tabanlı değerlendirme sistemi önerilerek, mikroservislerin kalite değerlendirmesi için derin öğrenme teknikleri uygulayan yenilikçi bir yaklaşım geliştirilmiştir. Sonuç olarak, bu tez çalışması literatüre iki farklı çözüm önerisi sunarak katkı sağlamaktadır. Bu önerilerden ilki, yazılım kalite özelliklerinden sürdürülebilirliğin belirlenmesi ve değerlendirilmesi için bir yazılım kalite modeli oluşturmaktır. Diğer öneri ise, mikroservislerin düşük seviyeli sürdürülebilirliğini tahmin etmek için yenilikçi bir derin öğrenme yaklaşımı üretmektir. Bu tez çalışmasının ilk bölümü, mikroservis kalitesi değerlendirmesi yapılırken bulanık mantık tabanlı sistemlerin yazılım geliştirme sürecinin, özellikle sürdürülebilirliğin tahmin edilmesindeki potansiyel kullanımını ele almaktadır. Yazılım kalitesi kavramının yapısı gereği, düşük seviyedeki kalite özelliklerinin niteliksel sınırları belirsiz olduğundan, kod kalite ölçümlerinin nicel değerlerini bulanık oldukça zordur. Bu kalite özellikleri değerlerini, kesin seviyelere dönüştürmek ve bu değerleri kalite modelimize girdi olarak kullanmak için bir bulanıklaştırma tekniği uygulanmıştır. Bu teknikle, düşük seviyeli metriklerin belirli değerleri, bir değerin LOW, MED ve HIGH gibi bulanık bir kümeye ne kadar güçlü bir şekilde ait olduğunu temsil eden üyelik derecelerine dönüştürülür. Bulanıklaştırma aşamasında, mikroservislerin metriklerine, referans projelerden elde edilen eşik değerlerine dayanarak üyelik dereceleri atanır. Daha sonra bulanık çıkarım modülü (FIM) kullanılarak, bulanık kurallarla üretilen üyelik derecelerini birleştirerek bir sonuç veya çıktı üretilir. Bulanık çıkarım modülü çıktısın belirli sayısal değerlere dönüştüren durulama (defuzzification) işlemi, bir bulanık kümenin alanının merkezini belirleyerek ve onun belirli değerini geri döndürerek gerçekleştirilir. Bu adımın sonunda, belirsiz veriler kesin değerlere dönüştürülür ve bu değerler değerlendirme sürecinde kullanılır. Sonuç olarak, bu model, sürdürülebilirliğin kalite alt özellikleri olan değiştirilebilirlik ve test edilebilirlik için bulanık değerler üretir ve bu değerler, bulanıklaştırma yoluyla sayısal değerlere dönüştürülür. Son aşamada, kalite alt özelliklerine ait bu sayısal değerler kullanılarak, incelenen yazılım sistemindeki her bir mikroservisin sürdürülebilirlik düzeyini gösteren puanlar hesaplanmaktadır. Bu puanlar, mikroservislerin kalitesini değerlendirmek ve yeniden düzenlenmesine ihtiyaç duyulup duyulmadığına karar vermek için kullanılmıştır. Yaklaşımımızı değerlendirmek amacıyla, alanında uzman, uzun yıllar programlama deneyimi olan 3 yazılımcıdan destek alınmıştır. Bu kapsamda, bu üç yazılım geliştiricinin yardımıyla, açık kaynaklı bir projedeki mikroservislerin sürdürülebilirlik seviyelerini inceleyen ve kategorize eden bir test seti oluşturulmuştur. Yazılım geliştiriciler kendi değerlendirme sistemini kullanarak, bu açık kaynaklı projedeki mikroservisleri, düşük, orta veya yüksek kaliteli olarak etiketlemiştir. Her üç yazlım geliştirici için de düşük kalite etiketli mikroservis, yeniden düzenleme ihtiyacı olan mikroservisi ifade etmektedir. Kalite modelimiz ile elde edilen ölçüm sonuçları ile verilen test setindeki düşük etiketli mikroservisler arasında karşılaştırma yapılmıştır. Bu karşılaştırmaya göre, önerdiğimiz yaklaşım, %94 doğruluk, %78 kesinlik ve %100 geri çağırma oranı elde etmiştir. Bu sonuçlar, önerilen yaklaşımın, yazılım geliştirici ve tasarımcılarına mikroservislerin sürdürülebilirlik kalitesini değerlendirmede yardımcı olabileceğini göstermektedir. Araştırmanın ikinci bölümü ise, mikroservislerin sürdürülebilirliğini değerlendirmek için yenilikçi öğrenme tabanlı bir yaklaşım önermektedir. Bu çalışma kapsamında, sürdürülebilirlik üzerinden mikroservislerin kalitesinin değerlendirilmesini sağlayan, popüler bir yaklaşım olarak transfer öğrenme yöntemini kullanan, öğrenmeye dayalı bir değerlendirme yöntemi geliştirilmiştir. İlk çalışmayla benzer şekilde, bu yaklaşım, mikroservislerin sürdürülebilirlik seviyelerini düşük, orta ve yüksek olarak aynı üç kategoride tahmin etmektedir ve düşük kategori yeniden düzenleme ihtiyacını göstermektedir. Sürdürülebilirlik düzeyi, derin öğrenme tekniği olan transfer öğrenme kullanılarak değerlendirilir. Bu süreçte, açık kaynaklı mikroservis projelerinin kaynak kodundan elde edilen metrik değerler, sisteme girdi olarak beslenir ve sonuçlar transfer öğrenme yöntemiyle doğrudan elde edilir. Bu teknik, mikroservislerin kalite seviyelerine ilişkin doğru tahminler yapmak ve önceden eğitilmiş bir modelden gelen önceki bilgileri kullanarak modelin öğrenme verimliliğini ve doğruluğunu artırmak için kullanılır. Önerilen bu transfer öğrenme yöntemi, düşük kaliteli mikroservislerin sürdürülebilirlik seviyelerini değerlendirerek, düşük seviyeye sahip mikroservisleri doğru bir şekilde tahmin etmektedir. Bu yöntem, mikroservislerin kod metrikleri olarak veri toplama, aykırı değerlerin elenmesi, veri kümesinin artırılması ve dengelenmesi ve ardından denetimli öğrenme tekniklerinin uygulanmasını içeren bir dizi yapılandırılmış adımı içermektedir. Başlangıçta, açık erişimli çeşitli projelerden mikroservisler alınarak, bu mikroservislerin kaynak kodlarından metrik değerleri elde edilmiştir. İlk aşamada elde edilen bu metrik değerlerinden, istatistiksel olarak aykırı dağılım gösteren ve veri örüntüsünü bozan değerlere sahip mikroservisler ayıklanmıştır. Aykırı değerlere sahip mikroservisler elendikten sonra, temizlenmiş veri kümesinin genellenebilirliğini, doğruluğunu artırmak ve eğitilecek olan ağın mevcut veri kümesini öğrenebilmesini sağlamak için, veri kümesine ek veri noktaları eklenmiş ve veri kümesi zenginleştirilmiştir. Bir sonraki aşamada, ilk modeli oluşturmak için zenginleştirilmiş veri kümesi kullanılmış, sonrasında ise başlangıçta eğitim için oluşturulan veri kümesi değiştirilerek elde edilen dengeli bir veri kümesi aracılığı ile modele ince ayar yapılmıştır. Başlangıçta eğitim için ayrılan veri kümesine uygulanan bu değişiklikle, eğitim veri kümesindeki dengesiz dağılımının eşitlenmesi amaçlamıştır ve bu da, aykırı değerlerin çıkarıldığı veri kümesine küçük gürültülerin eklenmesiyle birlikte rastgele aşırı örneklemenin uygulanmasıyla yapılmıştır. Böylece, herhangi bir dengesizliğin düzeltilmesi ile modelin daha doğru öğrenmesi sağlanmış ve doğru, güvenilir tahminlere olanak tanınmıştır.. Bu adımlar, başlangıçta oluşturulan veri kümesinden ayrılan test setlerinin kullanılması ile test edilen bir tahmin modeli oluşturmamızı sağlar. Doğrulama süreci için, eğitimin sonunda tarafsız ve güvenilir bir değerlendirme yapabilmek amacı ile 5 fold stratified cross validation kullanıldı. Bu yöntem ile başlangıçtaki veri kümesi, gruplar arası oranı koruyan 5 farklı veri setine ayrıldı ve bu veri setleri 1 adet test 4 adet eğitim olacak şekilde, 5 farklı tekrar ile denendi. Metodoloji uygulanmadan önce her denemede, test seti kenara ayırılırken, kalan veriler, modelin eğitim ve doğrulama aşamaları için ayrıldı ve modelin performansını daha da iyileştirmek amacıyla transfer öğrenimi (transfer learning) uygulandı. Eğitim aşamasında ilk olarak veri setinin boyutunu, çeşitliliğini artırmak için eğitim verileri çoğaltıldı (data augmentation) ve bu çoğaltılan veriler ile transfer öğrenimin ilk aşaması olan temel model eğitildi. Sonrasında bu modele ince ayar yapabilmek için, eğitim amacı ile ayrılmış ve sınıf dengesizlikleri örnekleme (oversampling) yöntemi ile giderilmiş veri seti kullanıldı. Son aşamada, modelin genelleme yeteneği, daha önce izole edilen test seti üzerinde değerlendirildi. Bu işlemler her küme test edilecek şekilde 5 kez tekrarlandı. Bu tahmin modelinden elde edilen sonuçlar, önerilen yöntemin, yeniden düzenleme gerektiren mikro hizmetleri tahmin etmek için açık kaynaklı projelerden elde edilen doğrulanmış veri setinde %69,67 F1 puanı elde ettiğini göstermektedir. Performans sonuçları, özellikle test verilerindeki sınırlı ve az etiketli veri göz önüne alındığında, modelin gelecekte daha da geliştirilebileceğini işaret eden umut verici bir tablo ortaya koymaktadır. Bu bulgular, öğrenme tabanlı değerlendirmenin mikroservis kalitesini değerlendirme ve yeniden düzenleme gereksinimini tahmin etme konusunda kayda değer bir potansiyele sahip olduğunu göstermektedir. Bununla birlikte, yeterli test verisinin olmaması genel performansı olumsuz etkilemiştir. Daha kapsamlı ve dengeli veri setleriyle yapılacak ek çalışmalar, sonuçların iyileştirilmesine ve modelin performansının daha nesnel bir şekilde değerlendirilmesine katkıda bulunacaktır. Bu Yapılmış olan bu deneme, mikroservislerin yazılım kalitesini değerlendirme konusunda gelecekte geliştirilecek öğrenme tabanlı sistemler için sağlam bir temel sunmaktadır. Elde edilen bu sonuçlar, yöntemin başarılı bir şekilde uygulanabileceğini ve daha ileri araştırmalarla, mikroservislerin yazılım kalitesinin değerlendirilmesinde önemli ilerlemeler kaydedilebileceğini göstermektedir. Sonuç olarak, bu araştırma, mikroservis mimarisi kalite ölçüm ve değerlendirmesi ile ilgili ortaya çıkan zorlukları ele alarak, bu mimariler için kalite değerlendirme yöntemleri önermektedir. Araştırmamız, mikroservis tabanlı uygulamalar için kalite güvence uygulamalarını geliştirmek üzere tasarlanmış, kapsamlı bir kalite değerlendirmesi sistematiği içermektedir. Bu kalite değerlendirmesinin iki farklı yaklaşım ile değerlendirilmesi ile mikroservislerin sürdürülebilirlik, değiştirilebilirlik ve test edilebilirlik gibi önemli kalite özelliklerinin daha doğru ve güvenilir bir şekilde ölçülmesi amaçlanmıştır. Önerilen bu sistematik yaklaşımlar, yazılım mühendisleri veya yazılım ekiplerinin bakım ve yeniden düzenleme işlemlerinde doğru ve etkili kararlar almalarına yardımcı olacak yararlı geri bildirimler sağlamaktadır. Böylece, yazılım mühendisliği alanına önemli katkılar sunarak, daha sürdürülebilir ve sağlam yazılım sistemlerinin geliştirilmesine olanak sağlamaktadır. Bu tez çalışması, yazılım mühendisliği alanında mikroservis mimarisinin kalitesini artırmaya yönelik önemli katkılar sunmakta ve gelecekteki araştırmalar için sağlam bir temel oluşturmaktadır.

Özet (Çeviri)

Microservice Architecture (MSA) is a popular architectural style that emphasizes decomposing monolithic applications into independent and modular functional services. This architectural approach provides several benefits, including maintainability and scalability, making large and complex software systems more manageable and flexible. Developing a system as a set of microservices with expected benefits requires a quality assessment strategy focused on measurements of the system's properties. This thesis proposes two methods for predicting the maintainability level of microservices: one rule-based and the other learning-based. The rule-based evaluation employs a fuzzy logic-based hierarchical quality model, whereas the learning-based evaluation utilizes deep learning techniques for quality assessment. This thesis provides a software quality model for the specification and evaluation of software quality characteristics maintainability and a new approach to predict the low-level maintainability of microservices. The first part of the research emphasizes the potential use of fuzzy logic-based systems in microservice quality assessment, particularly in predicting maintainability during software development. Since the qualitative bounds of low-level quality attributes are inherently ambiguous, we use a fuzzification technique to transform crisp values of code metrics into fuzzy levels and apply them as inputs to our quality model. This model generates fuzzy values for the quality sub-characteristics of the maintainability, i.e., modifiability and testability, converted to numerical values through defuzzification. In the last step, using the values of the sub-characteristics, we calculate numerical scores indicating the maintainability level of each microservice in the examined software system. This score was used to assess the quality of the microservices and decide whether they need refactoring. To evaluate our approach, we created a test set with the assistance of three developers, who reviewed and categorized the maintainability levels of the microservices in an open-source project based on their knowledge and experience. They labeled microservices as low, medium, or high, with low indicating the need for refactoring. Our method for identifying low-labeled microservices in the given test set achieved 94% accuracy, 78% precision, and 100% recall. These results indicate that this approach can assist designers in evaluating the maintainability quality of microservices. The second part of the research presents a learning-based solution to the problem addressed in the first study, along with the experiments conducted to evaluate this approach. In that study, we developed a learning-based evaluation method that employs a transfer learning method as a novel approach, emphasizing the assessment of microservices' quality, particularly focusing on maintainability. Similarly to the first study, this approach predicts the maintainability levels of microservices into the same three categories: low, medium, and high, with a low category indicating the need for refactoring. The maintainability level is assessed using transfer learning, a deep learning technique, by feeding source-code metric values of open-source microservice projects as inputs and obtaining results directly through transfer learning. The proposed transfer learning method aims to accurately predict low-quality microservices by assessing their maintainability level. This method involves a series of structured steps, including data collection as code metrics of microservices, outlier elimination, augmentation, and balancing the dataset, followed by the application of supervised learning techniques. These steps allowed us to derive a predictive model, which was then tested using test sets labeled by human evaluators. For the validation process, we utilized 5-fold stratified cross-validation to maintain the original dataset's group ratios within each fold and to ensure an unbiased evaluation at the end of training. In each fold, we first set aside a test set while using the remaining data as the training set; this procedure was repeated so that each subset served as the test set once. After isolating the test set, we augmented the training data to increase its size and diversity for use in the pretraining phase of the transfer learning process. Subsequently, the model was fine-tuned using the training data, which was oversampled to address class imbalances. Finally, the model's generalization capability was assessed on the isolated test set. According to these results, the proposed method achieved 69.67% F1 score on unseen test data obtained from open-source projects for predicting microservices requiring refactoring in the three-class categorization.Although the accuracy is not yet optimal, it is a promising outcome, particularly given the low-labeled limited data available in test data. These findings demonstrate that the learning-based evaluation holds potential for assessing microservice quality and predicting the need for refactoring. However, the lack of sufficient test data has impacted overall performance. To improve results and evaluate the model's performance more objectively, further data collection is necessary. This initial experiment provides a strong foundation for future advancements in software quality assessment within the MSA and motivating continued exploration and refinement of the methodology.. In summary, this research aims to address emerging challenges related to microservice architecture by specifically measuring maintainability as a key quality evaluation. Our research proposes an extensive quality assessment designed to enhance quality assurance practices for MSA-based applications, thereby making a significant contribution to the field of software engineering. This research aims to lead to the development of more sustainable and robust software systems. By providing valuable insights, the proposed approaches have great potential to assist software engineers in making informed decisions regarding maintenance and refactoring activities. As software engineering continues to evolve, these methodologies and insights could serve as fundamental guides for the development and maintenance of microservices, supporting future advancements in the field. We also conclude that systematic quality assessment is essential for ensuring the long-term functionality and performance of software systems. This highlights the need for ongoing innovation and adaptation in software engineering practices.

Benzer Tezler

  1. Measuring and evaluating complexity of XML schema documents

    XML şema dokümanlarının karmaşıklığının ölçümü ve değerlendirmesi

    DİLEK BAŞCİ

    Yüksek Lisans

    İngilizce

    İngilizce

    2008

    Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolAtılım Üniversitesi

    Bilgisayar Mühendisliği Ana Bilim Dalı

    YRD. DOÇ. DR. SANJAY MİSRA

  2. Nesneye dayalı yazılımların bakım kolaylığı karakteristiğinin ölçülmesi

    Measuring the maintainability characteristic of object-oriented softwares

    ÖZLEM AKALIN

    Yüksek Lisans

    Türkçe

    Türkçe

    2018

    Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik Üniversitesi

    Bilgisayar Mühendisliği Ana Bilim Dalı

    DOÇ. DR. FEZA BUZLUCA

  3. Kalite güvencesi sistemleri ve Türkiye'deki uygulamalar

    Quality assurance and its application in Türkiye

    MESUT RIFAT GÜNEY

    Yüksek Lisans

    Türkçe

    Türkçe

    1994

    Makine Mühendisliğiİstanbul Teknik Üniversitesi

    PROF.DR. SELAHADDİN ANIK

  4. Demiryolu altyapı yönetiminde güvenilirlik, bulunabilirlik ve sürdürülebilirlik analiz tekniklerinin kullanılması

    Reliability, availability and maintainability (ram) analysis techniques for railway infrastructure management

    SHUHRATJON HIDIROV

    Doktora

    Türkçe

    Türkçe

    2019

    UlaşımSakarya Üniversitesi

    İnşaat Mühendisliği Ana Bilim Dalı

    DOÇ. DR. HAKAN GÜLER

  5. Bir dişli pompa grubunun imalatında eşzamanlı mühendislik ve grup teknolojisi

    The carrying out of group technology in the concurrent engineering concept on a factory which is manufacturing gear pomp

    ALPER ASLAN

    Yüksek Lisans

    Türkçe

    Türkçe

    1997

    Makine Mühendisliğiİstanbul Teknik Üniversitesi

    Makine Mühendisliği Ana Bilim Dalı

    PROF. DR. TEOMAN KURTAY