|By Cloud Best Practices Network||
|December 30, 2015 09:00 AM EST||
Microservices - Cloud Architecture for Digital Businesses
By Neil McEvoy
In a VentureBeat article the author describes ‘the future of enterprise tech‘, describing how pioneering organizations like Netflix are entirely embracing a Cloud paradigm for their business, moving away from the traditional approach of owning and operating your own data centre populated by EMC, Oracle and VMware.
Instead they are moving to ‘web scale IT’ via on demand rental of containers, commodity hardware and NoSQL databases, but critically it’s not just about swapping out the infrastructure components.
Netflix have also pioneered a revolution of the very nature of software itself, de-composing monolith applications into a suite of Microservices, enabling high velocity digital innovation.
Netflix is exactly the type of business venture you would think of when considering the benefits of Cloud computing.
They are challenged not only to distribute a massive volume of media across the global Internet to millions of customers, each generating a fluctuating demand for streaming resources, they are also required to innovate at high speed too, improving and adapting their service and business model in response to equally effective competitors.
Therefore what is interesting about their case study is how their technology strategy enables both. Through their pioneering of best practices like ‘Microservices’ and ‘Continuous Deployment’ they are able to both service this gigantic volume of media distribution, and also frequently update the business platform that performs this function, improving the user experience, optimizing performance and so on.
To best exploit the web scale capabilities that Amazon Cloud services offer, Netflix entirely re-engineered their approach to building and deploying software, becoming the poster child for the approach now known as Microservices.
Not only did they share their experiences of doing so, through blogs and presentations, they also literally published them as reusable Cloud best practices, distributing the components they developed to make this possible as open source software. This Medium interview provides a comprehensive background that led them through this path.
Organizations like Nike then adopted the same approach enabled by these building blocks to enjoy the same benefits of increased, rapid innovation, and the considerable opportunity is that any other organization is able to harness these same capabilities for the same results.
Microservices Continuous Delivery
Microservices are introduced in the Wikipedia page as “a software architecture style, in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. These services are small, highly decoupled and focus on doing a small task”.
Sam Newman offers this 114 slide presentation on the Principles of Microservices. They are described to bring many powerful benefits although Gene Hughson argues that microservices aren’t for everyone.
It’s often criticized simply as old wine in new bottles, simply re-branding what is an existing architecture, the SOA (Service Oriented Architecture), however as expert Martin Fowler describes in this comprehensive guide that is typically an approach for integrating monolith applications often using an Enterprise Services Bus.
In contrast microservices are an entirely different approach for how these monolith applications are built in the first place, specifically:
“the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.”
Naturally a key dynamic of microservices is that they are small units of code, with some arguing this can be defined specifically as 10-100 lines of code, however this isn’t a hard rule and really the principle benefit is derived from the modular approach.
The nature of monolith software development means that even small changes require the entire monolith to be re-deployed each time, a cumbersome approach that slows the product development life-cycle considerably.
In contrast the key feature of microservices is a modularity that enables each individual microservice to be re-deployed on its own, making them ideal for the high velocity change rates desired of a shift to DevOps and Continuous Delivery approaches.
Organized around Business Capabilities
This includes a transformation of how teams operate and deliver code too. As Martin Fowler describes monolith software systems tend to have their teams built around only the technologies they manage, whereas microservices encourages teams to be end-to-end responsible for the products they deliver.
Microservices, Containers and Multi-Platform Development
With this DevOps evolution in mind it naturally leads to the question of the potential relationship between microservices and containers, like Docker.
Nate Slater, a Solution Architect with AWS Startups explores this question, providing an insightful overview that sets the scene through the history of web application design that leads up to this evolution.
He makes the point that because microservices are intended to deliver one specific business function via minimal resource requirements, those requirements can be met in an optimized fashion through delivering them via a Docker container.
“It is this isolation between containers running on the same host that makes deploying microservice code developed using different languages and frameworks very easy. Using Docker, we could create a DockerFile describing all the language, framework, and library dependencies for that service.”
Nate also makes the same critical point that Martin Fowler does, that De-centralized Governance is possible where you can ‘use the right tool for the right job’, such as using Node.js for a simple report page or C++ for a service that requires more demanding real-time processing. Nate echoes this, adding other scenarios that might be better met through Python or Ruby.
The post Microservices – Cloud Architecture for Digital Businesses appeared first on Cloud Best Practices.
- Linux & Games: Installing TransGaming's Latest Release, Cedega 4.0
- Migrating to Linux not easy for Windows users
- Migrating the Desktop from NT to Linux
- Sailing the Wine Dark Sea With Macromedia Fireworks MX
- Linux on the Desktop: Bringing Linux into the Corporate Environment
- How to install Neverwinter Nights on Linux
- Graphics Still the Hot Topic in Open Source .NET
- Fedora Software
- Novell Paying Microsoft Not to Sue
- Catching up with WINE