Sunucusuz yazılım mimarisiyle coğrafi bilgi sistemi tasarımı ve uygulaması
Design and application of serverless architectures in geographic information system
Yazar: METE ERCAN PAKDİL
Danışman: PROF. DR. RAHMİ NURHAN ÇELİK
İstanbul Teknik Üniversitesi / Lisansüstü Eğitim Enstitüsü / Bilişim Uygulamaları Ana Bilim Dalı / Coğrafi Bilgi Teknolojileri Bilim Dalı
Derece: Doktora, 2022
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control ; Jeodezi ve Fotogrametri = Geodesy and Photogrammetry
Dizin: Bilgi teknolojisi = Information technology ; Coğrafi bilgi sistemleri = Geographical information systems ; Konumsal bilgi sistemi = Spatial information system ; Yazılım mimarisi = Software architecture

Özet:
Bulut bilişim teknolojileri her şeyin bir servis (Everything as a Service) olduğu bir anlayışla birlikte gelişmektedir. Her geçen gün ortaya konan yeni bir altyapı yönetim yaklaşımına da bu kapsamda isimler verilmiştir. Günümüzde bulut bilişim altyapısının yönetiminde farklılıklar sunan üç farklı servis modeli bulunmaktadır. Bu servis modelleri; Hizmet olarak Altyapı (HoA - Infrastructure as a Service), Hizmet olarak Platform (HoP - Platform as a Service), Hizmet olarak Yazılım (HoY - Software as a Service) şeklinde isimlendirilmektedir. Her bir servis modeli bir diğerine göre daha fazla bulut bilişim altyapısının yönetimini soyutlaştırarak farklılaşmaktadır. Bu üç modele ek olarak ortaya çıkan sunucusuz paradigması ise HoY ile HoP arasında konumlandırılabilir. Bu paradigma içerisinde ortaya konan sistem mimarileri de sunucusuz mimariler olarak adlandırılmaktadır. 
Sunucusuz kavramı ismen yanıltıcı olabilmekte ve kullanıcıda fiziksel veya sanal bir sunucu yok algısı oluşturmaktadır. Bu algının aksine uygulamalar ve hizmetler yine sunucular üzerinde çalışmakta ancak sunucunun tüm yönetimi bulut bilişim sağlayıcısı tarafından yapılmaktadır. Sunucusuz mimariler özellikle yüksek ölçeklenebilir uygulamalarda bilişim altyapısının yönetimi giderek zorlaşması nedeniyle daha çok tercih edilmektedir. 
Konteyner teknolojisi sunucusuz paradigmasının gelişmesinde büyük rol oynamıştır. Sanal makinelere göre uygulamaların başlama hızı, taşınabilirliği ve kullanılabilirliği daha iyileştirmiş olması nedeniyle konteyner kullanımı giderek yaygınlaşmıştır. Bu yeni akım farklı teknik zorlukları ve çözümlerini de beraberinde getirmiştir. Özellikle birden çok konteyner uygulamasının birlikte çalışması ve yüksek ölçeklenebilirliğin sağlanabilmesi problemi için konteyner orkestrasyon platformları çözüm olarak ortaya çıkmıştır. Bunlardan en bilinen konteyner orkestrasyon platformu Kubernetes olarak adlandırılmaktadır.
Bulut bilişim sağlayıcıları hızla konteyner orkestrasyon platformlarını kendilerine dahil ederek hizmet olarak sunmaya başlamışlardır. Bu platformların getirdiği kolaylıklar beraberinde yeni gereksinimler de doğurmuştur. Konteyner orkestrasyon yazılımlarının doğru şekilde yapılandırılması ve sağlıklı çalışabilmesi için kullanıcıları için ileri düzey bulut bilişim altyapısı bilgisine sahip olma ve eğitiminin alınmasını gerektirmektedir. Sunucusuz hizmetler bu gereklilikleri ortadan kaldırarak kullanıcıların ileri düzey altyapı bilgisi sahibi olmadan da yüksek ölçeklenebilir uygulamaları bulut bilişim platformları üzerinde çalıştırabilmelerini sağlamaktadır.
Sunucusuz mimarilerin giderek yaygınlaşması ve bulut bilişim sağlayıcıları tarafından benimsenmesi ile farklı bulut bilişim hizmet modelleri ortaya çıkmıştır. Herhangi bir yazılım sistemi mimarisinin tasarımında iki temel bileşen türü sıklıkla kullanılmaktadır. Bunlar hesaplama ve veri depolama bileşenleridir. Bu çalışmada da sunucusuz hizmet modelleri veri depolama ve hesaplama olarak iki grupta incelenmiştir. Böylece çalışmada sunulan sistem mimarilerindeki temel gereksinimler bu gruplardan karşılanmıştır. 
Çalışmada veri depolama hizmetleri de kendi içinde yapısal ve yapısal olmayan veriler için iki gruba ayrılarak incelenmiştir. İlk grupta incelenen yapısal veri depolama hizmetleri ise verilerin sorgulanma yeteneklerine göre iki alt grupta incelenmiştir. 
Yapısal veri türleri; belge, sütun ailesi, anahtar-değer (key-value) ve çizge (graph) türünde sınıflandırılarak incelenmiştir. Literatürde bu veri depolama türleri NoSQL adı altında toplanmaktadır. Bunun sebebi ise veri sorgulamanın SQL dili dışında özel geliştirilmiş diller veya API'larla sunulmasıdır. 
Sistem mimarilerinde yapısal veri depolama hizmetlerinin seçimine kullanım şekline bağlı olarak karar verilmelidir. Örneğin anahtar-değer veri tabanlarında anahtar alanı dışında sorgulama yapılmak istendiğinde sorgulama hızı diğer depolama türlerine göre oldukça yavaş ve verimsiz olacaktır. Çalışmada sunulan sistem tasarımlarında bu veri depolama hizmetleri kullanılarak CBS uygulamalarında nasıl katkı verebilecekleri gösterilmiştir.
Bir diğer yapısal veri depolama alt grubunda ise ilişkisel veri depolama hizmetleri bulunmaktadır. Burada incelenen veri depolama hizmetleri ise verilerin SQL diliyle sorgulanmasını sağlamaktadır. Bir diğer karakteristik özelliği ise verilerin tablolar halinde saklanması ve tablolar arasında belirli anahtar değerler üzerinden ilişki kurulabilmesidir. İlişkisel veri tabanları birçok mevcut CBS sunucusu yazılımı tarafından desteklenmektedir. Bu nedenle bu hizmet türünün varlığı mevcut CBS mimarilerinin sunucusuz mimarilere taşınmasını kolaylaştırmaktadır.
Yapısal olmayan veri depolama hizmetleri ise verilerin yapısından bağımsız olarak onları ikili (binary) objeler olarak saklanmasını sağlamaktadır. Literatürde saklanan bu verilere BLOB ismi verilmektedir. Ayrıca yapısal veri depolama hizmetlerinin klasik dosya sistemlerinden nasıl ayrıldıkları da açıklanmıştır. Depolanan objelere birer anahtar değer verilerek bu değerler üzerinden hızlı erişim sağlanmaktadır.
Yapısal olmayan veri depolama hizmetlerinin bir diğer özelliği ise yüklenen HTML sayfalarını yardımcı dosyalarıyla birlikte web sitesi olarak sunabilmesidir. Çalışmada bu özellikten faydalanılarak bir web CBS uygulamasının yapısal olmayan veri depolama hizmeti üzerinde nasıl konumlandırılabileceği de açıklanmıştır.
Çalışmada sunucusuz hesaplama hizmetleri de kendi içinde fonksiyon ve konteyner türünde iki gruba ayrılarak incelenmiştir. Çalışmada fonksiyon türündeki hizmetler Hizmet olarak Fonksiyon (HoF) ve konteyner türündeki hizmetler ise Hizmet olarak Konteyner (HoK) olarak isimlendirilmiştir. İki hizmet türü de temelde konteyner teknolojisini kullanmaktadır. Konteyner ve fonksiyon hizmet türü arasındaki fark kullanıcıların hangi seviyede geliştirme yapabilmesi üzerinden oluşmaktadır. Konteyner hizmet türündeki sunucusuz hesaplama hizmetleri kullanıcılara uygulamanın çalışacağı konteyneri özelleştirebilmesini de sağlar.
Fonksiyon türündeki sunucusuz hesaplama hizmetleri kullanıcıların yükledikleri uygulama kodunu çalıştırırlar. Platforma bağlı olarak destek verilen programlama dilleri de değişiklik göstermektedir. Uygulamalar olay güdümlü olarak çalışırlar. Olayların kaynağı ise platform üzerindeki diğer bulut bilişim servisleri olabileceği gibi internet istekleri de olabilir. Çalışmada akıllı şehir mimarilerinde sıkça kullanılan nesnelerin interneti sensörlerinin olay kaynağı olarak fonksiyonları olay güdümlü olarak nasıl çalıştırabildiği bir örnekle açıklanmıştır. Çalışmada yapısal olmayan veri depolama hizmetlerinin sunucusuz hesaplama hizmetleri ile olan ilişkisi de incelenmiştir. Yapısal olmayan veri depolama hizmetleri üzerindeki objelere ait durum değişimleri ve yeni objelerin eklenmesi sonucu üretilen olaylar sunucusuz hesapla hizmetlerini tetikleyebilmektedir.
Konteyner türündeki sunucusuz hesaplama hizmetleri ise kullanıcıların hazırladıkları konteyner imajlarını çalıştırırlar. Özellikle bir uygulamanın çalışması için işletim sistemine kurulması gereken bağımlılıkları varsa HoF modelinde bu bağımlılıkların kurulmasına izin verilmezken HoK bu konuda çözüm sunmaktadır. Mevcut CBS sunucusu yazılımları sunucusuz mimariye taşınırken daha özgür bir çalışma ortamı sunduğu için HoK modeli tercih edilmektedir. HoK modelinin bir diğer tercih nedeni ise HoF modeline göre daha uzun sürelerde çalışmayı sağlamasıdır.
Her şeyin bir servis olduğu bulut bilişim dünyasında sunucusuz hizmetler sadece iki grup üzerinden düşünülmemelidir. Bir sistem mimarisinin ihtiyaç duyabileceği hata günlüklerinin tutulması, uygulama ayarlarının saklanması veya mesaj kuyrukları gibi hizmetlerde sunucusuz hizmetler çatısı altında sunulmaya başlanmıştır. Literatürde bu hizmetlere destek servisleri (back-end services) de denilmektedir. Çalışmada sunulan sistem mimarilerinde bu servisler de açıklanarak kullanılmıştır.
Çalışmada en çok kullanılan iki bulut bilişim sağlayıcısının sunduğu sunucusuz hizmetler veri depolama ve hesaplama türlerine göre ayrı ayrı incelenmiştir. Sunulan hizmetlerin mekânsal bilişim özellikleri de kullanım şekilleriyle birlikte verilmiştir. Her bir bulut bilişim sağlayıcısının sunucusuz hizmetlerde uyguladıkları ekonomik model de açıklanmıştır. İki bulut bilişim sağlayıcısının sunucusuz hizmetleri karşılaştırmalı olarak da incelenmiş ve farklar irdelenmiştir.
Sistem mimarilerinin değerlendirilmesi için kullanılan iki farklı değerlendirme yöntemi açıklanmıştır. Bu değerlendirme yöntemlerinin sunucusuz mimarilere uygulaması detaylı bir şekilde açıklanmıştır. Yöntemlere ait ölçüt ve prensiplerin sunucusuz mimariler için uygulanabilirlikleri değerlendirilmiştir.
Çalışmada vektör karo harita servisi, raster karo harita servisi, mekânsal zekâ, olay güdümlü deprem bildirim servisi ve mekânsal analiz iş akışı sistemlerinin sunucusuz mimaride sistem tasarımları sunulmuştur. Her bir tasarım CBS kullanım senaryoları, roller ve gereksinimler açıklanarak desteklenmiştir. Tasarımlar seçilen bir bulut bilişim sağlayıcısı üzerinde uygulanarak açıklanmıştır. Tasarım ve uygulamalar çalışmada açıklanan 12 Faktör yöntemi ve bulut bilişim sağlayıcılarının mimari değerlendirme ölçütlerine göre değerlendirilmiştir.
Mekânsal analiz iş akışı sistemi tasarımında kullanılmak üzere iş akışlarının tanımlanabilmesi için iş akışı ve iş akışı görev tanımları da geliştirilmiştir. Böylece kullanıcıların kolaylıkla sunucusuz mimaride çalışmak üzere mekânsal iş analizlerini tasarlamalarına imkân sunulmuştur.
Sunucusuz mimariler CBS kullanım senaryoları üzerinden literatürde ilk kez bu kadar kapsamlı incelenmiştir. Çalışma kapsamında incelenen sunucusuz hizmet türlerinin mekânsal özellikleri literatürde ilk kez bir arada derlenerek incelenmiştir. Sunulan mekânsal analiz iş akışı sistemi ve sistemin ortaya koyduğu iş akışı tanımlama tasarımları da literatürde özgündür. 
Bu tez çalışmasının hedeflerinden biri de sunucusuz mimarilerin mekânsal bilişim sistemlerinde daha fazla kullanılmasına öncülük etmek ve mekânsal bilişim kullanıcıları içinde farkındalığının artmasını sağlamaktır. Çalışmada sunulan öncül tasarımların gelecekte yapılacak benzer çalışmalara kılavuz olması beklenmektedir.

