61 |
Mikrotjänster med Quarkus och Gin : En jämförelsestudie ur ett prestandaperspektiv / Microservices with Quarkus and Gin : A comparative performance studyNilsson, Adrian January 2023 (has links)
Att utveckla applikationer med mikrotjänstarkitektur har idag blivit ett trendande tillvägagångssätt för att skapa tjänster som är anpassade för att köras i molnet med fördelar som mindre underhållsarbete och lättare skalbarhet. Mikrotjänster kännetecknas som löstkopplade och oberoende tjänster som kommunicerar genom att exponera ett API. För många populära programmeringsspråk, som till exempel Java, finns det flera ramverk att använda för att underlätta utvecklandet av mikrotjänster. Företaget Redpill Linpro i Karlstad, som är uppdragsgivare för den här studien, använder sig idag av Javaramverket Quarkus vid utvecklandet av mikrotjänster. De är dock intresserade av att veta hur mikrotjänster som utvecklats i Quarkus jämför sig prestandamässigt mot mikrotjänster som utvecklats i ett annat programmeringsspråk. Redpill Linpro har märkt att intresset för programmeringsspråket Go har ökat på sistone. I Gos officiella dokumentation rekommenderas ramverket Gin för att få bättre prestanda när det kommer till att utveckla tjänster som exponerar ett API. Redpill Linpro har tilldelat författaren av denna uppsats ett uppdrag att utveckla mikrotjänster med hjälp av ramverken Quarkus och Gin för att studera skillnader i prestanda samt beskriva tillvägagångssättet för hur utvecklingen av mikrotjänsterna gått till. Studien syfte är att identifiera vilken av mikrotjänsterna utvecklade i Gin eller Quarkus som presterar snabbast beträffande kompileringstid och uppstartstid, skillnader i filstorlek och skillnader i responstid vid HTTP-anropen GET och POST med och utan koppling till databas. Även vilken mikrotjänst som använder minst CPU-kraft och RAM-minne. Studiens resultat visar för- och nackdelar med båda ramverken men att mikrotjänsterna skapade med Gin presterade bäst i flest antalet parametrar som mättes i den här studien.
|
62 |
Recruit – an Adaptable Recruitment PlatformHeynes, Amanda, Rickman, Ina January 2021 (has links)
The rapid growth of the tech industry has led to a deficiency of qualified developers. Employing developers with adequate skills requires accurate assessments of the candidates. Today, an abundance of tools exists that companies can use in their recruitment processes. These tools are commonly prebuilt and often unadaptable, as well as being unrealistic in terms of real working life. In a normal work process, tasks have a duration of weeks instead of hours and developers can cooperate to solve assignments. Most companies today use recruitment tools created by external companies to facilitate their recruitment process. These tools are often rigid and cannot be adapted to the specific needs of the company. The consequences of these prebuilt tools have led to companies' rising desire to use an adaptable recruitment platform. The problem is that no such platform exists that provides a tool where companies can create their own assessments and adapt them according to their needs, with respect to the choice of tasks. The purpose of this thesis is to create an adaptable platform providing a tool for companies to use in their recruitment process, where tasks can be modified according to the requirements for the Recruit platform. The goal is to facilitate the recruitment process by creating an adaptable and expandable tool. The project strategy used for the development of the platform was an agile method inspired by Scrum. The development process resulted in a platform called Recruit that was built with a microservice architecture that fulfilled all the requirements for the functionality. This thesis was conducted on behalf of Knightec. The focus lies in building the platform with microservices using the cloud computing infrastructure of Amazon Web Services. The platform was built around social events where candidates can play a game proving their coding and problem-solving abilities. The implemented game supports different levels of difficulty and is accessed through API (Application Programming Interface) requests. Instead of candidates focusing on how to use the platform, the difficulty in the challenge lies in the focus of the candidates’ ability to create a solution to play the game. The development method used in this thesis is an agile method inspired by Scrum that is a part of a project method. The project method consists of five phases where the platform was designed and implemented, and lastly evaluated. The evaluation of this thesis concerned the project evaluation, prototype evaluation, and requirements evaluation. To prove that the requirements of the platform were fulfilled, semi-open interviews were conducted as well as acceptance tests. The discussion concerning the type of game resulted in implementing a turn-based single-player game, because of the increased complexity of implementing real-time or multiplayer games. / Den hastiga tillväxten av teknikindustrin har lett till en brist på kvalificerade utvecklare. För att anställa utvecklare med lämplig kompetens behövs noga utvalda tester. Idag existerar många verktyg som företag kan använda i deras rekryteringsprocess. Dessa verktyg är vanligtvis förbyggda och därmed inte anpassningsbara, samt speglar inte verkligheten korrekt. En arbetsuppgift, enligt verkligheten, har ofta en varaktighet på flera veckor snarare än timmar och utvecklarna kan samarbeta för att lösa uppgiften. Idag använder de flesta företag rekryteringsverktyg skapade av externa företag för att underlätta deras rekryteringsprocess. Dessa verktyg är ofta fasta och kan därför inte anpassas utefter företagets behov. Konsekvensen av dessa förbyggda verktyg har lett till ett begär hos företagen att använda anpassningsbara rekryteringsplattformar. Problemet är att ingen sådan plattform, som tillhandahåller ett verktyg där företag kan konstruera och skapa sina tester utefter behov, med hänsyn till val av test, existerar. Syftet med det här projektet är att skapa en anpassningsbar plattform som tillhandahåller ett verktyg, där företag kan modifiera sina tester utefter krav och använda dem i deras rekryteringsprocess. Målet är att underlätta rekryteringsprocessen genom att skapa en anpassningsbar plattform och ett expanderbart verktyg. Projekt-strategin som använts för att utveckla plattformen var en agil metod inspirerad av Scrum. Utvecklingsprocessen resulterade i plattformen Recruit som byggdes med en mikrotjänstarkitektur där alla krav uppfylldes. Det här examensarbetet har utförts på uppdrag av Knightec. Fokuset var att bygga plattformen med mikrotjänster genom att använda Amazon Web Services molnbaserade infrastruktur. Plattformen byggdes runt sociala evenemang där kandidater kan spela ett spel för att bevisa deras kodnings- och problemlösningsförmåga. Det implementerade spelet stödjer olika nivåer av svårighetsgrad och nås via API (Application Programming Interface) anrop. I stället för att kandidaterna ska fokusera på hur plattformen används, gör svårighetsgraden i utmaningen att kandidaternas förmåga till att konstruera en lösning för att spela spelet, hamnar i fokus. Utvecklingsmetoden som användes i detta examensarbete är en agil metod som är inspirerad av Scrum och är en del av en projektmetod. Projektmetoden bestod av fem faser där plattformen designades och implementerades, och till sist evaluerades. Evalueringen av det här examensarbetet omfattade projektevaluering, prototypevaluering, och kravevaluering. För att visa på att kraven för plattformen var uppfyllda genomfördes semi-öppna intervjuer, samt acceptanstester. Diskussionen kring typen av spel resulterade i en implementation av ett turbaserat enmansspel eftersom komplexiteten ökade med realtid- eller flermansspel.
|
63 |
Investigating the security of a microservices architecture : A case study on microservice and Kubernetes SecurityMuresu, Daniel January 2021 (has links)
The concept of breaking down a bigger application into smaller components is not a new idea, but it has been more commonly adopted in recent years due to the rise of the microservice application architecture. What has not been elaborated on enough however, is the security of the microservice architecture and how it differs from a monolithic application architecture. This leads to question what the most relevant security vulnerabilities of integrating and using a microservice architecture are, and what the correlating metrics that can be used to detect intrusions based on the vulnerabilities can be. In this report, the security of the microservice architecture is elaborated on in a case study of the system at Skatteverket, the Swedish tax agency, which is a microservice based architecture running on Kubernetes. Interviews are conducted with people that have experience in Kubernetes and microservices separately, both employed at Skatteverket and elsewhere. In the interviews, vulnerabilities and intrusion detection metrics are identified, which are then analyzed with respect to a use case in the Skatteverket system. A survey is also done on the existing technologies that can mitigate the identified vulnerabilities that are related to a microservice architecture. The vulnerabilities present in the use case are then concluded to be most relevant, the identified intrusion detection metrics are elaborated on and the service mesh technology Istio is found to mitigate largest number of the identified vulnerabilities. / Konceptet att bryta ner en större applikation i mindre komponenter är inte en ny idé, men den har blivit vanligare under de senaste åren på grund av växten i användning av mikrotjänstsarkitekturer. Vad som dock inte har utforskats tillräckligt är säkerheten för mikrotjänstarkitekturen och hur den skiljer sig från en monolitisk applikationsarkitektur. Detta leder till att fråga vilka de mest relevanta säkerhetsriskerna med att integrera och använda en mikrotjänstarkitektur är, och vilka mätvärden som kan användas för att upptäcka intrång baserat på riskerna kan vara. I denna rapport utforskas säkerheten för mikrotjänstarkitekturer genom en fallstudie av systemet hos Skatteverket, som är en mikrotjänstbaserad arkitektur som körs på Kubernetes. Intervjuer genomförs med personer som har erfarenhet av Kubernetes och mikrotjänster separat, både med anställda på Skatteverket och på annat håll. I intervjuerna identifieras risker och mätvärden för att märka av intrång som sedan analyseras med avseende på ett användningsfall i Skatteverketssystemet. En undersökning görs också om befintlig teknik som kan mildra de identifierade riskerna som är relaterade till en mikrotjänstarkitektur. De risker som förekommer i användningsfallet anses sedan till att vara mest relevanta i slutsatserna, de identifierade mätvärdena för att märka av intrång diskuteras och service mesh teknologin Istio anses mitigera störst antal av de identifierade riskerna.
|
64 |
Migrating monolithic system to domain-driven microservices : Developing a generalized migration strategy for an architecture built on microservices / Migration av monolitiskt system till domän-drivna mikrotjänster : Utveckling av en generaliserad migrationsstrategi för en arkitektur byggd på mikrotjänsterLanguric, Milan, Zaki, Leo January 2022 (has links)
As monolithic software grows in complexity, they tend to reach a point where further improvements and maintenance become a significant burden. Therefore, Many organizations consider moving components of their systems into separate microservices. Distributed systems with loosely coupled microservices tend to become more manageable involving development, deployment, and maintenance. Transitioning from a monolithic architecture to an architecture based on microservices is not straightforward. The purpose of this thesis is to study and develop a strategy for extracting microservices from a pre-existing monolithic system. It also intends to provide concepts for how to investigate and carry out migrations. The results showed that serverless computing would serve the system in question well while simultaneously leveraging DevOps principles across an entire domain. In conclusion, the strategy was summed up in several steps that represent the initiation towards full migration. Further research needs to be conducted on avoiding abrupt interruptions of services during migration and how to share data effectively across services and domains. / När monolitisk programvara växer i komplexitet finns det en tendens att den når ett tillstånd där ytterligare förbättringar och underhåll orsakar avsevärd börda. Många organisationer överväger därför att flytta komponenter från sina system till separata mikrotjänster. Distribuerade system med löst kopplade mikrotjänster syftar till att vara mer hanterbara med avseende till utveckling, driftsättning och underhåll. Övergången från en monolitisk arkitektur till en arkitektur baserad på mikrotjänster är ibland inte helt självklar. Därför är syftet med detta examensarbete att studera och utveckla en strategi för att extrahera mikrotjänster från ett redan existerande monolitiskt system. Rapporten avser även att ge koncept för hur man utreder och genomför en migration. Resultaten visar att serverlös databehandling skulle vara till nytta för systemet i fråga och samtidigt främja nyttjandet DevOps-principerna över en tjänst som utgör en hel domän. Strategin sammanfattades i flertalet steg, vilka representerar migrationsövergången. Ytterligare forskning behöver utföras för att undvika plötsliga avbrott i tjänster under migration och hur man effektivt kan dela data mellan tjänster och domäner.
|
65 |
Scalable and Energy-Efficient SIMT Systems for Deep Learning and Data Center MicroservicesMahmoud Khairy A. Abdallah (12894191) 04 July 2022 (has links)
<p> </p>
<p>Moore’s law is dead. The physical and economic principles that enabled an exponential rise in transistors per chip have reached their breaking point. As a result, High-Performance Computing (HPC) domain and cloud data centers are encountering significant energy, cost, and environmental hurdles that have led them to embrace custom hardware/software solutions. Single Instruction Multiple Thread (SIMT) accelerators, like Graphics Processing Units (GPUs), are compelling solutions to achieve considerable energy efficiency while still preserving programmability in the twilight of Moore’s Law.</p>
<p>In the HPC and Deep Learning (DL) domain, the death of single-chip GPU performance scaling will usher in a renaissance in multi-chip Non-Uniform Memory Access (NUMA) scaling. Advances in silicon interposers and other inter-chip signaling technology will enable single-package systems, composed of multiple chiplets that continue to scale even as per-chip transistors do not. Given this evolving, massively parallel NUMA landscape, the placement of data on each chiplet, or discrete GPU card, and the scheduling of the threads that use that data is a critical factor in system performance and power consumption.</p>
<p>Aside from the supercomputer space, general-purpose compute units are still the main driver of data center’s total cost of ownership (TCO). CPUs consume 60% of the total data center power budget, half of which comes from the CPU pipeline’s frontend. Coupled with the hardware efficiency crisis is an increased desire for programmer productivity, flexible scalability, and nimble software updates that have led to the rise of software microservices. Consequently, single servers are now packed with many threads executing the same, relatively small task on different data.</p>
<p>In this dissertation, I discuss these new paradigm shifts, addressing the following concerns: (1) how do we overcome the non-uniform memory access overhead for next-generation multi-chiplet GPUs in the era of DL-driven workloads?; (2) how can we improve the energy efficiency of data center’s CPUs in the light of microservices evolution and request similarity?; and (3) how to study such rapidly-evolving systems with an accurate and extensible SIMT performance modeling?</p>
|
66 |
Design and Evaluation of a Microservice Testing Tool for Edge Computing Environments / Design och utvärdering av Microservice Testing Verktyg i KantmolnmiljöTanfener, Ozan January 2020 (has links)
Edge computing can provide decentralized computation and storage resources with low latency and high bandwidth. It is a promising infrastructure to host services with stringent latency requirements, for example autonomous driving, cloud gaming, and telesurgery to the customers. Because of the structural complexity associated with the edge computing applications, research topics like service placement gain great importance. To provide a realistic and efficient general environment for evaluating service placement solutions that can be used to analyze latency requirements of services at scale, a new testing tool for mobile edge cloud is designed and implemented in this thesis. The proposed tool is implemented as a cloud native application, and allows deploying applications in an edge computing infrastructure that consists of Kubernetes and Istio, it can be easily scaled up to several hundreds of microservices, and deployment into the edge clusters is automated. With the help of the designed tool, two different microservice placement algorithms are evaluated in an emulated edge computing environment based on Federated Kubernetes. The results have shown how the performance of algorithms varies when the parameters of the environment, and the applications instantiated and deployed by the tool are changed. For example, increasing the request rate 200% can increase the delay by 100% for different algorithms. Moreover, complicating the mobile network can improve the latency performance up to 20% depending on the microservice placement algorithm. / Edge computing kan ge decentraliserad beräkning och lagringsresurser med låg latens och hög bandbredd. Det är en lovande infrastruktur för att vara värd för tjänster med strängt prestandakrav, till exempel autonom körning, molnspel och telekirurgi till kunderna. På grund av den strukturella komplexiteten som är associerad med edge computing applikationerna, får forskningsämnen som tjänsteplacering stor betydelse. För att tillhandahålla en realistisk och effektiv allmän miljö för utvärdering av lösningar för tjänsteplacering, designas och implementeras ett nytt testverktyg för mobilt kantmoln i denna avhandling. Det föreslagna verktyget implementeras på molnmässigt sätt som gör det möjligt att distribuera applikationer i en edge computing-infrastruktur som består av Kubernetes och Istio. Med hjälp av det konstruerade verktyget utvärderas två olika placeringsalgoritmer för mikrotjänster i en realistisk edge computing miljö. Resultaten visar att en ökning av förfrågningsgraden 200 % kan öka förseningen med 100 % för olika algoritmer. Dessutom kan komplicering av mobilnätet förbättra latensprestanda upp till 20% beroende på algoritmen för mikroserviceplaceringen.
|
67 |
AOT kompilering för minskad starttid av Java-baserade tjänster / AOT compilation to reduce startup time for Java-based servicesPergler, Oscar January 2023 (has links)
Software engineering architectures, such as microservices and serverless, have been increasingly adopted for their ability to address architectural challenges through a modular approach. This modularity involves isolating components and assigning them specific responsibilities independently of other components. Java, a computationally robust language, is frequently utilized in microservice architectures; however, the Java Virtual Machine (JVM) is often criticized for its slow and unpredictable startup times in these environments. This study investigates the startup time, response time, and CPU load of Java services compiled with either the JVM or GraalVM. A microservice system comprising three testable Java services was developed and monitored to identify any differences in the aforementioned metrics. The results indicate that GraalVM outperforms the JVM in terms of startup time. However, the impact of GraalVM on response time is not statistically significant enough to reject the null hypothesis. Additionally, GraalVM demonstrates lower CPU usage during cold starts. From an environmental perspective it is important to note that the shortened start time potentially comes at the cost of an increased development time depending on the complexity of the system and the seniority of the developer. / <p>Det finns övrigt digitalt material (t.ex. film-, bild- eller ljudfiler) eller modeller/artefakter tillhörande examensarbetet som ska skickas till arkivet.</p><p>There are other digital material (eg film, image or audio files) or models/artifacts that belongs to the thesis and need to be archived.</p>
|
68 |
Microservices identification in existing applications using meta-heuristics optimization and machine learningBarry, Hanifa 03 1900 (has links)
L’architecture en microservices met en évidence de multiples avantages pour les entreprises
et les développeurs. Cela explique pourquoi de nombreuses entreprises technologiques choisissent
de migrer leurs logiciels d’une architecture monolithique vers celle des microservices.
Cependant, la migration d’un système monolithique ou d’un système hérité vers une architecture
en microservices est une tâche complexe, risquée et chronophage. Pour faciliter et
améliorer ce processus, notre travail se concentrera sur la conception d’une approche semiautomatique
pour détecter et identifier les microservices dans les applications existantes.
Il s’agit d’une étape clé vers l’objectif global de migrer un système monolithique vers des
microservices. Notre approche consiste à combiner des méthodes de regroupement et d’optimisation
de la proximité entre les dépendances structurelles à un niveau de granularité
optimal. Dans ce projet, nous nous appuyons également sur plusieurs méthodes d’intelligence
artificielle, en particulier des algorithmes d’apprentissage automatique, pour mettre
en oeuvre notre approche. D’une part, nous effectuons l’extraction de dépendances et le
regroupement. D’autre part, nous mettons en oeuvre des méthodes qui nous aideront à optimiser
la proximité entre éléments constituant un microservice. Pour obtenir les scores de
proximité, nous ciblons à la fois les relations sémantiques et les dépendances structurelles.
L’analyse des graphes d’appels et des traces d’exécutions peut nous aider à générer les différentes
connexions structurelles. En ce qui concerne les connexions sémantiques, nous pouvons
tirer parti de techniques d’apprentissage de représentations numériques (embedding) telles
que SBERT. / The microservices architecture highlights multiple benefits for companies and developers.
This explains the reason why numerous tech companies choose to migrate their software from
a monolithic architecture to one of microservices. However, migrating from a monolithic or
a legacy system to a microservices architecture is a complex, risky, and time-consuming
task. To ease and improve this process, our work will focus on designing a semi-automatic
approach to detect and identify microservices in existing applications. This is a key step
toward the overall goal of migrating a monolithic system toward microservices.
Our approach consists in combining methods of clustering and optimization of proximity
between structural dependencies at an optimal level of granularity. In this project, we rely
on several Artificial Intelligence techniques as well, specifically Machine Learning algorithms,
to implement our approach. On one hand, we are performing dependency extraction and
clustering. On the other hand, we are implementing methods that will help us optimize the
proximity. To obtain the proximity scores, we are targeting both semantic relationships and
structural dependencies. Analyzing call graphs and execution traces can help us generate
the different structural links or relations. As for the semantic connections, we can take
advantage of highly useful embedding such as SBERT.
|
69 |
Mikrotjänst-arkitektur och dess skalbarhet / The Scalability of Microservice ArchitectureLarsson, Mattias January 2018 (has links)
Att designa mjukvaruapplikationer med en viss struktur kan ofta framhäva efterfrågade egenskaper. För att välja rätt arkitektur behövs ofta övervägningar, och ibland till och med kompromisser, göras om applikationens planerade karaktär. Det är ofta bra att i detta stadie ha en klar bild om vilka attribut en applikation önskas ha. Ett av de viktigare attributen på sikt är skalbarhet. Kunskapen om olika arkitekturers skalbarhet spelar en definitiv roll i designfasen, vilket avgör hur en applikation senare skalas. På senare år har mikrotjänst-arkitektur blivit ett populärt sätt att bygga mjukvara på där den höga skalbarheten sägs vara en bidragande faktor. Detta arbete har till syfte att undersöka skalbarheten hos mikrotjänst-arkitektur i förhållande till monolitisk arkitektur och visa hur detta kvalitetsattribut påverkas när en transformering från en monolit till en mikrotjänst-arkitektur görs. Arbetet har valt att utgå ifrån en existerande modul i en E-handelsplattform med öppen källkod. Modulen som transformerades till en mikrotjänst, skalades horisontellt för respektive arkitektur och applikations-version. Vid användandet av lämpliga verktyg, såsom Docker, visar resultatet att horisontell skalbarhet finns i högre grad hos mikrotjänst-arkitekturen och fortsätter därefter vara hög. Skalning av mikrotjänster kan göras med en högre precision av det som önskas förändras. Detta står i kontrast till den monolitiska strukturen, där skalning begränsas av prestandan av den miljö där mjukvaruapplikationen körs. Efter transformationen till en mikrotjänst-arkitektur ökade skalbarheten, då skalningsmetoden gjordes med mer finkornighet och isolering av den utvalda modulen. För att individuellt skala den monolitiska modulen horisontellt behövdes förändringen göras virtuellt med hjälp av bakgrundsprocesser. Denna lösning visar sig vara en indirekt skalning av hela den monolitiska strukturen. Utöver horisontell skalbarhet fokuserar utvärderingen av resultatet på kvalitativa attribut i form av simplicitet, autonomi och modularitet. / In designing software applications, a chosen structure can often accentuate desired properties. To choose the correct architecture, one must often do considerations and sometimes even compromises, about the intended characteristics of the application. In that stage it is often well motivated to have a clear picture about which attributes the application shall possess. Over time, one of the most important attributes is scalability. The knowledge about the scalability of different architectures could play a crucial part in the design phase, determining how an application is scaled in the future. In recent years Microservice Architecture has been a popular way of building software and its high scalability is said to be a contributing factor. This work has the purpose of examine the scalability of microservice architecture relative to the monolithic architecture and how this quality attribute is affected after a transformation is done from a monolith to a microservice system. This work is based on an existing module from an open source E-commerce platform. The module was first transformed into a working microservice, then both architectures was horizontally scaled. Using suitable tools such as Docker, the result of this work shows that horizontal scalability exists in a high degree within the microservice architecture and continues being high there after. Scaling of microservices can be done with higher precision of what are to be changed. This stands in relation to the monolithic approach where scaling is limited to the performance of the environment where the software application is running. The transformation to a microservice architecture resulted in an increase of scalability. The scaling method was more fined-grained and isolated to the selected module. In contrast, individual horizontal scaling of the monolithic module was required to be done virtually with background processes. This concluded in an indirect scaling of the whole structure of the monolith. Besides horizontal scalability, the evaluation is focused on the system quality attributes of simplicity, autonomy and modularity.
|
70 |
Uma abordagem dirigida por modelos para distribuição tardia de aplicaçõesEsperança, Vinicius Nordi 07 March 2016 (has links)
Submitted by Caroline Periotto (carol@ufscar.br) on 2016-09-26T20:19:11Z
No. of bitstreams: 1
DissVNE.pdf: 1613517 bytes, checksum: bd44342cd60c7332f4ed2a360b407235 (MD5) / Approved for entry into archive by Marina Freitas (marinapf@ufscar.br) on 2016-09-27T20:14:41Z (GMT) No. of bitstreams: 1
DissVNE.pdf: 1613517 bytes, checksum: bd44342cd60c7332f4ed2a360b407235 (MD5) / Approved for entry into archive by Marina Freitas (marinapf@ufscar.br) on 2016-09-27T20:14:47Z (GMT) No. of bitstreams: 1
DissVNE.pdf: 1613517 bytes, checksum: bd44342cd60c7332f4ed2a360b407235 (MD5) / Made available in DSpace on 2016-09-27T20:14:53Z (GMT). No. of bitstreams: 1
DissVNE.pdf: 1613517 bytes, checksum: bd44342cd60c7332f4ed2a360b407235 (MD5)
Previous issue date: 2016-03-07 / Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES) / The need to improve software systems to adapt to the new technologies is a constant topic of research. As computing evolves, new challenges emerge and new solutions must be created. The increasing use of various types of devices for access to sites and software and the ease that the Internet provides the information access, force researchers to keep great efforts improving already developed applications, or even thinking of ways to facilitate the development of software to run on multiple devices. The general purpose of this master’s research was focused on this problem, distribute software systems initially designed to run on a single computer in order to eliminate many tasks that the developer thoroughly repeat this process. The approach allows developers to use the source code of any application and distribution models, perform the division of its software quickly in order to test different distributions without time cost. Using concepts of MDD (Model-Driven Development), analyzers and code generators, and concepts of microservices, it developed a partitioner that distributes the source code of an application on multiple servers, creating small services for each, making these services exchange information with each other while maintaining the functionality of the application intact. The partitioner gives flexibility to the programmer to choose the arrangement of classes among the services that will be created. Developers can then easily test different ways to distribute the code of the application without the need of having to develop services and communication between the new services. This approach was called late distribution. Experimental studies were performed to ensure the validity of the project. In total, five different tests were conducted in order to verify the creation of services would be performed as defined by the programmer. In all cases the result was satisfactory, allowing distribution of software code used between the designated servers. / A necessidade de melhoria de sistemas de software para adequarem-se às novas tecnologias é tema constante de pesquisas. Conforme a computação evolui, novos desafios surgem, e novas soluções devem ser criadas. A crescente utilização de diversos tipos de aparelhos para acesso a sites e software, além da facilidade que a Internet proporciona ao acesso de informações, força pesquisadores da área a manterem grandes esforços melhorando aplicações já desenvolvidas, ou mesmo pensando em formas de facilitar o desenvolvimento de software de forma a rodar em vários dispositivos. O intuito geral desta pesquisa de mestrado foi com foco nesse problema, de distribuir sistemas de software inicialmente projetados para rodar em um único computador de maneira a eliminar muitas tarefas que o desenvolvedor repetiria exaustivamente nesse processo. A abordagem permite que programadores possam, a partir do código fonte de alguma aplicação e modelos de distribuição, realizar a divisão do seu software de maneira rápida, a fim de testar diversas distribuições sem custo de tempo. Utilizando conceitos de DSDM (Desenvolvimento de Software Dirigido a Modelos), analisadores e geradores de código, e conceitos de microsserviços, foi desenvolvido um particionador que distribui o código fonte de uma aplicação em diversos servidores, criando pequenos serviços para cada, fazendo esses serviços trocarem informações entre si, mantendo as funcionalidades da aplicação intactas. O particionador dá flexibilidade ao programador de escolher a disposição das classes entre os serviços que serão criados. Desenvolvedores podem então, facilmente, testar diversas maneiras de distribuir o código de sua aplicação, sem a necessidade de ter que desenvolver os serviços e a comunicação entre eles. Essa abordagem foi denominada distribuição tardia. Estudos experimentais foram realizados para garantir a validade do projeto. No total, cinco testes diferentes foram conduzidos, a fim de verificar se a criação dos serviços seria realizada como definida pelo programador. Em todos os casos o resultado foi satisfatório, permitindo a distribuição do código do software utilizado entre os servidores designados.
|
Page generated in 0.0169 seconds