Yazılım Mühendisliğinde Gözlemlenebilirlik ve İzleme Üzerine Bir Tasarım Şablonu


Creative Commons License

TAKAN S., SOYGAZİ F.

Dokuz Eylül Üniversitesi Mühendislik Fakültesi Fen ve Mühendislik Dergisi, cilt.25, sa.74, ss.395-404, 2023 (Hakemli Dergi) identifier

Özet

Yazılım geliştirmede gözlemlenebilirlik ve izlemenin rolü oldukça kritiktir ve her geçen gün artmaktadır. Gözlemlenebilirlik ve izlenebilirlik sağlayan mevcut araçlar, harici yapıda bulundukları için sistemin derinliklerine girebilen ve gerekli bilgiye bu yolla ulaşabilen bir yapıda değillerdir. Ayrıca bu araçların özelleştirilmesi ve tek yönlü (içeriden dışarı) bilgi sağladıkları için modifiye edilerek yeniden konfigüre edilmesi zordur. Pek çok araç, yazılım çöktüğünde yazılımın sahiplerine çökme nedenlerini gönderir ancak bu konuda bir standardizasyon bulunmamaktadır. Dolayısıyla bu sistemlerin geri bilgilendirme başarımı tartışma konusudur. Çalışmamızda, yukarıda sözü edilen problemlere çözüm sunmak amacıyla, yazılımdan ayrı tutulup, sisteme entegre edilmeyen bir gözlemleme ve izleme anlayışının yerine, sistemin bir parçası olan ve onunla birlikte yaşayan canlı bir gözlemleme ve izleme tasarım şablonu geliştirilmiştir. Tasarım şablonunun geliştirilmesinde, gözlemlenebilirlik ve izlenebilirlik açısından özetleme mekanizmasından yararlanılmıştır. Bu doğrultuda, yazılım üretim araçlarına ve paradigmalarına uyumu açısından çizge yapısından yararlanılmış ve bu yapı, önerdiğimiz tasarım şablonunun temelini oluşturmuştur. Geliştirdiğimiz tasarım şablonu ve algoritma ile lineer bir karmaşıklıkta sistemdeki verinin güncellenebilmesi sağlanmaktadır. Ayrıca döngüsüz çizge yapısının desteklenmesinin yanı sıra Etiket adı verdiğimiz yapı sayesinde, çizge yapısındaki döngüler desteklenir hale getirilmiştir. Son olarak geliştirdiğimiz yapı gözlemlenebilirlik ve izlenebilirlik açısından blokzinciri veri yapısı ile karşılaştırılmış ve sonuçta geliştirdiğimiz modelin zaman/alan karmaşıklığının daha başarılı olduğu tespit edilmiştir.
The importance of observability and monitoring in software development is growing daily. Existing tools that provide observability and monitoring are in an external structure, which prevents them from reaching the required information in the system deeply. In addition, these tools are difficult to personalize, modify, and reconfigure due to their unidirectional (inside-out) data flow. When software crashes, many tools send the software owners the reasons for the crash, but there is no standardization in this regard. Consequently, the feedback performance of these systems is debatable. To address the issues above, we have developed a live observation and monitoring design pattern that is an integral part of the system, as opposed to an observation and monitoring approach that is separate from the software and not integrated into the system. In developing the design template, blockchain, the most modern and trustworthy technology for observability and monitoring, was utilized by using the hashing mechanism of the blockchain. In this direction, it has been ensured that the blockchain supports the graph structure in terms of its compatibility with software production tools and paradigms, and this structure serves as the foundation of the design pattern we propose. Our proposed design template and the algorithm provides the update of the data stored in the system. Furthermore, the proposed data structure, named Tag, supports the cycles in the graph data structure as well as the acyclic graphs. Finally, the structure we developed was compared to blockchain technology in observability and monitoring. It was determined that our model was superior to the data model in terms of time and space complexity.