Challenges with Microservices, Part 1

Share this post:

Republished from developerWorks TV

From the IBM Cloud Architecture Center, six IBM Cloud experts discuss the challenges of developing with microservices. Join David Hodges, Roland Barcia, Gang Chen, Kyle Brown, Erin Schnabel and Rick Osowski as they outline issues that clients are facing with microservices, including operations, considerations with heritage systems, security, and the newness of microservices in general.

David Hodges starts the discussion on microservices: David Hodges

“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 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 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 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.

Erin SchnabelErin Schnabel talks about the Java-based work IBM is doing with microservices and the game her team built to help developers engage with these topics.

“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.

gchen 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.”



More stories
May 1, 2019

Two Tutorials: Plan, Create, and Update Deployment Environments with Terraform

Multiple environments are pretty common in a project when building a solution. They support the different phases of the development cycle and the slight differences between the environments, like capacity, networking, credentials, and log verbosity. These two tutorials will show you how to manage the environments with Terraform.

Continue reading

April 29, 2019

Transforming Customer Experiences with AI Services (Part 1)

This is an experience from a recent customer engagement on transcribing customer conversations using IBM Watson AI services.

Continue reading

April 26, 2019

Analyze Logs and Monitor the Health of a Kubernetes Application with LogDNA and Sysdig

This post is an excerpt from a tutorial that shows how the IBM Log Analysis with LogDNA service can be used to configure and access logs of a Kubernetes application that is deployed on IBM Cloud.

Continue reading