By Cassandra Balentine
Software development is continuously more agile and automated. Using a microservice strategy, a large application is divided into small, modular components managed independently for improved flexibility.
This approach to development is generating an industry buzz, here we define the process and discuss the benefits and challenges as well as implementations and current tools that support this method.
Microservices is a software development method that breaks down workloads separately in a way that can be easily managed and integrated.
“Microservices are a fundamental shift in how IT approaches software development,” according to a whitepaper titled, Best Practices for Microservices. “Microservice architecture, in concert with cloud deployment technologies, API management, and integration technologies, provide an alternate approach to software development, which avoids the delivery of monolithic applications. The monolith is instead broken up into a set of independent services that are developed, deployed, and maintained separately.”
The white paper explains that enterprises have traditionally delivered software applications in silos that came from the isolated demands of individual departments. “Software was developed or purchased in attention to these limited scopes. Customer-facing business processes on the other hand typically span multiple departments. The lack of alignment between these two realities led to duplicate efforts and missing or inaccurate information in each solution,” it explains. In order to rectify this, a service approach to architecture enables the creation of the building block of solution logic, which addresses the automation requirements of business process, according to MuleSoft.
Jim Scott, director, enterprise strategy and architecture, MapR, further defines microservice as the smallest deployable unit of work to be managed. These units of work are decoupled from one another, separated through scalable mechanisms that enable maximum flexibility and agility. He explains that they are most often separated via event structure or load balanced testful gateways. They also traditionally emit their performance metrics and logs for simplified monitoring.
Microservices architecture is a style of engineering that is highly automated, evolvable software systems made up of capability aligned microservice, according to Matt McLarty, VP, API Academy, CA Technologies. “In a book I co-authored, Microservice Architecture for O’Reilly, I defined microservice architecture as an independently deployable component of bounded scope that supports interoperability through message-based communication.”
McLarty adds that these days, microservice is a label used more broadly than to define the architectural style. “It is a technology movement. The companies we work with who are adopting microservices tend to look at their methodologies, infrastructure, organizational structures, and culture—in addition to their architectures—to get the most out of microservices.”
Richard Li, CEO, Datawire, says microservice is a process for building cloud-native software. “The core principle of this process is that separate development teams are able to develop and ship software independently of each other. Many organizations think of microservices as an ar-chitecture, which obscures the real benefit of microservices—independent development.”
On the Market
Several providers offer solutions to support a microservices architecture.
CA Technologies offers a wide range of software solutions that help companies who are adopting microservices, from development tools—CA Live API Creator, to release management testing—Blazemeter, to API giveaways to monitoring—Application Performance Management. “The API Academy specifically offers training and consulting to help organizations—especially large enterprises—get started with microservices based on the best practices we’ve gleaned from successful pioneers,” says McLarty.
Datawire offers three open source products, Ambassador, a Kubernetes-native API Gateway built on the Envoy Proxy; Forge, a build/development system for microservices; and Telepresence, a tool that enables local development of microservices. “Our goal is to minimize the friction is getting from ideas to users. This development workflow lets you code, deploy, and test your features in a rapid cycle. We also recognize that each organization—and frequently each microservice team—has its own optimal workflow, so our tools are adaptable to different workflows,” says Li. The company provides training, consulting, and support for its products.
MapR-ES is an event streaming platform that supports the Kafka API for producing/consuming events. This is part of the MapR Converged Data Platform serving as a data fabric to easily sup-port microservices and containers, greatly simplifying development, deployment, and administration. The company also ships MapR Spyglass for monitoring services performance and application logs. Finally, the MapR PACC enables docker containerized software to securely leverage MapR for all persistence needs.
MuleSoft’s Anypoint Platform is designed to solve the most challenging connectivity problems. It is a unified, productive, hybrid integration platform that creates a seamless application network of applications (apps), data, and devices with API-led connectivity. The platform is accessible as a cloud solution or deployed on premises, allowing developers to rapidly connect, orchestrate, and enable any internal or external application.
SmartBear uses a microservice-based architecture for its SaaS-based API tools, SwaggerHub and Swagger Inspector. The company’s Swagger and ReadyAPI portfolio of tools can be used to accelerate microservice development for companies. In order to better expose microservices via APIs, a common interface for these APIs needs to be present to tell exactly what each ser-vice is supposed to do. This interface is a contract that defines the SLA between the client and the services. The OpenAPI Specification has emerged as the standard format for defining tis contract.
Organizations strive to offer a better customer experience. This is an exponentially more difficult task as consumers expect a more personalized and relevant experience. Software solutions must be consistently up to date and integrated to achieve this result.
Keshav Vasudevan, product marketing manager, Swagger Products, SmartBear, says the key advantages of adopting microservices are agility of updating and maintaining apps, and general availability. “The latter is key for a lot of companies that want to ensure they’re always available whenever and wherever their customers want. We’re seeing companies in travel—especially airline, television and media, and ticketing companies really take well to the concept and push them in their respective industries.”
Scott says the concept of microservices is not new, it is a reimagining of service oriented architecture with technologies that scale to meet the desire of deploying small components enabling quick swap out of business logic and bug fix replacement. “The ease of use of a converged data platform drive is adoption and expansion.”
McLarty says many organizations are frustrated with their software delivery speed and are especially concerned with delivering solutions at the speed that their industries are moving. “At the same time, many established organizations have found that their existing monolithic systems are brittle, unstable, and difficult to scale. Microservices architecture offers the opportunity to ad-dress these concerns simultaneously.”
In today’s market, Li says agility and velocity are critical to long-term success. “Microservices enables organizations to take advantage of cloud software to maximize their business agility.”
Strengths and Weaknesses
Microservices brings both advantages and disadvantages to software development, integration, and deployment.
Vasudevan says agility in updating and maintaining code, easier detection of bugs and faults, simplified migration to newer technologies, and easy to isolate and optimize code efficiency of different services are all strengths of microservice architecture. Meanwhile, weaknesses include coordinating activity between different teams managing dependent services, versioning and backward compatibility of services and their dependencies, monitoring and ensuring services are always running and performing irrespective of each other, abstraction mindset and always questioning where new services belong and what the levels of boundaries between them, and short-term tactics versus long-term reusability of services.
The microservices approach to development requires a solid DevOps process, and arguably a more solid DataOpps process, suggests Scott. He says that the building, deploying, and managing of smaller components takes practice but does deliver many benefits. “When combining the amount of data moving through the systems and the more advanced cases of these services when composing machine learning data pipelines, there is an incredible need to enable users to manage their software, data models, and data with proper DataOpps process,” says Scott.
Like many approaches, microservice architecture requires thought and care. “It’s not enough to just break things apart into small bits and containers and then expect benefits. Organizations adopting microservices should make sure they have the right culture, process, and principles in place wherever they are using microservices. It’s better to take a small slice and approach it holistically than try and microservice all the things with a top down, monolithic approach,” says McLarty.
“Microservices empowers development teams to quickly respond to the market and their customers. However, ultimately gaining the benefits of microservices is a cultural shift, and requires investment in people, processes, and technology. Without a common commitment to the shift a microservices could actually impede agility and velocity,” says Li.
Current Use and Future Trends
As microservices continues to gain acceptance, there are a variety of current and future use cases to review.
Cloud applications built by development teams of ten developers or more benefit from micro-services, offers Li. “As the number of developers grows, the benefits of microservices start to compound. At very small scale, the additional complexity of microservices likely does not provide sufficient benefit to justify the investment,” he adds.
Scott says many businesses have adopted this model within the couple of years. Microservices are also at the core of the concept called server-less or function as a service.
McLarty adds that microservice architectures are best suited for the parts of the software eco-system that change the most. “Trying to break apart a relatively stable legacy system is likely futile,” he cautions. “Microservices tend to sit just behind user-facing applications.”
In terms of the future, microservices will continue to be adopted.
Core infrastructure technologies, such as Kubernetes and Docker have catalyzed the micro-services movement. However, over the next few years, Li predicts an increased focus on simplifying the developer experience for microservices.
“I think we can expect to hit the trough of disillusionment as more organizations try and apply microservices as a silver bullet and fail—as we observed during the service-oriented architecture movement. Fortunately, we can expect to see new practices emerging from the microservice movement help us deal with the endless quest of minimizing complexity. On a more immediate and pragmatic note, expect to see a lot of development in the container management space, especially as it relates to overlying system-oriented policies in a microservice architecture,” says McLarty.
In the future, Scott believes the expansion of orchestration tools like Kubernetes will help man-age the complexities of the relationships of the services being deployed. “In addition, the frame-works will continue to push towards function as a service deployment models because it re-moves the complexity from the engineer from having to worry about getting access to the proper infrastructure and instead allow them to write microservices with trigger events and deploy them worry free.
Vasudevan sees trends in standardization, security, and tech and tool agnostic uses looking to microservices in the future. The inter-process communication mechanisms and interfaces will have a common standard with well-defined business practices that can optimize for speed and efficiency of communication. In terms of security, containers will be one of the most common ways of adopting and deploying microservices. “Security is a prime concern for using containers. We can definitely expect better security measures from companies to accelerate container adoption, and in turn, microservices,” he says. The adoption of microservices will increase a company’s requirement to always have a flexible method of updating and using the latest and greatest in tools and frameworks. “Teams that provide new framework and software companies will have to ensure the tools they provide microservice practitioners aren’t locking them into an ecosystem and allow them to flexibly integrate and move between different technologies.”
The need for simplified software development and deployment is certain. While microservice architectures address some of the challenges associated with traditional development methods, several challenges need to be considered and worked out as adoption continues.
Apr2018, Software Magazine