Microservices:

Monolithic applications can be successful, but increasingly people are feeling frustrations with them - especially as more applications are being deployed to the cloud . Change cycles are tied together - a change made to a small part of the application, requires the entire monolith to be rebuilt and deployed. Over time it's often hard to keep a good modular structure, making it harder to keep changes that ought to only affect one module within that module. Scaling requires scaling of the entire application rather than parts of it that require greater resource.

This is the way I "naturally" like to architect things.  I'm not a big fan of, "[In a Microservices architecture,] There is a bare mininum [sic] of centralized management of these services, which may be written in different programming languages and use different data storage technologies," but there's obviously nothing inherent in the microservice that requires you fork technologies.

That said, making your app truly modular means that when you're ready to leave vbscript, you can start immediately, not kludge the crap out of your modular codebase instead (which is not to say I don't think the kludging isn't a great idea in a certain situation, but it shouldn't be a Sophie's Choice).  So though I wouldn't plan on using different languages, or let too many folks plan to "try something out" that will end up living in production forever with its inherent cultural overhead (now your job posting for a C# developers have to say, "Python experience is a plus!"), the freedom to swap when it's smart, and only as quickly as you have to, is wonderful.

The worst part of not microservicing?  It's the wasted work.  It's very little extra work to create microservices.  It's more of a head rethread than anything even as prescriptive as MVC.  Write once and then refactor to microservices in bulk is a much nastier task than simply starting there.  And there's nothing -- nothing -- that says you can't start accreting microservices around your current monolithic service immediately.

I'm also surprised Agile culture in general didn't gravitate here more quickly.

But yes, this is a pretty good articulation of the way I like to do things.  Happy to have found it.

Labels: , ,