Enterprise IT organizations that develop their own applications are increasingly embracing a style of architecture known as microservices. According to web server vendor NGINX, 68% of organizations are using or investigating microservices. And a separate study by Evans Data Corporation found that 90% of cloud developers are either already using microservices in production or plan to do so this year.
A microservices architecture involves creating software out of many, smaller independent services. Instead of developing applications as a monolithic whole, microservices takes a modular approach, using small pieces that can be re-used and re-purposed for a variety of purposes. It is similar to service-oriented architecture (SOA), and some people consider it to be a more refined version of SOA.
Proponents of microservices say that it allows companies to create more agile, flexible, scalable applications and to speed up the development processes. It is often used by organizations that have adopted agile methodologies or DevOps approaches, and some of its most well-known users include large web companies like Netflix, Twitter, eBay and Amazon.
Still, Gartner cautions, “Microservices architecture enables unprecedented agility and scalability, but it's not for everyone. Application leaders responsible for architecture should understand this new design paradigm, its prerequisites and its disruptive impact before determining where, when and whether to use it.”
Organizations that do implement microservices often adopt the architectural style alongside complementary technologies, including the seven in this slideshow.
Because flexibility is one of the key reasons for adopting microservices, many organizations choose to deploy microservices applications in containers. Containerization technology, such as Docker, packages an application together with all of its dependencies. That gives organizations the freedom to deploy applications on any infrastructure they choose, as well as the ability to migrate easily among data centers and various cloud services. According to 451 Research, application containers were a $762 million market in 2016 and will likely grow to generate $2.7 billion by 2020. And a 2017 survey conducted by containerization software vendor Portworx found that 69 percent of respondents said their companies were investing in containers.
In order to manage those containers that enable their microservices architecture, many organizations also deploy an orchestration tool. Some of the most popular include Docker’s Swarm and Google-developed Kubernetes; Apache Mesos and ZooKeeper are also popular options for managing and maintaining microservices applications in containerized environments. In an analysis of 45,000 containerized environments, monitoring vendor Sysdig found that 43 percent were using Kubernetes, 9 percent Mesos and 7 percent Docker Swarm.
The drive for flexibility and scalability also leads companies adopting microservices architecture to deploy in the cloud. Amazon, Microsoft Azure, Google App Engine and IBM Bluemix all offer advice on how to deploy microservices applications on their cloud platforms. And Red Hat’s OpenShift and the open source OpenStack platform support microservices (and containerization) as well. Serverless computing services (also known as function-as-a-service solutions) are often particularly popular with developers creating microservices apps because serverless solutions offer even more flexibility, scalability and speed.
According to Gartner, “The worldwide public cloud services market is projected to grow 18 percent in 2017 to total $246.8 billion, up from $209.2 billion in 2016.”
Continuous Integration and Continuous Delivery Tools
In addition to tools for developing and deploying microservices applications, DevOps teams also need tools for monitoring the performance of those applications. Unfortunately, most application monitoring tools were originally created with monolithic applications in mind, and not all of them do a good job of monitoring microservices architecture. Experts say some options to consider for microservices monitoring include Prometheus, Dynatrace, AppDynamics Microservices iQ and Instana.
Application programmable interfaces, or APIs, are really the lifeblood of microservices architecture. In a microservices application, each service has an API which allows all the other services to interact with it. Organizations can also choose to expose their APIs to outsiders, allowing third-party developers to use their services. And enterprise developers often choose to integrate outside APIs into their own applications. In fact, some organizations have and use so many APIs that they invest in an API management solution to help them publish, maintain and track their APIs.