Why to Think as a Microservice? In two words – Being Independent – useful in real life and also in Software. Being self-sufficient to the Universe gives a person or a software the possibility to balance and even output more – energy and the value to the outer layers – with very small effort.
Native Platforms evolved and improved both in terms of computing power and software APIs and capabilities. They now could do a lot of work alone, without Internet Connection. The biggest organizations and companies exposed many of the features to the Web via the accepted standards. This made possible, logical and natural – the progress of Web Sites and Pages to Progressive Web Apps (PWA). All this evolution is increasing the good User Experience – by making possible users to execute their work and not wait for the network or some other module and finish and synchronize it – when available. Everything is getting connected nowadays so, it gets rare for a device or service to not be connected.
The core Design Patterns that will produce Standalone Modules, are High Cohesion & Loose Coupling. This way of thinking in real life is called Resourcefulness. Doing one small thing well and with minimal external dependencies allow the result programs to be high quality, small in size and also secure. Yes, in any software package bugs can and will arise, but will be not because some subordinate work executor. You could resolve the problem locally, without waiting someone else to finish their part. And if somehow the problem is unfixable, the software module will be abandon and will “die” alone, without affecting others.
Up to here the thinking is the “Micro” part of Microservice. Thinking in terms of “As A Service” also is crucial for a software to actually go beyond itself. Go out there in the world and check if you are valuable to any other – is part of human life and software. Life is relation and the same is true for the Software. Design well – the Input and the Output parameters, objects, classes, methods, APIs. This will benefit the experience of other developers and for ready software – the normal user – when using your creation.
Every manufacturer creates connected devices and most of them are with Wi-Fi. This opens the gadgets to the whole world, not just the small geographic location where the radio hardware can reach. Given this and the evolution and standardization of HTTP – accepted and compatible by all big companies and organization, it is natural that the Microservices are Web based.
Implement the software and the business vertically. In software terms this means – create a MVP and check the reaction of the people. The world will validate the idea or the service and if it is good, you could increase the horizontal spread. Summing up – if you have software exposed as HTTP service, being small, accessible and efficient – makes perfect sense to package it as a Microservice, scale it, couple it with others and create something bigger.