Building Resource Aware Self-Healing Modern Cloud Native Environment on Commodity Hardware for Adoption of Microservice Architecture
Abstract
Years ago, even today most of the applications were developed and architected in
old school monolithic approach where each of the components of the software are tightly
coupled; running on a single process or multiple number of processes spread across
several servers, physical or virtual. This server-side enterprise application must support a
variety of different clients including desktops browsers, mobile browsers, and native
mobile application. The application might expose Application Program Interface (APIs)
to consume, also for integrating with other application, accesses the database systems and
exchanging messages. Due to the nature of this architecture, the release cycles are very
slow and updated relatively infrequent. On the other hand, as the application is tightly
coupled, it has much dependency on the operating systems. In case of failure, migrations
of application are a daunting task; even also scaling. Though virtualization technology
can mitigate those issues like availability on failure or scaling, at the same time it
increases the operational responsibilities to maintain. Patching the operating systems,
doing vulnerability scan at regular interval, mitigate them where necessary. The whole
process makes life harder for developers and system administrator. Moreover, the
application is fully dependent on this entire cycle because it is residing on top of
operating system and these types of application are not resource aware. Thus, resource
optimization is not possible in many cases.
Today, these legacy applications, most of them monolithic in architecture, are
slowly being broken down into smaller, independent running components called
microservices. As microservices are independent and decoupled from each other, they
can be developed, deployed, updated, and scaled individually at any time. This enables
business to change components quickly and as often as necessary to keep pace with
today’s rapidly changing customer requirements and business goals. With the help of few
open-source technology, today, we can build a modern cloud native environment
anywhere with traditional commodity hardware which allows us to develop, build, run,
deploy and scale modern microservices application which are fully resource aware, where
microservices scaled automatically based on resource requirement and descale whenever
required. At the same time, application by itself can heal whenever required.
Collections
- M.Sc Thesis/Project [149]