A sensitive yet important topic, the ongoing discussion regarding which architecture software pattern yields greater benefits for businesses; Microservices or Service-Orientated Architecture (SOA)?
It’s important to realise that Microservices is yet to reach a universally agreed definition. While some consider the architectural pattern as a modern interpretation and the evolution of SOA, others may dismiss it as nothing new.
Despite there being no formal definition for Microservices, general consensus considers the approach as the development of a single application through smaller independent units in order to achieve the intended business goal, whereas monolithic applications such as SOA are developed as a single autonomous unit. There is no right or wrong, the preferred pattern is dependent on the business goal where different approaches may be better suited.
With SOA, sometimes one small change can be bigger than first appears as developers may be required to redesign the whole programme, which can be very time-consuming. Microservices has the potential to overcome this problem as the application can be broken down into smaller independent units which can be individually amended.
Ultimately, Microservices software components can be built, deployed, re-built and re-deployed allowing for faster and agile development, which will be favourable in an ever changing digital world to ensure developers keep up with software evolution.
Due to the scalability and flexibility Microservices provides it could be the answer to support a range of platforms and devices including mobile, ensuring a consistent experience for users throughout.
In comparison to SOA, Microservices has minimal centralised management so the technology diversity allows for a mix of language, framework and data storage, allowing various options for developers.
Developers are adopting Microservices but it isn’t yet for everyone and Jaxenter found that as many as 66% haven’t adopted it.
Many are yet to, if ever, adopt a Microservices architecture, partly due to the diverging interpretations of what Microservices is, but mainly the difficulty of changing architectures. This process would involve breaking down working applications and a lot of additional work to be done to receive any of the benefits.
Microservices is unable to offer some of SOA’s key capabilities such as contract decoupling, heterogeneous interoperability and enterprise application scope which could typically be associated with bigger companies, therefore larger systems could therefore triumph with SOA.
Larger systems could benefit from a monolithic pattern like SOA. On the surface all the parts communicate and share components across the enterprise allowing for data to assist in the next generation of applications.
The relationship between SOA and Microservices is complex making it difficult to understand how they relate and Chief Scientist at ThoughtWorks, author and speaker Martin Fowler highlights “Not enough time has passed for us to make a full judgement” but we’ve already seen large organisations such as Amazon, eBay and Netflix, and more recently AppDynamics using Microservices. As we wait to reach a formal definition and more continue to adopt this style, it remains unclear whether it will become the preferred architecture software. However, despite the sceptics, some recognise the potential benefits of Microservices where appropriate.
Which do you prefer: Microservices or SOA? Join the discussion @WeAreAvion