BigBear.ai
  • Home
  • Industries
    • Academia
    • Government
    • Healthcare
    • Manufacturing
  • Solutions
    • Cyber
    • Data Analytics
    • Enterprise Planning and Logistics
    • Intelligent Automation
    • Modeling Solutions
    • Professional Services
  • Company
    • About
    • Investor Relations
    • Partners
    • Team
  • Careers
    • Benefits
    • Culture
    • Explore Jobs
    • Military and Veterans
    • Applicant Login
    • Employee Login
  • Resources
    • Blog
    • Events
    • Newsroom
    • Resource Library
    • Online Store
  • Contact
Search

Home Data Architecture The Move to Microservices: Is it the Right Architecture for my Organization?

Blog

The Move to Microservices: Is it the Right Architecture for my Organization?

Chung Ha
December 20, 2021
  • Share
  • Share

Introduction

The Microservices design pattern has been amongst the most popular topics for discussion among system and software engineers in the IT industry. However, it is one of those things that has proven to be easier said than done. In many cases, it’s not difficult to see how IT projects and engineers end up with suffering consequences of the wrong design and incorrect implementation due to misapprehension of the architecture. In this whitepaper series, we will offer our insights to help you to prepare your journey into Microservices design.

In this first paper of the series, we will show how a Microservice architecture is different from the traditional Monolithic architecture and what is the key characteristic you need to be aware of before facing the challenges of this new design pattern.

Monolithic vs. Microservices Architecture

When the application code base is small, the traditional, Monolithic architecture is simpler to design, develop, test, deploy, scale, and maintain because of:

  • One implementation code base
  • One application to test
  • One artifact to deploy, such as jar and war in Java case
  • One application log file to generate and review for troubleshooting in production
  • One application to replicate to scale

However, as the requirements grow and the code base for the implementation becomes larger and more convoluted, it will become increasingly difficult to understand and manage. It will require more time for developers to understand the existing code base before making changes and the impact analysis tends to be less accurate. Developers will end up with multiple unit tests as it’s not possible to write unit tests that are isolated for the changes.

The below show some of the typical drawbacks of the Monolithic application development.

  • Longer time to understand the implementation
  • Integrated Development Environment (IDE) takes longer time to load and compile
  • Impact analysis is less accurate
  • More missing uses cases in testing scenarios
  • Longer learning curve for new resources
  • Parallel development often difficult
  • Poor reusability at the enterprise level

The application performance will get degraded and hard to optimize because:

  • As the application grows it gets slower and more encumbered by growth in code
  • Continuous deployment becomes difficult and often impossible, a major drawback
  • Scaling requires replicating the entire application behind the load balancer
  • It becomes difficult to partially replace outdated solution components, often making organizations feel locked into a single technology and unable to adopt newer, and usually better applications

In the book, Microservice Patterns by Chris Richardson, the author warns organizations of the slow walk into the monolithic hell.  Fortunately, the Microservices architecture and design patterns allow us to build decoupled solutions that pave the way for a more sustainable IT architecture.

The basic concept of a Microservices architecture is to design and develop small services that have only limited responsibilities and integrate them as API or backend process.

The main benefits are:

  • Easy to understand and
  • Independently deployable and scalable
  • Enable teams to be autonomous
  • Avoid vendor lock
  • Easier to replace an obsolete technology stack or language
  • Better fault tolerance and isolation
  • Continuous deployment and parallel development are very possible

These benefits are good enough to address all challenges discussed for Monolithic architecture.  They are possible because the

size of the implementation of each service is small enough to handle and they are completely decoupled.

 

How do you know when you need to adopt Microservices?

There is no mathematical formula or checklist that you can use to have one absolute answer for this question. But, there are three signals you should know that trigger the need to start considering the Microservice.

The first one is delivery speed. As the Monolithic application code base grows, it becomes more difficult to understand, analyze and build upon. As a result, the overall duration of software development life cycle become longer. This is the first signal.

The second warning signal is an increase in the number of defects from each testing cycle and following each new production release. Developers and testers will begin missing test scenarios or increasingly make mistakes as the application carries more convoluted logic.

The final signal comes as you encountered more difficulty when attempting to scale horizontally. These challenges can range from financial cost to technical inability.  For example, as the number of users grow increase, and your architecture is unable to scale out and you’re considering duplicating your entire technology stack then it’s time to consider the Microservice.

 

Key Characteristic of Microservices

Now, the idea of decomposing a big application into a series of mini services seems to make sense to escape, what has become the monolithic hell. But in the meantime, we have to realize where we are escaping to. The new reality we must face is the distributed system.

Because of the name of Microservice, it’s easy to get misled to the size of the service. But in the Microservice architecture, the service is not always tiny but should be a right size to become self-contained in terms of functional coverage.  In addition to that, the bigger challenges reside in how to orachestrate logic across the various services, how to make them communicate, how to define clean API’s, how to manage distributed data, and how to centralize the common concerns.

­As you can see in the Figure above, it’s one application artifact to manage with the Monolithic architecture that gets confined by the application container. On the other hand, in the Microservices Architecture, the individual services are independent but need to get controlled as one distributed system.

As the Microservices pattern gets you out of the monolithic hell, you might end up with the jungle of the complexity and get lost completely. We have a map of the Microservices journey to guide you through and lead to the right path.  In the next paper of the series, we will walk you through obstacles and challenges in your way and how to conquer them.

Figure 1: High Level Microservice Architecture

About the Author

Chung Ha is Principal Integration Engineer at BigBear.ai who has more than 20 years of IT experience in designing and implementing innovative business solutions.  He has a wide range of skills and experiences in enterprise IT system solutions for on-prem, cloud, and hybrid environments.  He is specialized in microservice system design including migrating monolithic applications to microservice architecture.

Posted in Data Architecture, Data Warehousing.

Related Content

Qlik
Hierarchies in Qlik Sense
Data ModelingData Warehousing
Factless Fact Tables
Technology
Using Talend to Extract Data from an AWS S3 Bucket to Postgres
BigBear.ai
  • Home
  • Industries
  • Solutions
  • Company
  • Careers
  • Blog
  • Investor Relations
  • Contact
  • Twitter
  • Facebook
  • Linkedin
  • Google My business for BigBear.ai
1-410-312-0885
[email protected]
  • Privacy Policy
  • Terms of Use
  • Accessibility
  • Site Map
© BigBear.ai 2023
We value your privacy
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
Privacy Policy | Do not sell my personal information
AcceptCookie Settings
Manage Consent

Cookies Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
JSESSIONIDsessionThe JSESSIONID cookie is used by New Relic to store a session identifier so that New Relic can monitor session counts for an application.
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
CookieDurationDescription
__atuvc1 year 1 monthAddThis sets this cookie to ensure that the updated count is seen when one shares a page and returns to it, before the share count cache is updated.
__atuvs30 minutesAddThis sets this cookie to ensure that the updated count is seen when one shares a page and returns to it, before the share count cache is updated.
Analytics
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
CookieDurationDescription
_ga2 yearsThe _ga cookie, installed by Google Analytics, calculates visitor, session and campaign data and also keeps track of site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognize unique visitors.
_ga_NK4L4Q320Q2 yearsThis cookie is installed by Google Analytics.
_gat_gtag_UA_163894009_21 minuteSet by Google to distinguish users.
_gid1 dayInstalled by Google Analytics, _gid cookie stores information on how visitors use a website, while also creating an analytics report of the website's performance. Some of the data that are collected include the number of visitors, their source, and the pages they visit anonymously.
at-randneverAddThis sets this cookie to track page visits, sources of traffic and share counts.
CONSENT2 yearsYouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
uvc1 year 1 monthSet by addthis.com to determine the usage of addthis.com service.
Advertisement
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
CookieDurationDescription
f5avraaaaaaaaaaaaaaaa_session_sessionbusinesswire.com cookie
loc1 year 1 monthAddThis sets this geolocation cookie to help understand the location of users who share the information.
VISITOR_INFO1_LIVE5 months 27 daysA cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
YSCsessionYSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
yt-remote-connected-devicesneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt-remote-device-idneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
Save & Accept