* [Topics](/en/topics "Topics")
* [Containers](/en/topics/containers "Containers")
* What are microservices?
What are microservices?
=======================
Published  May 1, 2023•*5*-minute read
Copy URL
Jump to section
---------------
What is a microservice?A more efficient approach to application developmentMonolithic architecture vs microservices architectureService-oriented architecture vs microservices architecture BenefitsChallengesTools and technologies that enable microservicesHow Red Hat can help
What is a microservice?
-----------------------
Microservices refer to a style of [application architecture](/en/topics/cloud-native-apps/what-is-an-application-architecture) where a collection of independent services communicate through lightweight [APIs](/en/topics/api/what-are-application-programming-interfaces).  
Think of your last visit to an online retailer. You might have used the site’s search bar to browse products. That search represents a service. Maybe you also saw recommendations for related products—or added an item to your online shopping cart. Those are both services, too. Add all those microservices together and you have a fully-functioning application.
A more efficient approach to application development
----------------------------------------------------
A microservices architecture is a [cloud-native](/en/topics/cloud-native-apps) approach to building software in a way that allows for each core function within an application to exist independently.
When elements of an application are segregated in this way, it allows for development and operations teams to work in tandem without getting in the way of one another. This means more developers working on the same app, at the same time, which results in less time spent in development.
![image](https://www.redhat.com/cms/managed-files/monolithic-vs-microservices.png)
Red Hat resources
-----------------
[Read the report](/en/resources "Read the report")
Monolithic architecture vs microservices architecture
-----------------------------------------------------
The traditional approach to building applications has focused on the monolith. In a monolithic architecture, all the functions and services within an application are locked together, operating as a single unit. When the application is added to or improved upon in any way, the architecture grows more complex. This makes it more difficult to optimize any singular function within the application without taking the entire application apart. This also means that if one process within the application needs to be scaled, the entire application must be scaled as well.  
In microservices architectures, applications are built so that each core function within the app runs independently. This allows development teams to build and update new components to meet changing business needs without disrupting the application as a whole.
Service-oriented architecture vs microservices architecture
-----------------------------------------------------------
Microservices architecture is an evolution of [service-oriented architecture (SOA)](/en/topics/cloud-native-apps/what-is-service-oriented-architecture). The two approaches are similar in that they break large, complex applications into smaller components that are easier to work with. Because of their similarities, SOA and microservices architecture are often confused. The main characteristic that can help differentiate between them is their scope: SOA is an enterprise-wide approach to architecture, while microservices is an implementation strategy within application development teams.
Benefits of a microservices architecture
----------------------------------------
Microservices give your teams and routines a boost through distributed development. You can also develop multiple microservices concurrently. This means more developers working on the same app, at the same time, which results in less time spent in development.
### Ready for market faster
Since development cycles are shortened, a microservices architecture supports more agile deployment and updates.
### Highly scalable
As demand for certain services grows, you can deploy across multiple servers, and infrastructures, to meet your needs.
### Resilient
These independent services, when constructed properly, do not impact one another. This means that if one piece fails, the whole app doesn’t go down, unlike the monolithic app model.
### Easy to deploy
Because your microservice-based apps are more modular and smaller than traditional, monolithic apps, the worries that came with those deployments are negated. This requires more coordination, which a [service mesh layer](/en/topics/microservices/what-is-a-service-mesh) can help with, but the payoffs can be huge.
### Accessible
Because the larger app is broken down into smaller pieces, developers can more easily understand, update, and enhance those pieces, resulting in faster development cycles, especially when combined with [agile development methodologies](/en/topics/devops/what-is-agile-methodology) such as [DevOps.](/en/topics/devops)
### More open
Due to the use of polyglot APIs, developers have the freedom to choose the best language and technology for the necessary function.
Potential challenges for microservices
--------------------------------------
The flexibility that comes along with microservices can create a rush to deploy new changes, which means creating new patterns. In software engineering, a “pattern” is meant to refer to any algorithmic solution that is known to work. An “anti-pattern” refers to common mistakes that are made with the intention of solving a problem, but can create more issues in the long run.
Beyond culture and process, complexity and efficiency are two major challenges of a microservice-based architecture. When working with a microservices architecture, it’s important to look out for these common anti-patterns.
1. **Scaling:** Scaling any function within the software lifecycle development process can pose challenges—especially in the beginning. During initial set up, it’s important to spend time identifying dependencies between services, and be aware of potential triggers that could break backward compatibility. When it comes time to deploy, investing in [automation](/en/topics/automation) is critical as the complexity of microservices becomes overwhelming for human deployment.
2. **Logging:** With distributed systems, you need centralized logs to bring everything together. Otherwise, the scale is impossible to manage.
3. **Monitoring:** It’s critical to have a centralized view of the system to pinpoint sources of problems.
4. **Debugging:** Remote debugging through your local [integrated development environment (IDE)](/en/topics/platform-engineering/what-is-ide) isn’t an option and it won’t work across dozens or hundreds of services. Unfortunately there’s no single answer to how to debug at this time.
5. **Connectivity:** Consider service discovery, whether centralized or integrated.
Tools and technologies that enable microservices
------------------------------------------------
**Containers and Kubernetes**  
A [Kubernetes](/en/topics/containers) is a container orchestration platform that allows for single components within an application to be updated without affecting the rest of the technology stack, which makes it perfect for automating the management, scaling, and deployment of microservices applications.  
**APIs**  
An application programming interface, or API, is the part of an application that is responsible for communicating with other applications. Within the infrastructure of microservices architecture, APIs play the critical role of allowing the different services within a microservice to share information and function as one.  
**Event streaming**  
An event can be defined as any thing that happens within a microservice service. For example, when someone adds something to their online shopping cart, or removes it.  
Events form into event streams, which reflect the changing behavior of a system. Monitoring events allow organizations to arrive at useful conclusions about data and user behavior. [Event stream processing](/en/topics/integration/what-is-streaming-data) allows immediate action to be taken, it can be used directly with operational workloads in real-time. Companies are applying event streaming to everything from fraud analysis to machine maintenance.
**Serverless computing**  
[Serverless](/en/topics/cloud-native-apps/what-is-serverless) computing is a cloud-native development model that allows developers to build and run applications while a [cloud provider](/en/topics/cloud-computing/what-are-cloud-providers) is responsible for [provisioning](/en/topics/automation/what-is-provisioning), maintaining, and scaling the server [infrastructure](/en/topics/cloud-computing/what-is-it-infrastructure). Developers can simply package their code in containers for deployment. Serverless helps organizations innovate faster because the application is abstracted from the underlying infrastructure.
How Red Hat can help
--------------------
Red Hat’s open source solutions help you break down your monolithic applications into microservices, manage them, orchestrate them, and handle the data they create.
**Red Hat OpenShift**  
[Red Hat® OpenShift®](/en/technologies/cloud-computing/openshift) is a Kubernetes-based platform that enables microservices by providing a uniform way to connect, manage, and observe microservices-based applications. It supports containerized, legacy, and cloud-native applications, as well as those being refactored into microservices. OpenShift integrates with [Red Hat Application Services](/en/products/application-foundations) and can be used with existing automation tools like Git and Jenkins. It also incorporates an enterprise-grade [Linux operating system](/en/topics/linux), for greater security across your entire cluster.
Whether you’re optimizing legacy applications, migrating to the cloud, or building totally new, microservices-based solutions, Red Hat OpenShift provides those applications with a more secure and stable platform across your infrastructure.
**Red Hat Runtimes**
[Red Hat Runtimes](/en/products/application-runtimes/features) is a set of prebuilt, containerized runtime foundations for microservices. It supports a wide range of languages and frameworks to use when designing microservice architectures, such as Quarkus, Spring Boot, MicroProfile, and Node.js. Additionally, Red Hat Runtimes includes supporting services for fast data access with Red Hat Data Grid, and services to secure microservice APIs with Red Hat Single-sign on.
**Red Hat Integration**
[Red Hat Integration](/en/products/integration) is a comprehensive set of integration and messaging technologies to connect applications and data across hybrid infrastructures. It is an agile, distributed, containerized, and API-centric solution. It provides service composition and orchestration, application connectivity and data transformation, real-time message streaming, and API management—all combined with a cloud-native platform and toolchain to support the full spectrum of modern application development.
Developers can use tooling like drag-and-drop services and built-in integration patterns to build microservices, while business users can use web-based tooling to develop APIs that can integrate different microservices.
[Why choose Red Hat for API management?](/en/topics/api/why-choose-red-hat-apis "Why choose Red Hat for API management?")
Red Hat named a Leader in 2025 Gartner® Magic Quadrant™ for Container Management
--------------------------------------------------------------------------------
Read the 2025 Gartner® Magic Quadrant™ for Container Management to learn why Red Hat OpenShift has been named a “Leader” for the 3rd year in a row.
[Keep reading](/en/engage/gartner-magic-quadrant-container-management-analyst-report "Red Hat named a Leader in 2025 Gartner® Magic Quadrant™ for Container Management")
All Red Hat product trials
--------------------------
Our no-cost product trials help you gain hands-on experience, prepare for a certification, or assess if a product is right for your organization.
[Keep reading](/en/products/trials "All Red Hat product trials")
Keep reading
------------
### What is a Linux container?
Find out more about Linux containers, which are a set of 1 or more processes that are isolated from the rest of the system.
[Read the article](/en/topics/containers/whats-a-linux-container "article | what is a linux container?")
### What is container orchestration?
Container orchestration automates the deployment, management, scaling, and networking of containers.
[Read the article](/en/topics/containers/what-is-container-orchestration "article | what is container orchestration?")
### What is Kubernetes?
Kubernetes is a container orchestration platform that eliminates many manual processes involved in deploying and scaling containerized applications.
[Read the article](/en/topics/containers/what-is-kubernetes "article | what is kubernetes?")
Containers resources
--------------------
### Related content
* Blog post
  [Red Hat Named a Leader in 2025 Gartner® Magic Quadrant™ for Container Management for the Third Consecutive Year](/en/blog/red-hat-named-leader-2025-container-management)
* Blog post
  [Zero trust starts here: Validated patterns for confidential container deployment](/en/blog/validated-patterns-confidential-container-deployment)
* Blog post
  [Deploy sensitive workloads with OpenShift confidential containers](/en/blog/deploy-sensitive-workloads-with-openshift-confidential-containers)
* Blog post
  [Confidential containers on Microsoft Azure with Red Hat OpenShift Sandboxed Containers 1.10 and Red Hat Build of Trustee](/en/blog/confidential-containers-microsoft-azure-red-hat-openshift-sandboxed-containers-110-and-red-hat-build-trustee)
### Related articles
* [What is a Linux container?](/en/topics/containers/whats-a-linux-container)
* [What is container orchestration?](/en/topics/containers/what-is-container-orchestration)
* [Stateful vs stateless applications](/en/topics/cloud-native-apps/stateful-vs-stateless)
* [What is Kubernetes?](/en/topics/containers/what-is-kubernetes)
* [Red Hat OpenShift on VMware](/en/technologies/cloud-computing/openshift/vmware)
* [What is KubeVirt?](/en/topics/virtualization/what-is-kubevirt)
* [Why use Red Hat Ansible Automation Platform with Red Hat OpenShift?](/en/technologies/cloud-computing/openshift/ansible-on-openshift)
* [What is Podman Desktop?](/en/topics/containers/what-is-podman-desktop)
* [What is Podman?](/en/topics/containers/what-is-podman)
* [What is the Kubernetes Java client?](/en/topics/cloud-computing/what-is-kubernetes-java-client)
* [What are hosted control planes?](/en/topics/containers/what-are-hosted-control-planes)
* [What is kubernetes security?](/en/topics/containers/kubernetes-security)
* [Red Hat OpenShift for developers](/en/technologies/cloud-computing/openshift/developers)
* [Containers vs VMs](/en/topics/containers/containers-vs-vms)
* [Edge computing with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/edge-computing)
* [How Kubernetes can help AI/ML](/en/topics/cloud-computing/how-kubernetes-can-help-ai)
* [What is Kubeflow?](/en/topics/cloud-computing/what-is-kubeflow)
* [What is container security?](/en/topics/security/container-security)
* [OpenShift vs. OpenStack: What are the differences?](/en/technologies/cloud-computing/openshift/openshift-vs-openstack)
* [What are sandboxed containers](/en/topics/containers/sandboxed-containers)
* [what is Buildah?](/en/topics/containers/what-is-buildah)
* [Kubernetes vs OpenStack](/en/topics/openstack/kubernetes-vs-openstack)
* [What are validated patterns?](/en/topics/cloud-computing/what-are-validated-patterns)
* [Kubernetes on AWS: Self-Managed vs. Managed Applications Platforms](/en/topics/containers/kubernetes-on-aws)
* [What is an image builder?](/en/topics/linux/what-is-an-image-builder)
* [Red Hat OpenShift vs. OKD](/en/topics/containers/red-hat-openshift-okd)
* [Red Hat OpenShift vs. Kubernetes: What's the difference?](/en/technologies/cloud-computing/openshift/red-hat-openshift-kubernetes)
* [What is high availability and disaster recovery for containers?](/en/topics/containers/high-availability-containers)
* [Why run Apache Kafka on Kubernetes?](/en/topics/integration/why-run-apache-kafka-on-kubernetes)
* [Spring on Kubernetes with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/spring)
* [What is a golden image?](/en/topics/linux/what-is-a-golden-image)
* [What are Red Hat OpenShift cloud services?](/en/technologies/cloud-computing/openshift/what-are-red-hat-openshift-cloud-services)
* [VNF and CNF, what’s the difference?](/en/topics/cloud-native-apps/vnf-and-cnf-whats-the-difference)
* [What is a container registry?](/en/topics/cloud-native-apps/what-is-a-container-registry)
* [What is Skopeo?](/en/topics/containers/what-is-skopeo)
* [What are Red Hat OpenShift Operators?](/en/technologies/cloud-computing/openshift/what-are-openshift-operators)
* [Using Helm with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/helm)
* [Kubernetes security best practices](/en/topics/containers/kubernetes-security-best-practices)
* [Orchestrating Windows containers on Red Hat OpenShift](/en/technologies/cloud-computing/openshift/windows-containers-on-red-hat-openshift)
* [What is a Kubernetes operator?](/en/topics/containers/what-is-a-kubernetes-operator)
* [High performance computing with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/high-performance-computing)
* [Advantages of Kubernetes-native security](/en/topics/containers/advantages-of-kubernetes-native-security)
* [What is KubeLinter?](/en/topics/containers/what-is-kubelinter)
* [Intro to Kubernetes security](/en/topics/containers/intro-kubernetes-security)
* [Container and Kubernetes compliance considerations](/en/topics/containers/compliance)
* [How microservices support IT integration in healthcare](/en/topics/microservices/microservices-in-healthcare)
* [Kubernetes cluster management](/en/technologies/cloud-computing/openshift/kubernetes-cluster-management)
* [Red Hat OpenShift on IBM IT infrastructure](/en/technologies/cloud-computing/openshift/what-is-red-hat-openshift-on-IBM-IT-infrastructure)
* [Red Hat OpenShift for business leaders](/en/technologies/cloud-computing/openshift/business-leaders)
* [How to deploy Red Hat OpenShift](/en/technologies/cloud-computing/openshift/deploy-red-hat-openshift)
* [Cost management for Kubernetes on Red Hat OpenShift](/en/technologies/cloud-computing/openshift/cost-management)
* [What is enterprise Kubernetes?](/en/topics/containers/what-is-enterprise-kubernetes)
* [What makes Red Hat OpenShift the right choice for IT operations?](/en/technologies/cloud-computing/openshift/it-operations)
* [What makes Red Hat OpenShift the right choice for SAP?](/en/technologies/cloud-computing/openshift/sap)
* [Why choose Red Hat for Kubernetes?](/en/topics/containers/why-choose-red-hat-kubernetes)
* [Kubernetes-native Java development with Quarkus](/en/technologies/cloud-computing/openshift/quarkus)
* [What is Kubernetes role-based access control (RBAC)](/en/topics/containers/what-kubernetes-role-based-access-control-rbac)
* [What is containerization?](/en/topics/cloud-native-apps/what-is-containerization)
* [What was CoreOS and CoreOS container Linux](/en/technologies/cloud-computing/openshift/what-was-coreos)
* [Learning Kubernetes basics](/en/topics/containers/learning-kubernetes-tutorial)
* [What is service-oriented architecture?](/en/topics/cloud-native-apps/what-is-service-oriented-architecture)
* [What is the Kubernetes API?](/en/topics/containers/what-is-the-kubernetes-api)
* [What is Kubernetes cluster management?](/en/topics/containers/what-is-kubernetes-cluster-management)
* [What is a Kubernetes deployment?](/en/topics/containers/what-is-kubernetes-deployment)
* [Why choose the Red Hat build of Quarkus?](/en/topics/cloud-native-apps/why-choose-red-hat-quarkus)
* [Introduction to Kubernetes architecture](/en/topics/containers/kubernetes-architecture)
* [What is CaaS?](/en/topics/cloud-computing/what-is-caas)
* [Introduction to Kubernetes patterns](/en/topics/cloud-native-apps/introduction-to-kubernetes-patterns)
* [What is a Kubernetes cluster?](/en/topics/containers/what-is-a-kubernetes-cluster)
* [What is Quarkus?](/en/topics/cloud-native-apps/what-is-quarkus)
* [What is Jaeger?](/en/topics/microservices/what-is-jaeger)
* [What is container-native virtualization?](/en/topics/containers/what-is-container-native-virtualization)
* [What is Clair?](/en/topics/containers/what-is-clair)
* [What is Knative?](/en/topics/microservices/what-is-knative)
* [What is etcd?](/en/topics/containers/what-is-etcd)
* [Why choose Red Hat for microservices?](/en/topics/microservices/why-choose-red-hat-microservices)
* [Why choose Red Hat for containers?](/en/topics/containers/why-choose-red-hat-containers)
* [What is Docker?](/en/topics/containers/what-is-docker)
* [What is a Kubernetes pod?](/en/topics/containers/what-is-kubernetes-pod)
[More about this topic](/en/topics/containers "More about this topic")