I’m going to describe in detail what microservices are, why the pattern is so appealing, and also some of the key challenges that they present.
I’ll finish with a set of simple questions might be valuable to ask yourself when you are considering whether microservices are the right pattern for you. The questions are at the end of the article.
Drawing on software engineering best practices, we have designed an architecture meant for continuous integration with customizable services that test individual files upon each contribution made to our public git repositories. The services can be configured to test and report status on a variety of checkpoints from schema compliance to CTS-ready markup designed for flexibility and interoperability.
Application developers now have one job. We’re at a time when it has never been easier for application developers to focus on just making their service more robust and trust that if they do so, then the open source software they are building on top of will pay the concomitant dividends.
In order to manoeuvre this brave new world successfully, gaining visibility into our services and infrastructure becomes more important than ever before to successfully understand, operate, maintain and evolve these.
Fortunately for us, newer tools have emerged to help us meet this challenge. While one might argue that these tools suffer from the selfsame problem they assist us in solving — viz, the tools themselves are every bit as nascent and emergent as the infrastructural paradigms they help us gain visibility into — strong community interest, community driven development and an open governance model do a lot to promote the sustainability and development of these tools.
Thus, a distributed system can be much larger and more powerful given the combined capabilities of the distributed components, than combinations of stand-alone systems. But it’s not easy - for a distributed system to be useful, it must be reliable. This is a difficult goal to achieve because of the complexity of the interactions between simultaneously running components.
Compared to the other “visionary” writers working at the time – William Gibson, Neal Stephenson – Banks is underappreciated. This is because Gibson and Stephenson in certain ways anticipated the evolution of technology, and considered what the world would look like as transformed by “cyberspace”. Both were crucial in helping us to understand that the real technological revolution occurring in our society was not mechanical, but involved the collection, transmission and processing of information.
Banks, by contrast, imagined a future transformed by the evolution of culture first and foremost, and by technology only secondarily. His insights were, I would contend, more profound. But they are less well appreciated, because the dynamics of culture surround us so completely, and inform our understanding of the world so entirely, that we struggle to find a perspective from which we can observe the long-term trends.
In fact, modern science fiction writers have had so little to say about the evolution of culture and society that it has become a standard trope of the genre to imagine a technologically advanced future that contains archaic social structures. The most influential example of this is undoubtedly Frank Herbert’s Dune, which imagines an advanced galactic civilization, but where society is dominated by warring “houses”, organized as extended clans, all under the nominal authority of an “emperor”. Part of the appeal obviously lies in the juxtaposition of a social structure that belongs to the distant past – one that could be lifted, almost without modification, from a fantasy novel – and futuristic technology.