Microservices and DevOps: Better together
Two important trends that have emerged in the enterprise are both microservices and DevOps. Both are practices that are designed to offer greater agility and operational efficiency for the enterprise, and according to Katharina Probst of Netflix and Uri Sarid of MuleSoft, DevOps excellence is a key component of microservice excellence.
Microservice architecture emerged from a common set of DevOps ideologies that came into being at companies like Amazon, Netflix, SoundCloud, Facebook, Google and several others. In many cases, those companies started with monolithic applications, which rapidly evolved into decomposed services, which then communicated via RESTful APIs and other network-based messaging protocols to become the harbingers of a microservices-based architecture.
Yet, the evolution of both microservices and DevOps was not just limited to transforming monolithic applications into decomposed services. Those companies that excelled at DevOps also shared common approaches to software development, had similar organizational structures and development cultures, while also sharing an affinity for cloud-based infrastructure and automation. Companies that have succeeded with microservices have followed a similar progression driven by a desire for development, speed, and scalability, all of which fits into the concept of agile development.
The rapid adoption of agile methods also fueled the growth of another concept well supported by a microservices based development cycle, Continuous Integration (CI). Those adopting CI have further leveraged agile ideologies to use microservices as a driver to achieve more frequent software releases, which has led to the practice of continuous delivery (CD). CD uses a quality focused ideology to build potentially shippable product increments, which speeds the deployment pipeline, achieving a result that culminates in bringing changes to production as quickly as possible.
Microservices and DevOps: creating change together
A microservices-based architecture introduces change, change that is often well received by those creating modern applications. Those embracing that change are finding that productivity is increasing at an astonishing rate, and solutions can be delivered much more quickly to those requesting flexible, scalable applications. For those in the field of DevOps fields, microservices bring some significant benefits, including:
- Deployability: Microservices offer increased agility, which fuels the ability to roll out new versions of a service. That agility is due to shorter build, test, and deploy cycles. Microservices can also incorporate the flexibility needed to employ service-specific security, replication, persistence, and monitoring configurations.
- Reliability: A fault with a microservice only affects that microservice, and its consumers. When monolithic applications experience a fault, the entire monolith may fail.
- Availability: Releasing a new version of a particular microservice requires very little downtime, whereas rolling out a new version of a service in the monolithic application normally requires a full restart of the entire monolith.
- Scalability: Microservices can be scaled independently using pools, clusters, grids. That deployment characteristic makes microservices a great match for the elasticity of the cloud.
- Modifiability: Microservices offer the flexibility to consume new frameworks, libraries, data sources, and other resources. As loosely coupled, modular components, microservices prove to be easier to work with and support dynamic discovery and binding via a registry.
- Management: Microservices can leverage the agile methodology, where the application development effort is divided across teams that are smaller and work more independently.
Microservices bring additional productivity to DevOps by embracing a common toolset, which can be used for both development and operations. That common toolset establishes common terminology, as well as processes for requirements, dependencies, and problems. Which in turn, makes it easier for Devs and Ops to work with one another, allowing those entities to work jointly on a problem, and successfully fix a build configuration or build script. DevOps and microservices work better when applied together.
Take a look at more resources and best practices for implementing microservices in your organization.