From Monolithic applications to Microservices

148 views 5 slides Oct 18, 2019
Slide 1
Slide 1 of 5
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5

About This Presentation

This presentation will help you understand differences between monolithic and microservices applications. It will help you understand difference in architecture of monolithic and microservice architecture


Slide Content

From Monoliths to Microservices Wikipedia Definition: Microservices are a software development technique—a variant of the service-oriented architecture (SOA) architectural style that structures an application as a collection of loosely coupled services . Overview: Software world till date has been dominated by monolithic applications. In short Monolithic = “Bulky applications having their components tightly coupled/dependent on each other.” These applications are also called n-tier applications because they have n-tiers OR n-levels OR n- layers. (e.g. – 3-tier, 3- layer architecture) Companies till date have faced a lot of problems with monolithic applications regarding maintenance, scalability and extensibility. In this article, we will understand how you can apply your existing knowledge of monolithic applications to dive into a new world of microservices for development of your application if you want to move someday into cloud or want to survive in this competitive market. Ask following questions to yourself: What you have now? Ans: Monolithic applications What you want for future? Ans: Microservice application Why you want microservices? Ans: Because we want to take benefits of cloud technology in near / distant future. Is there any successful example of microservice application? Ans: Netflix

Analogy Monolithic application Micro services Characteristics of monolithic application Single deployable unit (E.g. – WAR file in Java, DLL/EXE or web application in .NET Consists of multiple parts / layers. Usually 3-tier applications according to purpose: Database layer: Handles all database/storage related operations Business logic layer: Handles product specific logic Presentation layer: Handles UI screens. Deep parent-derived class hierarchy Hosted on single PC at a time. Challenges of monolithic application Troubleshooting: If a fault occurs it’s difficult to pinpoint where that fault occurred because application is huge. Scalability: If your application performance is slow you cannot scale individual parts as these parts are heavily interconnected with other parts. Usual approaches in scaling monolithic applications are increasing number of servers, RAM, disk space, load balancers and increasing count of VMs on which these applications are hosted. New functionality can impact whole application in a bad way

Deployment: Time consuming due to repeated QA cycles and integration testing. Same technology stack: If entire application is developed in one technology stack (E.g. - .NET) then you cant switch parts of this application with another technology stack(E.g. – Java) with ease and error-free manner. Unsuitable for cloud: Big NO-NO!!! Work of development teams need to be synchronized with each other w.r.t to goals. Are you fed up due to above characteristics and challenges of monolithic applications BEFORE moving into cloud? Remedy: Microservices Characteristics of microservices application Bit sized components Deployment is independent Isolating service is easier Can scale as much as you want without affecting other parts Can add new functionality Choose any technology stack of your choice Made for cloud Independent teams can have same or different goals Challenges of microservices application Number of microservices Pinpointing fault to 1 or more microservices is difficult. Once fault is found, service can be isolated. Embrace DevOps team culture Testing is distributed and dependent on lot of independent factors. Designing with failure in mind

Synchronization of information between different microservices Architectural difference between Monolithic and Microservice application Monolithic application Micro services Factors to consider while migrating monolithic application to Microservice application Project deadline and budget Technical skillset of resources or technology stack preference Readiness to embrace DevOps culture Value in the eyes of customer and management Readiness to deal with distributed application architecture Ability to handle multiple development teams Benefits of migrating to cloud Number/Complexity of features to be migrated

In the next article we would see different architectural patterns for developing Microservice aplications. Please let me know your comments/suggestions.