“It seems like microservices is leading the hype curve and gets lots of attention … it also comes with its problems and complexities … operators have to deal with that.”

Roland Barcia explains the problems clients are trying to solve with microservices:

“Clients are trying to modernize their applications to keep up with the rate of change … in the past, operations dictated how applications were written … people spent years writing monolithic applications in which a lot application function was packaged inside the app … now they are seeing the difficulty developers are having in adding new features to respond to changing marketing demand.”

Roland goes on to say that most clients are not building greenfield apps but already have legacy applications with key data in them that they need to expose. He talks about how the integration of microservices affects everyone in the process, including developers by how they build applications.

But he thinks the biggest nightmare is reserved for the operator. Organizations are constructed around these monolithic applications and the monitoring element of the process is designed to fit the structure and environment of the app. Today, however, there are little bits of apps running in lots of places, local or cloud, some built with different languages, some employing different workloads (like containers). How is a poor operator to manage this circus?

Kyle Brown discusses the application patterns he sees while working with clients to transition them to microservices:

“The one we’re seeing most often is one Martin Fowler identified … he called it the ‘Strangler Pattern.’ There are these existing monolithic applications and you cannot get rid of them all at once. The Strangler Pattern looks to replace a large application like this piece by piece.”

In other words, you can’t shift from the old app to a new one in a single rewrite because of the complexity of the construction. (Martin Fowler notes that often when you’re rewriting an old application with newer capabilities, you even have to reproduce the old bugs in the system to make the new pattern work.)

Kyle also reports on something his teams are calling “Adapter Microservices” in which the microservice doesn’t own its own data (a common feature of microservices). In this case, you need to provide a RESTful API to those services.

Rick Osowski talks about value of microservices frameworks and the challenges to applying them:

“Netflix is an example of how these frameworks operate … they force you to do more with less. Netflix started out with a very specific business need, so they developed a very robust microservices framework based on Java and they seized the ability to open source it which made these components extremely adoptable by the community.”

Rick continues by noting that the key problem with the Netflix example is that they are Java-only; you want to employ the best-of-breed language for each component and situation. As more move to the cloud, clients are having different language needs. Rick says we often have the “Netflix conversation” with clients to help them determine whether they need a single language-bound solution or a multi-cloud, software-based framework.

“A core of IBM services are written in Java and when we talk with developers [about microservices, here at JavaOne and elsewhere], we hear ‘How do I test it?,’ “How do I monitor it?,’ ‘How do I handle routing?,’ ‘What about data integrity and consistency?’ … we’ve built a game to help engage developers on these topics.”

One of the more important talks Erin is having with developers is how to secure data communications in microservices.

Gang Chen gets approached by customers who want to know how to do DevOps in a microservices world; how do you support multiple channels like mobile, web, IoT, etc.; how to track the flow of microservices; how to integrate high availability and failover needs to a microservices environment:

“These are the kinds of questions we’re hearing, so we’re testing and writing up our findings and building a reference implementation on microservices implementation.”