Microservices Architecture and Container Technology Explained
Still have absolutely no idea what a microservice is? Want an explanation from the very start? Read this!
Join the DZone community and get the full member experience.Join For Free
Guest blog by Bob Johnson Vice President & Principal Analyst at IDG Connect
Fighting for space in the world of web-based services and applications needs a quick eye and a strong software development arm. Companies everywhere are looking at new ways to boost agility and shorten their time to market.
One of these is microservices is a software-based system architecture which supports the construction of complex applications out of smaller independent processes that exist as stand-alone mini-applications in their own right. These individual components communicate with each other through language agnostic application programming interfaces (APIs) and simple protocols such as Remote Method Invocation (RMI), RESTful Web Services, or Push Messaging.
This modular approach can make it easier for companies to spread their workloads across multiple development teams, spanning different departments or businesses, offering a greater degree of flexibility, and helping to speed up the project lifecycle.
Each component has its own allocated storage, memory, or CPU resources, which makes hardware utilization simple to provision and track—particularly in cloud-based PaaS environments. Development teams can use whichever standards or technology stacks they prefer, as long as they make sure they are interoperable with the components that make up the final application.
While management complexity is sometimes reduced with microservices architecture, there is still a driving requirement for extensive team communication—particularly when it comes to monitoring the production process and making sure updates to one component do not have an adverse effect on any other. But the need for meticulous formal documentation also makes it easier for those new to the project to get to grips with the code base more quickly.
Early users of microservices architecture include Amazon Web Services (AWS), Google, eBay, and Netflix, all of which have sought to improve continuous delivery of frequently updated applications and services they provide over the web to their customers’ PCs, tablets, and smartphones.
With such high-profile proponents, it is not surprising that familiarity with the microservices concept appears widespread. Of one hundred senior IT staff based in the US, the UK, Israel, and India polled by a recent IDG Connect survey, only 6 percent said they had no knowledge of microservices architecture at all. And though only a minority (10 percent) said they had already deployed some form of microservices architecture, over a quarter (28 percent) revealed plans to deploy in the next year, and another 27 percent at some point in the future.
With so much application and service development activity centred on cloud-hosted environments, microservices architecture has come to depend heavily on the use of containerization technology. Containers isolate microservice processes and applications into smaller instances that utilize only the virtualized operating system rather than the full virtual machine and the entire complement of abstracted hardware that VM includes.
Common and widely employed examples of containers include Docker, a Linux-based open-source implementation supported by software companies such as Canonical, Red Hat, and Parallels. Established PaaS services including Google App Engine, Red Hat Open Shift, and VMware’s Cloud Foundry, also make use of Linux Containers (LXC) technology.
Though still an emerging technology, plans for containers also look to be well advanced in many companies. The IDG Connect survey revealed that 18 percent of organisations have already deployed some form of containerization platform, with another 57 percent planning to do so at some point in the future. Only 3 percent said they had no plans for containers at all, indicating that the combination of microservices and containers will become a staple and widespread ingredient of application and service development activity in the very near future.
Published at DZone with permission of Kris Bondi, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.