Microservices ExpertsHelp clients embrace Microservices & the DevOps needed for success.
Microservices experts with multiple projects in-flight.
Analysis & Roadmap
Analyzing your applications & creating a strategic path for Microservices migration.
Providing the necessary automation required for Microservices success.
Helping you understand approaches, constructs, and potential pitfalls.
Learn About Microservices
Recent Microservices Resources
Microservices: Patterns for Enterprise Agility and Scalability
Introduction to the Microservices architecture style, concepts, recommended patterns, and suggested adoption.
Key Microservices Concepts
The Microservices approach originally evolved from web companies that needed to be able to handle millions of users with significant variance in traffic, while being able to also maintain the agility to respond to market demands.
What those companies pioneered—technologies, design patterns, and operational platforms—have been shared with the open source community in an effort to help other organizations to adopt Microservices.
Established patterns and constructs need to be understood before embracing Microservices. Examples include the Service Registry, API Gateway, Edge Controller, Circuit Breaker, Fallback Method / Chain Of Responsibility Pattern, Command Pattern, Bounded Context Pattern, and Failure as a Use Case, among others.
Microservices can add complexity with more moving parts. The most important (and, arguably, most difficult) part of Microservices adoption is the automation required to move all of these numerous moving parts in and out of environments. DevOps automation is key.
The decoupled, discoverable, and isolated nature of the Microservices architecture style supports a continuous deployment environment that allows microservices to be deployed at will. However, just having the ability to obtain infrastructure in an on-demand manner is not enough.
An automated platform that supports the numerous moving parts of a Microservice architecture is required. This includes as much automation as possible, to include continuous deployment, integration, delivery, and monitoring.
There will be many more moving parts in a Microservices architecture. All services must be immutable — easily deployed, started, stopped, and discovered. This is why containerization is so important.
Containerization allows an application and the environment it runs in to be moved as a single immutable unit. These containers can be managed individually, scaled as needed, and deployed in the same fashion as compiled source code. Containers have been key to attaining agility, quality, scalability, and durability.
As an example, Docker is open source software that allows you to build, run, test, and deploy distributed software containers. A Docker image can contain everything that software needs to run: code, runtime, system tools, system libraries, etc. A Docker image enables you to quickly, reliably, and consistently deploy applications regardless of environment.
Microservices architecture breaks up application function into smaller independent units that are accessed and discovered at runtime, whether over HTTP or a IP/Socket protocol using RESTful APIs.
Services should have a small granularity and the protocols should be lightweight. This creates a smaller surface area of change, making it easier to add functions and features to the system at any time. As a result of this smaller surface area, instead of having to redeploy entire applications as you might have with a monolithic application, you might only need to deploy one or more distinct services.
Organizations can exploit on-premise or off-premise infrastructure-as-a-service (IaaS) solutions. Computing resources like servers, data sources, and storage to be acquired in an on-demand manner. Three excellent solutions include:
Kubernetes by Google, is an open source container management platform for managing containerized applications across multiple hosts. It provides basic mechanisms for deployment, maintenance, and scaling of applications. Additionally, it enables scheduling, upgrades on-the-fly, auto-scaling, and constant health monitoring.
OpenShift, by Redhat, is a Platform-as-a-Service container application platform that allows developers to quickly develop, host, and scale applications in a cloud environment. It natively integrates technologies, like Docker and Kubernetes, and combines them with an enterprise foundation in Red Hat Enterprise Linux.
Service Fabric, by Microsoft, is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices. In addition to containerization, you get the added benefit of having Microservices best practices built in. Service Fabric is not limited to Azure or Windows, as you can run Service Fabric on Linux, in your local data center, or on AWS.