Sure, we’ve all heard about “microservices” but just what use are they and why would you want them? How do you even start designing microservices?
Most applications built more than a couple a years ago would more than likely use classic application design methodology that is monolithic in nature, i.e. everything is bundled into a single – or perhaps several – virtual machines.
At best, a three-tier architecture would be used to separate the components of the application into a web tier, application tier and database tier. This three-tier approach allowed the first attempts at scalable architectures and allowing rudimentary scaling capabilities.
Such designs also came with more than a few issues that most developers and administrators would readily recognise. By effectively having the one large application it became difficult to manage from the point of view of both continual development and support. Inevitably the code grows larger and – as it does so – becomes ever more difficult to manage. In effect, developers tend to throw in everything but the kitchen sink into a single VM and that came with a large downside.