I heard Jorge Ferrer, VP of Engineering, Liferay, discuss Liferay’s approach to microservices in “Liferay 7: Embracing Modularity”. This is a topic I’ve discussed at OSCON earlier this year. OSCON is the open source conference. Jorge discussed the evolution from the 1990s with monolithic applications, into the 2000s with SOA and now microservices have allowed applications to be deconstructed.
There are many examples of companies using microservices, the best know if probably Netflix although Google, Amazon and a host of others are strong believers in the approach.
Jorge discussed in-VM microservices vs. distributed microservices.
In-VM is an older approach and runs the services in one process, which means communication is local.
Distributed is each is own process, can be on own vm. All communication is remote, most often REST and follows publisher/subscriber mechanism.
Liferay 7 supports in-VM microservices, which can be replicated across multiple servers for redundancy. By default all Liferay microservices are in one JVM although they can be moved into separate JVMs.
Liferay is claiming to automatically create microservices out of plugins and portlets, allowing the technologies to be easily used. This approach addresses some of the challenges that companies deploying microservices have encountered. It also addresses the challenge identified in the OSCON presentation, which is the trade off of effort to deploy microservices vs. the benefit. At the start of a project the approach seems to be wasteful. Once you need it, too much code has been developed. I am going to be interested to see how Liferay’s customers adopt this approach. I will update as I receive feedback.