The Impact of Microservices: The Good, the Bad, and the Ugly
Explore the various aspects of microservices, including their advantages, potential risks, and best practices for leveraging them effectively.
Join the DZone community and get the full member experience.
Join For FreeReliance on technology has come full circle since the start of the COVID-19 pandemic. The increased utilization of digital applications for needs such as banking, shopping, and especially healthcare services during the past three years has ushered in a need for consumers to trust technology to assist them in all aspects of daily living. Not coincidentally, the demands placed on app engineers, developers, and designers today require them to offer a level of versatility within their software that was not needed just a few years ago. At a time when the incidence of cybersecurity attacks is at an all-time high, it is now necessary for apps to be built and scalable in a more flexible manner so that they can be addressed appropriately in the event of an incident that requires intervention.
Microservices architecture is a more suitable way to improve the reliability and scalability of today’s software systems. In a microservices cloud-based architecture, a large application is broken down into smaller, independent services that communicate with each other through application programming interfaces (APIs). This allows for more focused development and deployment and easier maintenance and scaling. A microservices approach is in stark contrast to monolithic software applications, which are built as single, unified units that are more complicated and time-consuming to build and deploy.
Site reliability engineers (SREs) appreciate the benefits of microservices because they provide faster development cycles, improved fault tolerance, and easier deployment. At the same time, they recognize that microservices bring new challenges, such as increased complexity in monitoring, tracing issues across multiple services, and recognizing the need for careful management of inter-service communication. These challenges pose significant red flags related to protecting customers from cybersecurity issues. It’s important to understand the need to maintain this type of architecture if privacy and security are going to be upheld as digital technology continues to become more sophisticated and integrated into society.
Challenges of Moving Apps to Microservices
According to Varun Talwar, co-founder of Tetrate, an edge-to-workload application connectivity platform that connects companies to services across a mesh-managed environment, transitioning to a microservices architecture is a significant challenge for application modernization because many organizations operate complex systems that have been established for many years and could cause disruption of functionality if they were to be modified.
Additionally, a survey conducted by Asperitas Consulting, a multi-disciplined solutions organization that assists companies in the implementation of cloud services, indicated that application modernization is challenging due to issues such as staffing and the unavailability of appropriate tools.
The migration from monolith to microservices can also be a cumbersome task in and of itself. Microservices should only be considered after an evaluation of all alternative paths is conducted, according to Semaphore’s Tomas Fernandez, who also suggests that microservice applications could be best suited for software that begins as a monolith and for deployments that are not on-premises due to the nature of the customer having to manually deploy and configure everything on their own private systems.
One method of migration from monolith to microservices that more industry professionals are finding success with is the 12-Factor App methodology created by developers at Heroku, a cloud platform service that supports several programming languages.
Steps to this process include the following:
- Having one codebase tracked in revision control, with many deploys.
- Declaring and isolating dependencies.
- Storing all configuration data separately from the code.
- Treating backing services as attached resources.
- Separating build and run stages.
- Ensuring the app is stateless.
- Exporting services through port binding.
- Developing the app to be concurrent.
- Building disposable processes so that the app can be quickly started, stopped, and redeployed without data loss.
- We are enabling continuous integration based on matching environments.
- Streaming logs to specified chosen locations.
- Running administrative and management tasks as one-off processes.
It is also important to note that not all legacy apps can be modernized and that APIs can be used to enable microservices.
The Benefits of Microservices
Amidst the challenges of transitioning to and operating on a microservices system, the most significant benefit is offering customers an improved user experience. According to Loris Cro, developer advocacy manager at Redis Labs, a services provider for nearly 9,000 organizations globally, end users for software developed with microservices see fewer performance issues, bugs, and general difficulties. For example, Cro points to the ability of development teams to use different languages and database systems on a per-service level as compared to monolithic applications. Despite the many benefits that microservices offer, undesirable outcomes can occur if there is an inconsistency in the services offered, high latency with app communication, or the microservices are too complex and don’t allow for extensibility, scalability, or feature additions.
The Future of Microservices
According to research, the Microservices Architecture market will rise from 5.49 billion USD in 2022 to 21.61 billion USD by 2023, expanding at a compound yearly growth rate (CAGR) of 18.66% during the forecast period (2022-2023).
Other trends that are expected to impact the development of microservices include the following:
- Improved observability and enhanced insight into microservices’ actions and ability to control communication through the service mesh reconfigurable infrastructure.
- Automated and optimized monitoring, incident response, capacity planning, and other operations through artificial intelligence techniques to manage software more effectively.
- Better reliability than single-source software development through the use of multi-cloud strategies that implement a microservices architecture.
Although a switch to microservices-enabled software could present new security challenges as a result of their dynamic nature, companies are making the transition from monolith at a near 100-percent rate. Recent research shows that 85 percent of companies are modernizing their architecture by moving to a microservices structure. The report also indicates that leading companies are twice as likely to have at least 75 percent of their apps on a microservices architecture. The sooner that any existing outliers conduct their conversions, the more reliable their security measures will likely be.
Published at DZone with permission of kedarnath mundluru. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments