A while back I started using this term fit-monolith. At first people gave me a weird look. Why would he put fit in front of the word monolith? What does this mean fit-monolith? As I talk to a lot of customers about their modernization efforts around cloud. I help them with a road map for their modernization efforts. What apps to begin to move to the cloud. What ones to deprecate some to merge together. And we have to have that conversation on how cloud-native we want to modernize this app.
The word fit in this context has a few meanings. How fit is your monolith for your cloud. Like does it use some technology or method that doesn’t play well? Let’s say writing to a local disk, with some clouds that is a bad idea. Or carrying local state. This is important because most modernization efforts to the cloud are moving as is. Well, with the least amount of change. We see this all the time. Companies are not able to go all microservice all at once. Nor should they if it doesn’t make sense.
We have to accept that some modernization efforts are going to be still monoliths just in the cloud. But if they are going to be a fit-monolith then make sure they are fit. Here is how you can see if your monolith is fit.
Does your monolith fit in your cloud
Are you using some of the best practices for the cloud in it? Take logging are you using a framework where you are writing to a log at one place? Can you change that from writing to a local drive to do a
STDERR? Is your configuration externalized? Can your monolith scale if you had to? I know we beat up the 12 factors. But if you grab the Fast Five and apply them to your monolith that makes it pretty fit for your cloud. And if you could do more then do it.
How technically fit is your monolith
So is this old and bloated monolith? Is your testing coverage weak or nonexistent? If your monolith was a person would they be a star athlete or a couch potato? It’s worth more from an investment side to do some serious refactoring. Sure you don’t have to cut them in to actual microservices. But can you if you had to? I recommend code clean up in any modernization. While you are doing so let’s get some test coverage up. Write the test first and refactor to them. Get your app to a technically fit state.
Does your monolith fit your needs
I see plenty of companies who want to move their monolith to the cloud in to microservices. But their monolith is really just an app. Nothing HUGE about it. I don’t even know why they called it a monolith. I guess it’s because it isn’t in microservices. But are convinced they need to decompose this down to microservices. Where there is no real value add. Do you need to scale this one section of your apps functionality? Or can you just scale it all?
A fit-monolith is sometimes a better solution than using microservices. And it’s a great first solution for any company moving their apps to the cloud. Modernization isn’t about just going to the cloud. It is a culture change of continuously improving your technology.