Your business has an existing web application. This application is the core of your business and what brings home the bacon. You're month-over-month growth and are very happy with how it has performed historically, but lately you have noticed customer complaints of lag time between requests. Pages are loading slower and slower, and your IT leaders were unable to find any issues.
You just recently restructured your application to an n-tiered architecture which organized your code base to make it easier to maintain and enhance. You have had code reviews to optimize your code base, but still your application is increasingly starting to lag. If this describes you, chances are you have outgrown your current architecture.
Most small to mid-sized companies hit this plateau. You could throw more hardware at the system. This has been a solution that some companies utilize to minimize the problem, but is it really the right solution? Why not consider phasing your system into a microservice architecture or in today's IT world: microservices?
Differences Between Monolithic Systems and Microservice Systems
Almost all business applications start out as what are defined as monolithic systems. What is a monolith? It is a system or web application that is built on one large codebase. A monolith is often deployed all at once; both the front-end and back-end code together, regardless of what was changed. This results in down time for your application so that system enhancements and bug fix deployments can happen. These are called maintenance windows.
However, a microservice based system, or architecture, is an application built as a suite of small services, each with their own codebase. These services are built around specific capabilities and are usually independently deployable. Think of the major pieces of your application: customers, customer information, products, payments, orders, shipping, etc.
Monolithic systems with these major areas bundled into a sole codebase put significant stress on servers.
Advantages of Microservices
There are many advantages to switching to a microservice architecture. The number one advantage is that load or processing is removed from the web server that is hosting your web application.
Deployments of these microservices are faster as you only need to deploy services that must be updated. Application down time due to updates will be decreased because you will only need to deploy services that have been updated.
During deployments, your site can remain available to users. This is a big benefit. Customers can continue to use your site without the entire application being down.
Seamless Versioning of Microservices
New versions of microservices can be deployed and introduced without taking down existing services. This keeps backward compatibility and updating existing logic to these new versions can occur on a scheduled basis that fits your needs or timelines.
Improved Fault Isolation
Isolating faults or breakdowns will be easier, eliminating the need to trace through lines of code. For example, adding new customer information, such as a new address, is not saving. Once reported, the troubleshooting process will start at the customer microservice.
With your logic separated into various services, scaling these services when needed are easily accomplished. Scalability can be many things. Perhaps you started out having all your microservices on one application server but your load on the server is heavy on the orders and payments. With microservices, you can move them to their own server. With a monolithic system described earlier, this would not be possible.
Disadvantages of Microservices
Though there are great advantages to migrating to a microservice architecture, there are some pitfalls in doing so.
Higher Operational Overhead
With a website on a web server and microservices on application servers, overhead from an IT budget perspective will increase. As you add microservices, bunching them up on one server will eventually result in the need to add in additional servers. Along with additional hardware, additional developer resources will likely be needed. Consider augmenting the team with developers experienced with microservices.
To further expand on the statement above concerning the need to hire experienced developers, experience can help with questions like, "when should a new microservice be introduced?" or "can a new requirement or enhancement be part of an existing service?" These questions or concerns are complex and the need for development talent in this area could prevent costly mistakes and time.
There are many advantages to moving to a microservice architecture. Your monolithic system could be fine for the rate of your growth and you may not have experienced the pains or troubles outlined. You could live with your existing system for now but deciding to get ahead of these issues before they happen can have long lasting benefits and keep headaches at bay.
If your online business or web application is taking off, and you need to expand your system. Microservices are the way to go. Here at Code Authority we have talented software developers and architects that can assist you with this transition. Contact us today for a free consultation!