boldgrid-inspirations domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/nearth9/public_html/wp-includes/functions.php on line 6170heartbeat-control domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/nearth9/public_html/wp-includes/functions.php on line 6170nginx-helper domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/nearth9/public_html/wp-includes/functions.php on line 6170ninja-forms domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/nearth9/public_html/wp-includes/functions.php on line 6170Originally Published July 21, 2018
All software systems exist to serve a business need. However all software systems are not made in the same way or follow the same structure. Software systems vary in their complexity and size. There’s a an ecosystem that exists across a wide spectrum ranging from traditional software systems commonly called ‘monoliths’ (giant one-piece bundles of code) to ‘microservices’ (tiny single-function systems or apps communicating with each other).
Monoliths or conventional software systems are conceived, built and operated as a single unit. Because of their size and complexity, even smallest changes in monolithic systems involve building and deploying the whole application. Flexibility is almost zero while the entire system requires huge efforts to just maintain and run day to day operations. Scaling monolithic applications is another challenge why organizations are seeing less and less benefits in operating such software systems.
On the other hand, microservices come in to picture as a combination of various small features where each feature serves only one distinct purpose of the system. Martin Fowler describes microservices as an approach to developing an application as a suite of small services.

Image Credit: Internet
With microservices, modules or functionalities within an application can be independently produced, deployed and operated. Microservices architectures offers businesses an unique ability to build and operate only those functionalities which are required. Microservices architecture focuses on creating software as single-function components (microservices) with well-defined interfaces and operations that communicate via APIs.
As the microservices are independently deployable and scalable, each service exists within a firm boundary, even allowing for different services to be written in different programming languages and can also be managed by different teams.
The most important parameter to decide what and how many Microservices are needed is to identify business needs that need to be met. A functionality can be loosely defined as a purpose of the particular element – for example user getting authenticated through an username / password combination is a a functionality and authentication is the business feature. What counts is how various business features (functionalities) are categorized as business capabilities and then split, where required, as fully independent, fine-grained, and self-contained microservices. Hence, the Microservices architecture has certain distinctive features making it more desirable for some business cases than others.

Image Credit: Oracle
The main concept behind microservices architecture is that most types of applications and business units structured around their IT portfolio become easier to build and maintain when they are broken down into smaller, composable pieces which work together. To put it differently, each module or component is developed and operated separately, and the application is then simply the sum of all its constituent components. In microservice architecture, each service runs a distinct and independent process and usually manages its own database. This provides development teams with a more decentralized approach to building software while also allowing each service to be deployed, rebuilt, redeployed and managed independently.

Image: Advantages of microservices architecture

Image Credit: Internet
As in case of any new technical offering, there are organizations which were quick to adapt to microservices, just as there are organizations who held out. Organizations like Netflix, eBay, Amazon, the UK Government Digital Service, Twitter, PayPal, The Guardian, and many other large-scale websites and applications have all gradually evolved from monolithic to microservices architecture.
In case of retail giant Walmart, IT department of Walmart Canada was plagued with problems arising out of working with an architecture for the internet of 2005, primarily designed around desktops, laptops and monoliths of a classic monolithic application. The problem was the IT infrastructure worked fine for 90% of the time and seemed to miserably fail during remaining 10% of times. The impact of this 10% failure rate was spectacular – at peak times, like during holiday season, major holidays and other events, the website couldn’t handle 6 million pageviews per minute and made any kind of positive customer experience impossible to achieve. Business impact – poor customer experience, lost revenue / sales to the tune of millions of dollars, losing market share, etc. Walmart Canada wanted to prepare for the world by 2020, with 4 billion people connected and 25+ million apps available. With this intent, Walmart changed its platform to microservices architecture. The impact of this change was immediate and as clear as day. Conversions were up by 20% literally overnight, mobile orders went up by 98% instantly, no downtime on major events like Black Friday or Boxing Day, operational savings were significant since they moved off expensive hardware onto commodity hardware and saved 40% of the computing power and experienced 20-50% cost savings overall.

Image: an example of Microsoft Azure
Image Credit: Microsoft blog

Image: an example of microservices architecture on AWS
Image Credit: Amazon AWS Blog
In 2000, Amazon faced a similar challenge with its primary business, the retail business website Amazon.com being managed as a single monolithic application. The complex scale and size of the application meant that Amazon had to maintain teams of engineers just to support very mundane tasks of pushing new fixes and releases through its production environment. The process of adding a new feature, or changing an existing one, or a simple bugfix was extremely complex and inefficient. Each change needed to be coordinated across a wide spectrum of stakeholders and technical teams to ensure the new changes do not break anything in the existing code. If the development team wanted to roll out a feature, the schedule needed to be coordinated very closely with other stakeholders.
Amazon soon chose to implement a services oriented architecture and proceeded to break down their one, central, hierarchical product development team into small, “two-pizza teams.” They wanted teams so small that they could feed them with just two pizzas. These smaller teams were given clear mandate and operating boundaries and were put in charge of one or few microservices so they were defining their own feature roadmap, designing their features, implementing their features, then testing, deploying and operating them. The results were simply too good. Amazon dramatically improved its front-end development lifecycle, with the product teams enabled to quickly make decisions and crank out new features for their microservices. Now the company makes 50 million deployments a year, thanks to the microservice architecture and their continuous delivery processes.
Breaking your applications into microservices isn’t always easy or enough — once done, someone has to manage, orchestrate them and deal with the new stack. The biggest mistake organizations make when moving to microservices architecture model is underestimating how it’s going to change the way they to think about applications and especially the way they think about teams developing those applications. Here are few points to be careful of while deciding path to microservices adaption.
The philosophy of the microservices architecture is: “Do one thing and do it well.” Services might run within the same process, but they should be independently deployable and easy to replace. They can be implemented using different programming languages, databases, and software environment. The services are small and fine-grained to perform a single function. They embrace automation of testing and deployment, continuous delivery software development process, failure and faults, similar to anti-fragile systems. Each service is elastic, resilient, composable, minimal, and complete.

Image Credit: RisingStack
]]>