Microservices architecture is commonly understood by comparing it to a legacy “monolith” application architecture. With a monolithic architecture, all of the components are part of a single unit. Everything is developed, deployed, and scaled together. The app must be written in a single language, with a single runtime. Different teams working on different parts of the app need to coordinate in order to make sure they don’t affect each other’s work. For example, one part of the app may depend on a module that needs a specific version say 1.8, which another teams needs the same module, but requires the 1.7 version because 1.7 is incompatible with another dependency. In a monolithic app you have to pick one or the other. Similarly, everything is deployed as a single application so code must be tested and deployed together.
With microservices, each component is broken out and deployed individually as services and the services communicate with each other via API calls.
While every organization defines microservices differently, Martin Fowler’s quintessential article on microservices defines 9 components that most microservice architectures have in commons.
Fowler went into more detail about each of these components in this talk from GOTO.
Implementing a microservices architecture, or decomposing a legacy monolith into microservices, can increase velocity, flexibility, and scalability. But it often does this at the cost of simplicity. Monoliths are simple to build, deploy, and debug, but are very hard to scale. While a microservice architecture is more complex, there are several benefits for engineering orgs.
With GitLab, you can commit your code and have the tools you need in a single application. No more stitching together 10 tools for every project.
Using an open DevOps platform to manage your microservices helps you avoid information silos. Increasing visibility among teams and making handoffs easier leads to a faster DevOps lifecycle while also ensuring that your projects deploy and remain stable.
A few ways GitLab simplifies microservice orchestration include…
While GitLab is great for microservices today, there are several features on the roadmap to make it even better.
by Sid Sijbrandij
The benefits and drawbacks of microservices and how to decide if it is right for your team.
by Aricka Flowers
Microservices have spawned an explosion of dependent projects with multiple repos, creating the need for an integrated solution – we're working on it right now.
by Chrissie Buchanan
Want to dump the monolith and get into microservices? Consider these three methods.
by Suri Patel
GitLab Groups and Projects can help teams divide work by product or system.
by Brein Matturro
GitLab recently spent time with Ask Media Group and AWS to discuss how modernizing from self-hosted to a cloud native system empowers developers.
by Valerie Silverthorne
From 5G to edge computing, microservices and more, cutting-edge technologies will be mainstream soon. We asked more than a dozen DevOps practitioners and analysts which technologies developers need to start to understand today.
GitLab is more than just source code management or CI/CD. It is a full software development lifecycle & DevOps tool in a single application.Try GitLab Free