Mikroservislerin keşifsel sınanması ve görselleştirilmesi
Exploratory testing and visualization of microservices
Yazar: MUSTAFA BEDRİ EĞRİLMEZ
Danışman: DR. ÖĞR. ÜYESİ YUNUS EMRE SELÇUK
Yıldız Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2020
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Mikroservisler yakın dönemde popülerlik kazanmış, alışılagelmiş yekpare mimarilerden farklı olarak bir yazılım uygulamasını yapıtaşlarına ayırmayı prensip edinmiş bir yazılım mimari stilidir. Uygulamayı oluşturan her bir bileşenin karmaşıklığının en alt seviyeye indirilmesi, ölçeklenebilirliğinin kolaylığı, devreye almaya getirdiği esneklikler gibi daha ilk bakışta göze çarpan birçok artıyı bünyesinde bulundurur. Bununla birlikte, her derde deva bir çözüm de değildir: Birçok ayrı modüle, sisteme ve konuma parçalanmış bir uygulamanın takibi ve sınanması zorlukları beraberinde getirir. Yazılım günlükleri, yazılım geliştirme ve bakım sürecinde hata ayıklama, güvenlik
ve uygunluk için tercih edilen geleneksel yöntem olmuşlardır. Fakat günlüklerin düz yapısı ve uygulama bileşenleri arasında bağlam bilgisi paylaşım mekanizmaları bulundurmamaları, günlüklerin mikroservisler gibi modern çok
işlemcili, dağıtık mimarilerde kullanımının önünde bir engel oluşturmaktadır. Yazılım mühendislerinin bu engellere karşı çözümü, düz günlük oluşturma hizmetlerini hiyerarşik yapıya dönüştürmek ve bileşenler arasında yürütüm
bağlam bilgisinin nakil edilebilmesi gibi ek becerilerle zenginleştirmek olmuştur. Bu ek işlevleri sağlayan uygulamalara dağıtık izleyiciler adı verilmiştir ve modern büyük ölçekli yazılım sistemlerinin olmazsa olmazlarından biri haline gelmişlerdir. Dağıtık izleyicilerin çalışma mantığı, inceleme altındaki uygulamanın tüm bileşenleri tarafından oluşturulan günlük olaylarının daha sonra ihtiyaç duyulduğunda analiz edilebilmesi ve görselleştirilebilmesi için yakalanması ve bir merkezde saklanmasına dayanır. Bununla birlikte, dağıtık izleyicilerce oluşturulmuş mekanizmalar alternatif bir şekilde de kullanılabilirler: Bu çalışmada tanıtılan XPLORA aracı, mikroservis mimarisine dayanan uygulamaların yürütümünü bir sıralama diyagramı üzerinde görselleştiren bir dinamik sınama aracıdır. Araç, açık ve sağlayıcı bağımsız bir dağıtık izleyici standardı olan OpenTracing çerçevesine dayanmaktadır. Bu da aracın OpenTracing'le uyumlu hale getirilmiş herhangi bir uygulama ile kolaylıkla
entegre edilebilmesini mümkün kılar. XPLORA'nın geleneksel izleyicilere getirdiği yenilik, yakalanan iz olaylarını gerçek zamanda görselleştirilen duraksatma noktaları olarak kullanabilmesidir.

Abstract:
Microservices is an emerging software architectural style which is distinguished from its monolithic counterpart by decomposing a software application into its many building blocks. Gains such as reduction of individual module complexity, ease of scalability, and deployment flexibility are obvious. However, it is not a magic bullet: Testing and monitoring a system that has fragmented into multitudes of disparate modules, systems, and locations brings new challenges.
Application logging has been the traditionally preferred method for debugging, security, and compliance for software development and maintenance process. But the flat nature of logging and the absence of mechanisms for sharing context information between the solution's components  stay as obstacles against their usage in modern multiprocessing, distributed architectures.
Software engineers' answer to these challenges has been to enhance established logging facilities with additional capabilities such as moving from flat to hierarchical log records organization and adding mechanisms for transferring context information within components. The family of applications that implement this functionality is called distributed tracers, and have become a necessity for modern huge scale software systems. The typical operation of the distributed tracers involves capturing and storing log events generated by all components of the solution in a central location, so they can be analyzed and visualized as needed retrospectively.
However, the mechanisms set out by distributed tracers can be used in an alternative way: XPLORA tool, which is presented in this study, is a dynamic testing tool visualizing the execution of a microservices solution in a sequence diagram. The tool builds upon OpenTracing, an open and vendor neutral distributed tracing framework. The usage of the framework allows the tool to be integrated into any OpenTracing compatible application with ease. XPLORA enhances traditional tracers by making use of the captured events as breakpoints that are visualized in real time.