Microservices is a new software design concept for developing scalable, loosely coupled services with a smaller codebase than the traditional monolithic approach. The designed microservices can communicate using several protocols, such as Advanced Message Queuing Protocol (AMQP) or HTTP/REST. Software developed using microservices design offers the developers great flexibility to choose a preferred technology stack and make independent data storage decisions. On the other hand, containerization is a mechanism that packages together the application code and dependencies to run on any platform uniformly and consistently. Our work utilizes Docker and Kubernetes to manage a containerized application. The Docker platform bundles the application dependencies and runs them in the containers. Moreover, Kubernetes is used for deploying, scaling, and managing containerized applications. On the other hand, microservices-based architecture brings many challenges as multiple services are being built and deployed simultaneously in this design. Similarly, a software developer faces many questions such as where to physically deploy the newly developed service? For example, place the service on a machine with more computing resources or near another service which it often needs to communicate with? Furthermore, it is observed in previous studies that the microservices may bring performance degradation due to increased network calls between the services. To answer these questions, we develop a unique microservices-based containerized application that classifies images using deep learning tools. The application is deployed into the Docker containers, while Kubernetes manages and executes the application on the on-premise machines. In addition, we design experiments to study the impact of container placement on the application performance in terms of latency and throughput. Our experiments reveal that Communication Aware Worst Fit Decreasing (CAWFD) obtained 49%, 55%, and 54% better average latency in microservice placement scenario two. This average latency is lower than CAWFD in scenario one in the 100, 300, 500 images group. Simultaneously, the Spread strategy displayed minimal performance because the Kubernetes scheduler determines the container placements on the nodes. Finally, we discover that CAWFD is the best placement strategy to reduce the average latency and enhance throughput. / Microservices är ett nytt mjukvarudesignkoncept för att utveckla skalbara, löst kopplade tjänster med en mindre kodbas än den traditionella monolitiska metoden. Tjänsterna kan kommunicera med flera protokoll, till exempel AMPQ eller HTTP/REST. Programvaran som utvecklats med hjälp av mikroservicedesign erbjuder en utvecklare stor flexibilitet att välja en föredragen teknikbunt och fatta oberoende datalagringsbeslut. Dessutom är containerisering en mekanism som grupperar applikationskoden och beroenden för att köra på vilken plattform som helst enhetligt och konsekvent. Vårt arbete använde Docker och Kubernetes för att hantera de containeriserade applikationerna. Docker plattformen buntar programberoenden och kör dem i behållarna. Samtidigt används Kubernetes för distribution, skalning och hantering av containeriserade applikationer. Å andra sidan ger mikrotjänstbaserad arkitektur många utmaningar. Många tjänster byggs och distribueras samtidigt i denna design. På samma sätt står en mjukvaruutvecklare inför många frågor. Som, var ska de placera den nyutvecklade tjänsten? Till exempel, placera tjänsten på en maskin med fler datorer och nära en annan tjänst där de ofta behöver kommunicera med varandra. Vidare har det observerats i tidigare studier att mikrotjänsterna försämrar prestandan på grund av ökade nätverkssamtal mellan tjänsterna. För att besvara dessa frågor har vi utvecklat en unik mikrotjänstbaserad containeriserad applikation. Den klassificerar en bild med hjälp av djupa inlärningsverktyg. Programmet distribueras till Docker-behållarna, medan Kubernetes hanterar och kör programmet på lokala datorer. Dessutom utformade vi ett par experiment för att studera behållarnas inverkan på applikationsprestanda när det gäller latens och genomströmning. Våra experiment avslöjar att Communication Aware Worst Fit Decreasing (CAWFD) fick 49%, 55% och 54% bättre genomsnittlig latens i scenario två med mikrotjänstplacering. Denna genomsnittliga latens är lägre än CAWFD i scenario ett i gruppen 100, 300, 500 bilder. Samtidigt visade Spreadstrategin minimal prestanda eftersom Kubernetes-schemaläggaren bestämmer behållarplaceringarna på noderna. Slutligen upptäcker vi att CAWFD är den bästa placeringsstrategin för att minska den genomsnittliga latensen och förbättra genomströmningen.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-311008 |
Date | January 2022 |
Creators | Yousaf, Ali |
Publisher | KTH, Skolan för elektroteknik och datavetenskap (EECS) |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | English |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Relation | TRITA-EECS-EX ; 2022:79 |
Page generated in 0.0031 seconds