This article was originally published on InfoQ at December 3rd 2020. If you’ve migrated from a monolith to a microservices architecture you probably experienced it: Modern systems today are far more complex to monitor. Microservices combined with containerized deployment results in highly dynamic systems with many moving parts across multiple layers.
As microservices gain in popularity, containers have become a hot topic for developers. But how do they differ from virtual machines? Will containers replace virtual machines? And when should you choose containers over virtual machines? When it comes to defining virtual machines, the name says it all – machines (servers or desktops) that have been virtualized.
Breaking down larger, monolithic software, services, and applications into microservices has become a standard practice for developers. While this solves many issues, it also creates new ones. Architectures composed of microservices create their own unique challenges. In this article, we are going to break down some of the most common. More specifically, we are going to assess how observability-based solutions can overcome many of these obstacles.
The concept of a microservice perfectly fits the structure of a serverless function, which easily enables deployment and runtime isolation for different services. On the storage side, services such as DynamoDB also make it easier to have independent databases for each microservice and scale them independently (when required or desirable). Before we dive into details, please consider whether the benefits of Microservices abundantly outweigh its disadvantages for your particular project and team.
Microservices and Kubernetes have completely changed the way we reason about network security. Luckily, Kubernetes network security policies (KNP) are a native mechanism to address this issue at the correct level of abstraction. Implementing a network policy is challenging, as developers and ops need to work together to define proper rules. However, the best approach is to adopt a zero trust framework for network security using Kubernetes native controls.
In this article, we’ll cover the key differences between APIs and microservices as answered by our contributors consisting of senior decision-makers and CTOs from technology companies around the world. One of the most popular ways to consume data from a web service is through a web application programming interface (API). By interface, we are referring to an agreement, or schema, that anyone using this API must abide by.
On November 11, 2020, I had the pleasure of speaking with two incredible thought leaders in the DevOps space: Vivek Pandey, VP of Engineering at Shipa (https://www.shipa.io), and Patrick Deuley, Sr Product Manager at GitLab (https://www.gitlab.com). The topic of the discussion was “Monolith to Microservices,” and we covered three key areas: Starting out, Scaling and Developer Experience.