Mikroservis mimari ile uçtan uca yazılım geliştirme sürecinde performans optimizasyonu incelemeleri ve bulut bilişim
Performance optimization analysis in the end-to-end software development process with microservice architecture and cloud computing
- Tez No: 824378
- Danışmanlar: DR. ÖĞR. ÜYESİ SUZAN ÜRETEN
- Tez Türü: Yüksek Lisans
- Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Computer Engineering and Computer Science and Control
- Anahtar Kelimeler: Belirtilmemiş.
- Yıl: 2023
- Dil: Türkçe
- Üniversite: İSTANBUL BEYKENT ÜNİVERSİTESİ
- Enstitü: Lisansüstü Eğitim Enstitüsü
- Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
- Bilim Dalı: Bilgisayar Mühendisliği Bilim Dalı
- Sayfa Sayısı: 80
Özet
Bir yazılım uygulamasının ürün halini alması, problemin belirlenmesinden sistem ihtiyaçlarının tespitine, mimarisel yaklaşımın kararlaştırılmasından kullanılacak uygun teknolojinin seçimine, geliştirme aşamasından son kullanıcı için gerekli istemci donanım ve yazılımının belirlenmesine kadar oldukça maliyet ve efor gerektiren uzun ve zorlu bir süreçtir. Tüm bu süreçlerin sonunda ürün olarak piyasaya sürülen yazılım uygulamasının göstermiş olduğu performans ve kalite ne kadar yüksek ise kullanımı da o kadar kolay ve hızlı olmaktadır. Mimarisel yaklaşımın kararlaştırılması aşamasında karşımıza çıkan mikroservis mimari bir uygulamanın tek bir büyük kod tabanı ile çalışması prensibine dayanan geleneksel monolitik mimarinin ortaya çıkardığı sorunlara çözüm olarak doğmuştur. Tek bir kod tabanında çalışan uygulamaların herhangi bir noktasında yapılan değişiklik, uygulama geneline etki edebilmektedir ve bir sorunla karşılaşıldığında tüm uygulanın yeniden başlatılması zorunluluğu doğabilmektedir. Bu nedenle büyük ölçekli uygulamaların geliştirilmesi, bakımı ve ölçeklendirilmesi mikroservis mimariye kıyasla çok daha zor olmaktadır. Mikroservis mimaride uygulama işlevleri küçük, bağımsız hizmetlere bölünür. Her hizmet tek başına çalışabilir ve diğer hizmetlere uyumlu olarak tasarlanır. Bu yaklaşım uygulamanın daha modüler hale gelmesini, daha kolay ölçeklenebilir olmasını ve her küçük, bağımsız hizmetin farklı programlama dilleri ile geliştirilebilmesine olanak sağlar. Mikroservis mimaride her hizmetin farklı amaç ve probleme uygun yazılım dili ile tasarlanabilir olması, özellikle pek çok farklı gereksinimi bir arada bulunduran büyük ölçekli uygulamalarda geleneksel monolitik mimariye karşı büyük avantaj sağlamaktadır. Bununla birlikte mikroservis mimari birçok hizmetin bir arada çalıştırılmasını gerektirdiğinden hizmetlerin birbiri ile iletişimi, güvenlik, veri yönetimi ve test gibi zorlukları da barındırır. Mimarinin başarıya ulaşması ancak iyi bir planlama ve doğru araçların kullanılması ile mümkündür. Başarılı bir yazılım geliştirme süreci için problemin belirlenmesi ve mimarisel tasarımın kararlaştırılması sonrası kodlama yöntemleri, test edilebilirlik, kaynak kod yönetimi, verimli algoritma kullanımı, güvenlik, donanım ve yazılım uyumluluğu, kaynak kullanımı ve ölçeklendirilebilirlik gibi faktörlerin dikkatle yönetilmesi gerekmektedir. Bu çalışmanın amacı büyük ölçekli sistemlerin vazgeçilmezi olan mikroservis mimari yaklaşımı ile geliştirilen uygulamaların, gereksinimlerin belirlenmesinden, istemci üzerinde son kullanıcıya hizmet verebilecek ürün aşamasına kadar olan süreçte, uygulamanın performans ve kalitesini etkileyebilecek unsurları tespit etmek, iyileştirmek ve optimum düzeyde bir uygulama geliştirmektir. Yazılım geliştirme sürecinde uygulamaların sanallaştırma, paketleme ve dağıtım aşamasında Docker, dağıtıma hazır hale gelen uygulama paketlerinin yönetimi aşamasında da Kubernetes teknolojileri kullanılarak, başarılı bir yazılım geliştirme sürecinde performansa etkileri analiz edilmiştir. Yapılan çalışmanın son bölümünde bilgi teknolojileri dünyasında son yıllarda büyük bir önem kazanan Bulut Bilişim teknolojileri ele alınmış, başarılı bir yazılım geliştirme süreci için verimliliği ve faydaları incelenmiştir.
Özet (Çeviri)
The process of developing a software application into a product is a long and difficult process that requires a lot of cost and effort, from identifying the problem to determining the system requirements, from deciding the architectural approach to selecting the appropriate technology to be used, from the development stage to determining the required client hardware and software for the end user. The performance and quality of the software application released as a product in the market at the end of all these processes determine how easy and fast it is to use. During the decision-making stage of the architectural approach, microservices architecture emerged as a solution to the problems posed by the traditional monolithic architecture, which is based on the principle of an application running on a single large codebase. Any changes made at any stage in applications running on a single codebase can affect the entire application, and when a problem occurs, the entire application may need to be restarted. Therefore, developing, maintaining, and scaling large-scale applications is much more challenging compared to microservices architecture. In the microservices architecture, application functionalities are divided into small, independent services. Each service can work autonomously and is designed to be compatible with other services. This approach allows the application to become more modular, easier to scale, and enables each small, independent service to be developed by using different programming languages. The ability to design each service with a different software language suitable for different purposes and problems provides a significant advantage over the traditional monolithic architecture, especially for large-scale applications that encompass multiple different requirements. However, microservices architecture also brings challenges such as communication between services, security, data management, and testing, as it requires running multiple services together. The success of the architecture can only be achieved through careful planning and the use of appropriate tools. For a successful software development process, after identifying the problem and determining the architectural design, factors such as coding methods, testability, source code management, efficient algorithm usage, security, hardware and software compatibility, resource utilization, and scalability need to be carefully managed. The aim of this study is to determine the factors that may affect the performance and quality of the application, from the determination of the requirements of the applications developed with the microservice architectural approach, which is essential for large-scale systems, to the product stage that can serve the end user on the client, to improve it and to develop an application at an optimum level. In the software development process, the effects on performance have been analyzed using Docker in the virtualization, packaging, and deployment stages, and Kubernetes technologies in the management stage of application packages ready for deployment. In the last section of the thesis, Cloud Computing technologies, which have gained significant impact in the IT world in recent years, have been addressed, and their efficiency and benefits have been examined for a successful software development process.
Benzer Tezler
- An intelligent security architecture for SDN-assisted iot networks
YTA destekli nesnelerin interneti ağları için akıllı güvenlik mimarisi
AHMED DEMİRPOLAT
Doktora
İngilizce
2021
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolOrta Doğu Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ PELİN ANGIN
- Mikroservis tabanlı e-ticaret uygulamalarında sipariş odaklı endpoint yönetimi
Order-oriented endpoint management on microservice-based e-commerce applications
HİLAL ŞEN
Yüksek Lisans
Türkçe
2024
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolİSTANBUL BEYKENT ÜNİVERSİTESİBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ TALAT FİRLAR
- Mikroservis tabanlı ağ uygulamalarında zararlı davranışların saptanması
Detecting malicious behavior in microservices-based web applications
MUSTAFA ÖZBEK
Yüksek Lisans
Türkçe
2019
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ MEHMET TAHİR SANDIKKAYA
- Model güdümlü geliştirme yaklaşımı ile otomatik kod üretimi araçlarının karşılaştırılması
Comparison of automatic code generation tools with model driven approach
BÜŞRA İÇÖZ
Yüksek Lisans
Türkçe
2021
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolYıldız Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
PROF. DR. OYA KALIPSIZ
- Kod kalıp analizi yöntemleri ile mikroservis mimarilerinde iyileştirme önerileri
Improvement suggestions for software based on microservice architecture with code analysis techniques
TUĞRUL AŞIK
Yüksek Lisans
Türkçe
2017
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolYıldız Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
YRD. DOÇ. DR. YUNUS EMRE SELÇUK