Geographically distributed microservices: Do containers solve all our problems?
We are excited about Jussi Nummelin’s session at JAX DevOps this week! In this interview, we talked about the advantages of geographically distributed microservices and we got a sneak peek at what we should expect to learn during his session.
JAXenter: What are the advantages of geographically distributed microservices? The disadvantages?
Jussi Nummelin: The main advantage is superior resiliency. Now your services can spread over many data centers and/or cloud providers. If one has serious connectivity issues, your services can still operate in the other(s). The main disadvantage is a bit of added complexity, both on the application and infrastructure level. The complexity comes from the fact that on application level you must take into account things like network partitions, split brains, network latencies.
JAXenter: How can organizations manage these increasing complexity systems?
Jussi Nummelin: Containers and container management systems is an increasingly popular choice of tools for this kind of “hybrid” environments. With the right set of tools, many of the issues causing complexity can be abstracted away from the applications and developers. With containers, one can be sure that the application runs the same regardless of the data centers or cloud provider it lands on.Also with good container management platforms, like Kontena for example ;), the platform can and will make sure you spread the application containers across many data centers and zones automatically. With container overlay networking the networking is fully abstracted from the applications, they can interact as they’d be running in a local flat network.
JAXenter: Do containers solve all of these problems? What other obstacles do organizations face if they want geographically distributed networks?
Jussi Nummelin: Unfortunately, containers are not THE silver bullet either that we in the IT industry have been looking for decades. :) In this case, containers do not solve all of the problems, but they do make solving the application level issues a lot easier. What I mean is that when the deployment and networking issues are abstracted away, we can focus on the application level on the real application level issues and fix them. We still need to figure out how and even if our application can work in this kind of setup
JAXenter: What tool do you use the most when managing these kinds of networks?
Jussi Nummelin: We use Kontena of course. :) With Kontena we get everything out of the box as it sets up all the networking and handles running and deploying all the services for us.
JAXenter: What’s the most important lesson you’ve learned from implementing a distributed microservices network?
Jussi Nummelin: With containers and container orchestrators you really need to trust the scheduler. The container platform you’ve chosen should be able to handle a wide range of failure cases and it is able to automatically re-schedule your services when parts of your infrastructure go down.
On the other hand, Murphy’s Law still rules the world. :D The more you distribute your services across data centers, cloud providers or what not, the more ways you’ll find out how your system can break down. Which brings me to one of my favorite topics, chaos testing. It’s good to have some kind of chaos testing ongoing regularly to find out all the possible situations when things can break in weird ways. Once you’ve seen how things might break, you have better confidence that you can easily fix your system as well if/when it breaks down in production.
JAXenter: What are the biggest misconceptions about microservices?
Jussi Nummelin: That they are some magical creatures that make your life easy. The fact is that they do provide a lot of benefits in the long term, but can be a bit tricky to get right. They also bring a lot of additional complexity compared to good-old monoliths.
JAXenter: What will participants be able to take away from your session?
Jussi Nummelin: They will see some of the ways how containers can help building systems that span across data centers and cloud providers. They’ll also see that modern container overlay networks is one the key building blocks in the solution as well as how container orchestration makes all these work in sync easily.
Thank you very much!
Jussi Nummelin will be delivering one talk at JAX DevOps which will focus on the microservices and container technologies.
Running applications and services across several cloud providers and/or data centers can bring many benefits for organizations. Actually, in some cases, it can even be a mandatory requirement. Making your application stack compliant with multiple cloud providers can be problematic as there are differences between cloud providers, for example in networking configurations. Luckily, containers and modern (container) overlay networks can solve this complexity for you.