Thep Urai - Fotolia
Should my company move its apps to microservices?
Microservices-oriented architecture is more flexible than monolithic structures, but microservices comes with costs companies need to weigh against the potential benefits.
The justification for implementing a microservices-based architecture is a matter of cost and benefit.
Microservices can be expensive to implement. At the very least, you need to have personnel on hand with the expertise and experience to do the work. Without it, the alternative is to get an outside party to help.
The actual per-hour labor cost of a move to microservices can be quite high, regardless of whether it's handled by staff or a contractor. Remember, this is not the type of work that can be done by junior-level developers.
In addition to labor, there are infrastructure costs. A microservices architecture needs comprehensive CI/CD infrastructure in place in order to work effectively. If CI/CD is not in place, you need to construct it. This includes automated source code management, deployment pipelines, testing and project management capabilities.
If the intended microservice is currently deployed as part of a monolith, there is the added cost of the transfer from monolith to microservices. It's rarely a matter of simply flicking a switch to turn the microservices on and the monolith off. Not only is there the cost of the monolith team and the microservices team working in tandem to do the implementation, but the monolith team still needs to support the existing application.
If you need to support daily, if not hourly, revision cycles, then microservices-based architecture is beneficial. It's also useful if you need to support a large number of end users and external services. However, if you can successfully support fewer than 50,000 users and can live with longer revision cycles, then the benefits of a move to microservices might not outweigh the cost of implementation.
Dig Deeper on Software development best practices and processes
Related Q&A from Bob Reselman
Kubectl apply vs. create: What's the difference?
The Kubernetes command-line tool, kubectl lets you control your Kubernetes clusters. But two of its operations -- apply and create -- can often be ... Continue Reading
Vagrant vs. Docker: How these cloud-native tools differ
Both Docker and Vagrant are important parts of a cloud-native stack, but they have very different roles when it comes to supporting containers and ... Continue Reading
Is a Docker or Kubernetes certification worth it?
Some DevOps professionals shun industry certifications. But in the cloud-native world, Docker and Kubernetes certifications make prospective job ... Continue Reading