This post was originally published on www.forbes.com
I’ve seen a few “don’t believe the microservices hype” articles around the web. It’s a very natural backlash to any new trend in the IT industry, but I’m confident that there isn’t a single software solution out there (whether it exists or is just an idea in somebody’s head) that wouldn’t benefit from a microservices-based architecture and approach.
All of being said, there are definitely cases when using microservices might not be the greatest idea from a business and return on investment (ROI) perspective. If your company has been considering implementing them, here are some keys to success. But first, let’s briefly explain microservices and a couple of advantages they offer.
The fastest way to explain the concept is to imagine you’re organizing a party. You could do everything yourself or find a single catering service to do it all (the equivalent of a monolith software). Or, you could hire several companies to take care of their own individual services (the equivalent of a microservices-based architecture).
One of the benefits of microservices is flexibility, which can be applied to software or a business in two ways. First, you are free to mix and match tech stacks. Did you find a way to make one feature of your back end more efficient by switching from Python to Golang? You can do it without needing to rebuild your solution from the ground up. And secondly, you avoid vendor lock-in, so you’re not beholden to one development service provider.
Another perk of microservices is scalability. Any software solution is technically scalable if you add enough hardware into the mix. You could just as easily add extra computing power to a monolith as to a microservices-base solution. The difference comes in efficiency. When scaling a monolith, you scale the entire thing. With microservices, however, that’s not the case. You can, for example, add more computing power to the machine learning component of your software. The extra hardware works directly toward boosting the performance and scale of a single feature instead of the entire monolith.
So what are the keys to finding success with microservices?
Find The Best Vendors
Since microservices-based architecture saves your business from vendor lock-in, it means you get to hire the best team for each microservice in your solution. Your front end, back end, machine learning, security testing and quality assurance teams can all come from separate vendors. You can splurge on key application features and save money on secondary functions by hiring two different teams to take care of each. The key here is to make sure each team creates good documentation for their respective microservice and that your DevOps have created a good development and deployment environment.
Speaking of DevOps …
Invest In Good DevOps
The benefits of this architecture are only as good as your DevOps engineers. They are in charge of making sure your development environment is stable, your deployment workflow is reliable and your servers are capable of handling the demands of each microservice.
Furthermore, any conversation about scalability revolves around efficient and smart use of your hardware, and your DevOps team will be the key to smartly scaling your software solution.
Hiring a good DevOps engineer (or team) can be costly. Considering you have to hire your DevOps and software architects before you begin development, this high up-front cost might be a deterrent for many companies that are considering microservices. There is, however, a workaround. You don’t have to start with a microservices-based architecture — you just have to switch over to microservices at an early stage.
Use Microservices At An Early Stage
The earlier you make the switch to microservices, the better. Rebuilding a monolith solution using microservices can be costly. Investing in qualified software architects and DevOps engineers can be costly, too, but you’ll have more flexibility as your solution grows. But there is a middle ground between the two extremes, and it works for anyone who’s building something new.
Develop a monolith minimum viable product (MVP), and if you see that your software works as intended, is in demand and you get all the metaphorical green lights you need, then start building microservices around it.
This allows you to avoid the large upfront DevOps investments, and it saves you from the pain of breaking down a large monolith several years down the line.
If you’re making an investment into the long-term success of your business; if you’re trying to create software that will be used by millions (or billions) of people worldwide; if the success of your business relies on your software working well, working smoothly and being flexible — then microservices may be worth considering for your next software project.