To demonstrate the importance of the Microservices Approach in digital transformation issues it is useful to refer to Amazon, by going back to the origins of a specific Amazon Division; the cloud one.
The tech giant owes a ton of its success to the AWS (Amazon Web Services). Nearly 12% of Amazon’s revenue comes from its cloud products. The AWS revenue in the past 3 years has risen up to 255%. Have you ever wonder how AWS started?
Back in 2000, Amazon was just a big e-commerce company that was facing huge challenges with scaling. In a huge internal refactoring, software systems were rebuild to deal with the growth.
Decision makers at that period decided that it was essential to build exceptional libraries – toolboxes with various web services that would be used across various divisions inside Amazon. If you remember the rise of e-commerce websites, many of those were built on 3rd party engines and Amazon was offering such one.
The real truth is that they faced huge problems and the separation of various Amazon services from the centralized platform was a complete mess. The strategy was then changed and each web-service, for internal or external purpose, was offered via APIs (Application Programming Interfaces) which enabled the shift from a centralized system to a more agile one.
This API-centric strategy transformed Amazon to a web-services company without fanfare at that period. You may find a good story on how AWS evolved on Techcrunch.
Some years later, the history repeated itself. As time evolved, new programming languages got in the race. Other languages were good for data analysis, others were good for scaling real time integration. Small and agile teams within programming departments delivered products and features in diverse languages, with own internal databases requiring independent resources.
This resulted in the creation of independent black boxes called “containers” that can be abstracted from the environment they actually run.
As Google explains in this 101 , containers allow you to package your application together with libraries and other dependencies, providing isolated environments for running your software services.
This allows Container-based applications to be deployed easily and consistently, regardless of whether the target environment is a private data center, the public cloud, or even a developer’s personal laptop.
Containerization provides a clean separation of concerns, as developers focus on their application logic and dependencies, while IT operations teams can focus on deployment and management without bothering with application details such as specific software versions and configurations specific to the app.
Divide and conquer is not just a geopolitical strategy of ancient times or an algorithm, it’s the foundation stone of every business that want to survive in the digital transformation era.
We have explained the need for digital transformation in our Digitize the Solution, not the problem and The new intelligent company articles. In practical terms, divide means containerized services while conquer means “Kubernetes”.
Kubernetes (which in Greek means “governor”) is an open source orchestration system for automating deployment, scaling and management of containerized applications. It was offered from Google since 2014 originating from a previous project called Borg back in 2004.
The most modern software teams have split their teams to a smaller number where they provide new features and updates as microservices, controlled from the DevOps team through Kubernetes and various procedures.
The mess with various communication protocols and segmentation of services is once more,nowadays, repeated with the Internet-of-Things (IoT) devices. Going over How cognitive is your IoT Architecture , you will discover more on the problems and challenges relating to it.
In order to gauge a better understanding of the issue, imagine that you own a 60-floor skyscraper and you have 6,000 sensors to manage temperature, humidity, motion, power consumption, fire & life security, access, lights, air quality, healthcare, maintenance & equipment maintenance.
How you are going to “Govern” 6,000 sensors?
IoT has many endpoints like field gateways, cloud gateways, web apps, mobile apps, restful APIs and services in general, which require heavy integration between devices, data, and applications. This increases the development time and effort.
Gartner predicts that through 2018, half the cost of implementing IoT solutions, will be spent in integrating various IoT components with each other and back-end systems. IoT is not just a simple software that will be integrated in a typical microservices infrastructure with Kubernetes; it is far more complex, as far as advanced Machine-2-Machine (M2M) strategies need to be implemented in order the devices to recognize each other, to consume resources in a scalable manner, to have automated fault tolerance procedures, while being, at the same time, secure.
The combination of microservices containerization & M2M communication is vital if you want not just to survive, but to thrive in the digital transformation era. In DVK we are more than ready to guide you effectively in this roadmap. Let you be the one that you govern your devices and services, rather than the opposite.