Abstract:
Cloud computing technologies have developed with "everything as a service" approach. New infrastructure management service models have been introduced day by day and have been named in accordance with this approach. Today, three different service models differ in the level of cloud computing infrastructure management. Current service models are Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). Each model differs from the other by abstracting cloud infrastructure resources. A cloud computing system consists of three fundamental layers that require management; operating system, data and application. In the IaaS model, the user is expected to manage all these three components. Besides, in the PaaS model, data and application layers are expected to be managed by the user. Finally, in the SaaS model, all components are managed by the cloud computing provider and the user is given access to use them via a provided application interface. In addition to these three models, the serverless paradigm has emerged and is positioned between SaaS and PaaS models. System architectures that leverage this paradigm are also called serverless architectures.
The concept of serverless can be misleading for users and creates the perception that there is no physical or virtual server. On the contrary, applications and services still run on servers, but servers are abstracted from users and are fully managed by the cloud computing provider. As the management of highly scalable infrastructure is getting more difficult and complex, serverless architectures are more preferred especially in such scenarios that require high scalability.
Needless to say, container technology has played a major role in the development of the serverless paradigm. The use of containers has become increasingly popular, as it has improved start-up speed, portability and disposability of applications compared to virtual machines. Moreover, this new trend has brought different technical challenges together with solutions. In particular, container orchestration platforms have emerged as a solution to enable multiple container applications to work together for providing high scalability. The most well-known orchestration platform is named Kubernetes.
Cloud computing providers have rapidly adapted to container orchestration platforms and provide them as a service in their service portfolios. While these platforms bring convenience to container management, they also introduced new requirements in infrastructure management. Container orchestration platforms require advanced cloud computing infrastructure knowledge and training for their users so that users can properly configure them to make them work properly. Fortunately, serverless services eliminate these requirements and enable users to run highly scalable applications on cloud computing platforms without having advanced infrastructure knowledge.
With the increasing usage of serverless architectures and their adoption by cloud computing providers, different cloud computing service models have emerged in cloud computing platforms. Two essential component types are frequently used in the design of any software system architecture. These component types are called, computation and data storage. In this study, serverless service models are also grouped and examined based on these component types. Thus, component requirements in the system architectures presented in the study were fulfilled by these groups.
In the study, data storage services are also examined by dividing them into two groups based on the stored data structure. Structural data storage services, which were examined in the first group, are also studied in two subgroups based on data querying capabilities.
It is observed that structured data storage services offer different solutions for data querying. These solutions differ according to the structure type of the data. Data structures are categorised as follows: document, column family, key-value, and graph. In the literature, these data storage types are gathered under the name of NoSQL. The reason is that the data is queried with specially developed languages or APIs other than SQL language.
The structured data type should be selected depending on data requirements. For example, the query performance is relatively slow when a field is used rather than the key field in key-value data storage services. In the system designs proposed in the study, it is shown how structured data storage services can contribute to GIS applications with these data structure types.
Relational data storage services are the second subgroup under the structured data storage services group. These data storage services provide SQL support for querying data. Another characteristic feature is that the data is stored in tables and a relationship can be established between the tables over certain key values. Relational databases are supported by many existing mature GIS server applications. Therefore, migration of existing GIS architectures relies on relational databases to serverless architectures can be considered as possible with these services. 
It is observed that serverless relational database services are built on existing well-known database server applications that were not originally built for cloud infrastructures. In this study, it is explained how serverless relational database services are delivered in serverless architecture in a highly scalable manner while using existing database server applications that are not could native.
Unstructured data storage services, on the other hand, allow data to be stored as binary objects, regardless of their structure. These binary objects in the literature are called BLOB. Unstructured data storage services have a different hierarchy compared to file systems. In unstructured data storage services, objects are stored along with a key value that is very similar to the key-value database concept. Assigning a key value to the stored objects provides fast access to objects.
Another feature of unstructured data storage services is that they can serve a static website from stored HTML pages and asset files such as images and JavaScript files. In this study, it is also explained how a web GIS application can be served on the unstructured data storage service by leveraging this feature.
Serverless computational services were also examined by dividing them into two groups based on their deployment types; function and container. Serverless computational services based on function deployment are called Function as a Service (FaaS) and similarly, container deployments are called Container as a Service (CaaS). Both types of services use container technology at the foundation. The difference between container and function service type is based on what level users can deploy.
Serverless function services only allow deploying application code and abstract container management from the user. Depending on the cloud provider, the supported programming languages vary. Function applications run as event driven. The source of the events can be either other cloud computing services on the platform or web requests. In this study, it is explained with an example that illustrates how the (Internet of Things) IoT sensors, which are frequently used in smart city systems, can be considered as event-source to trigger the functions as a part of event-driven architecture. The relationship between unstructured data storage services and serverless computing services is also examined. In addition, changes in the binary objects and the new objects on the unstructured data storage services can produce events that trigger serverless computational services.
Serverless container services, on the other hand, run custom-built container images that are developed and deployed by the user. In particular, if an application has dependencies that need to be installed on the operating system before running, they can be installed on the CaaS model deployments. In contrast, these dependencies are not allowed to install at the operating system level in FaaS model deployments. The CaaS model can be preferred when an existing GIS system is migrated to serverless architectures because it offers the freedom to customize the operating system and run heavy computational applications. It is also preferred when the application requires longer runtime that is limited in the FaaS service model. 
In the cloud computing world, where everything offers as a service, serverless services should not be considered only in two groups. Services such as keeping error logs, storing application settings or message queues are also offered as part of the serverless paradigm. These services play also important roles in serverless architectures. In the literature, these supporting services are also called Back-end as a Service (BaaS) services. In this study, proposed system architectures leverage these services to demonstrate how they can be useful.
Serverless services offered by two mature and mostly used cloud computing providers are reviewed from the geospatial point of view in accordance with the serverless services categorisation presented in this study. Geospatial features offered by these providers are given together with their usage patterns. The economic model that each cloud computing provider implements in serverless services is also explained. Furthermore, the serverless services of these providers are also analysed comparatively and the differences are discussed.
Proposed system architectures are evaluated with two different evaluation methods commonly used for cloud system architectures. These evaluation methods are explained in detail with a serverless perspective. Each evaluation method defines different evaluation criteria. Thus, each criteria's applicability for serverless architectures is also discussed.
In this study, vector tile map service, raster tile map service, geospatial artificial intelligence (GeoAI), event-driven earthquake notification service and geospatial workflow systems are designed as serverless architectures and applied with a cloud provider's serverless services. Each design is supported by real-world GIS scenarios, role definitions and requirement lists. Each design is applied to a cloud provider's infrastructure by using only serverless services. At the end of each system design section, the proposed design and its application to a cloud provider are evaluated according to the evaluation methods described in the study.
As a part of the last system design, workflow and workflow task definition formats are also defined and explained with validation rules. These definitions are key elements to define the workflows to be used in the proposed geospatial workflow system. Thus, users can easily design and define geospatial analysis workflows to run on serverless architectures.
One important contribution of this study is to provide well-defined and well-evaluated serverless GIS architecture designs to solve various real-world scenarios. Serverless architectures can reduce resource utilization and the carbon footprint of the systems. Another important contribution is to review serverless services from a geospatial point of view with extensive examples over generic scenarios. Lastly, another remarkable contribution is to present the geospatial analysis workflow system and design the workflow definition models to run complex and long-running geospatial data analyses on serverless architectures.
One of the goals of this thesis study to demonstrate the use of serverless architectures in geospatial applications and to increase serverless technologies awareness in the geospatial community. It is expected that the novel system designs presented in the study will be a reference to similar studies in the future.