Development of a scalable microservice architecture for web services using os-level virtualization
This thesis discusses Microservice Architecture and how it can facilitate web services scalability using containerization. The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating through standard API. The Microservice Architecture is used to foster separation of components that creates a more effective environment for building and maintaining highly scalable applications. Monolithic applications are made of modules that are all tightly coupled together and have to be developed, deployed and managed as one entity, since they all run as a single OS process. Changes to one part of the application require a redeployment of the whole application, and the lack of hard boundaries between the components, over time, results in the increase of complexity. Further monolithic applications are not designed to run in the cloud without making major redesign and modifications. Scalable cloud native applications on the other hand, may require big changes in the application code and which may not always possible within the timeframes of the fast changing business environments. Monolithic applications present a steep learning curve to new developers and may consume more man-hours before a change introduced by developers is reflected in production. This is mainly due to friction experienced between various development teams. For a scalable architecture every microservice is packaged as a container before deployment to any platform that supports containerized deployments. Each container is uniquely addressable using an IP. Docker architecture is extensible and works with other software development tools to realize a scalable build and deployment system for microservices. This thesis employs Docker Engine, Docker Machine, Docker Compose and Docker Swarm to realize the scalability of the Microservice Architecture. Docker Swarm is a middleware within the orchestration layer that abstracts the complexities arising from the Microservice Architecture. This abstraction simplifies the design and implementation of the microservices and enhances the scalability of the system by eliminating the contention delay and minimizes the coherency delay. From the results obtained by making measurements of container start up delay it was observed that Docker swarm scales linearly as the number of containers in increased. It was also noted that design of Docker Swarm orchestration software are based on Microservice Architecture hence their linear scalability. The main contributing factor of Docker Swarm scalability is the Raft consensus algorithm. This algorithm is the also playing a big role distributed databases. In order to investigate the scalability of the backend services we used the crate database running on cluster of machine managed by Docker swarm. It was observed that Docker swarm really simplifies the scalability of many online web services. This trend was also observed in Continuous Integration and Testing. Docker swarm based orchestration is and will remain to viable candidate for simplifying the scalability of microservices and web services.
The following license files are associated with this item: