noun_Email_707352 noun_917542_cc noun_Globe_1168332 Map point Play Untitled Retweet

Monolith to microservices architecture – six key benefits

If you want to keep up with high customer demands and to drive the success of any modern cloud application, microservices is a mindset to do things small and do it 'right'.

Farrah Farooq / September 07, 2020

Microservices architecture provides easy-to-manage, scalable and faster time-to-market business applications. It helps companies to optimize resources. Modern IT culture built over DevOps and cloud container management technologies, has ignited my passion for it.

IT industry excites me because of the many interesting career paths and for playing a key role in driving global innovation forward. Within this field, I get a chance to team-up with passionate people worldwide.The most exciting challenge for me now, is to build next generation digital solutions for our customers, employees, and citizens. At TietoEVRY we aim to provide elevated customer experience, therefore we are adapting very quickly to exciting new technologies in cloud computing, APIOps, DevOps, DevSecOps. 

As a cloud specialist, my role is to develop high quality and secure cloud-based solutions, where we implement test-driven and event-driven microservices. I would like to give our customers a competitive edge by using latest automation techniques in Azure DevOps. I have been doing coding since year 2001 started with the C-language in back old college days. love what I do because it is an area full of opportunities having enormous industry growth and most importantly work-life balance. What can I say, simple, clear, bullet proof-code and elegant solutions are my cup of tea! 

I am very passionate about my work, so let’s talk some microservices!

Over the last decade, solution architectures have greatly evolved, from model-view-controller MVC architecture to microservices architecture. In MVC, the segregation of development is done strictly in three areas and the application is monolith before being deployed as a single, executable package.

Microservices is not merely an architecture, it is a mindset built within continuously deployed systems in cloud. It is basically a network of small APIs with HTTP REST protocol interface. We can also call them apps or functionality that are developed, executed, tested, versioned and deployed independently. This has six main advantages over traditional architectures:

(1) Increased scalability: Nowadays, due to the cross-platform approach and elasticity provided by the containerization of apps, horizontal scaling done via microservices is high performant and cost efficient. If one feature requires more resources in terms of data or users, e.g. application pool size or memory for storing worker threads, then the whole app has to be scaled. If that feature is a microservice itself, then we can allocate resources only to that particular app, hence increased performance, optimized resources and lower costs.

(2) Continuous deployment: Usually during agile development, a team consists of developers that may develop or support several different business core features concurrently. If everyone is doing this in the same app, for example in a single visual studio or node.js project under the same GitHub repository with a single CI/CD release pipeline, there is an increased risk of (1) merge conflicts, (2) dependency issues by stepping on other’s toes and (3) when redeploy changes in one feature, to get an immediate effect the whole project needs redeployment, which increases waiting time for other developers. In microservices architecture, each team can build and deploy services as totally separate apps, without affecting or disrupting other teams. This, in turn, makes conflict resolution simple.

(3) Easy integration with third parties: Developers may need to store and retrieve data from third party customer databases, e.g. on-premises SAP servers or cloud servers. In this case, building an independent API for integration and transformation service can increase code-reusability and security constraints. This API may also store integration mapping in the data stores which is used more than once.

(4) Failure resistant: In general, there is no service that is 100% failure resistant. However, microservices handle failures elegantly. That means your system is reliable and a single failure to your service doesn’t lead to the entire system shutting down. Other services (replicas) will take over just-in-time, but only if they are provided with monitoring systems, e.g. Azure monitoring.

(5) Evolutionary: A migration is possible from monolith into microservices in an evolutionary fashion. First, you need to start with one or two APIs and connect to the old system via those APIs, before adding more components as new requirements come along. This architecture suits long-term systems that evolve. Another way is to only add some on-demand custom features rather than developing the entire app from scratch. Keep in mind that microservices aren’t the only solution here. Other ones, like service-oriented architecture SOA, also force modular development around business capabilities, but microservices with DevOps provides a smaller, more fine-grained approach that allows you to accomplish the same objective.

(6) Faster DevOps: If microservices architecture is implemented carefully, and with the right technologies in hand, it provides a significant boost of speed to both development and operations. DevOps helps to attain speed through people and technology. You can automate each element of the path to production. Thus, by using Microservices and DevOps, engineers in large product development may deploy code every tenth-of-a-second, reducing the number of outages. In a nutshell, DevOps helps operations and development engineers take part in the entire product lifecycle.

Best Suited for Service-Driven Business Model 

Microservices architecture is best suited to service-driven business models, where the intent is to build products, not projects! Earlier, it was adopted for distributed or mission critical applications, but nowadays is used to renew and innovate almost all kinds of industries –  no matter if they are small scale or have millions of users. Some examples include HR and Payroll, Telecommunication, Forestry, Energy, Retail, Digital Content Management, ECommerce, Manufacturing, Video streaming, Social media and Logistic.

Love-hate relationship

I love doing the microservices architecture, for all the reasons I have mentioned above. The possible challenges that may come with doing microservices are when you get tangled up in complexity, scaling and deployments. With the right technology stack and experts in the field, you can target it correctly. As each microservice or product may have different storage and processing requirements, managing operations can become a nightmare if not communicated properly. Therefore, inter-team and inter-API communication is important!

My recommendation to any enterprise is to first analyse the need for doing microservices architecture. Ask yourself these primary questions:

  • Is my project size is too big and do I want to decompose functionalities into small services?
  • Do I want to increase reusability?
  • What about the utilization of DevOps and do I need low-cost and high-quality products?
  • Do I need to minimize overheads in terms of application deployment and support?
  • How can I eliminate bottlenecks while using resources sparingly?
  • Are innovations in technology stack & speed vital to my business?

To step up to the next level in technology and innovation, microservices architecture helps organizations to build cost-efficient, scalable, fault-tolerant, and easy-to-manage products. Our combination of experts from teams Digital Experience, and Cloud Solutions, manage customer’s complex environments, offer continuous development of evolving microservices architecture, provide essential AMS functions, and transform the customer’s way-of-working to agile DevOps style. 

Read more on how TietoEVRY and Microsoft are helping customers to ​provide a tailored solution for each customer according to our innovative approach

Follow us on Instagram to get a taste of #TietoEVRY life as Farrah and other inspiring women in tech from TietoEVRY will be taking over our stories as part of the Women in tech Forum week celebration! 

 

Farrah Farooq
Senior Software Engineer at TietoEVRY

Farrah is a Senior Software Engineer and technology enthusiast, have 7+ years of development experience, is an expert in Microsoft full-stack development, Azure Cloud, and DevOps. She is responsible for migrating old business applications to new architectures, implementation and coding for the digital transformation of companies. Along with her passion to develop superior customer experience CX for Tieto customers, she also likes to share her development experience with the latest technology trends to the world.

She works in opensource frontend technologies such as Angular, Typescripts, Javascript, HTML, and CSS, and also cloud backend technologies like C# .Net core, Node.JS, NGINX, Docker, Kubernetes, Azure CI/CD pipelines, Azure SQL, MSSQL, Serverless, GITHUB, Kafka.

Author

Farrah Farooq

Senior Software Engineer at TietoEVRY

Related services

DevOps and agile services

Share on Facebook Tweet Share on LinkedIn