The digital transformation challenges CIOs to remodel their existing IT architectures providing their internal customers with a dynamic platform that stands for a better agility and fosters the companies’ innovation capacity. This change calls for a complete rethink of the historically implemented architecture concepts. Even if most of the current attempts are to migrate existing enterprise applications into the cloud, CIOs have to empower their IT teams to consider novel development architectures. Because modern applications and IoT services are innovative and cloud based.
Microservice: Background and Meaning
Typical application architectures, metaphorically speaking, remind of a “monolith”, a big massive stone that is made of one piece. The characteristics of both are the same: heavy, inflexible and not or not easy to modify.
Over the last decades, many, mostly monolithic applications have been developed. This means that an application includes all modules, libraries, and independencies that are necessary to ensure a smooth functionality. This architecture concept implicates a significant drawback. If only a small piece of the application needs to change, the whole application has to be compiled, tested and deployed again. This also implies for all parts of the application that don’t experience any changes. This comes at big costs taking manpower, time and IT resources and in most cases lead to delays. In addition, a monolith makes it difficult to ensure:
- Continuous Delivery
CIOs can meet these challenges by changing the application architecture from a big object to an architecture design composed of small independent objects. All parts are integrated with each other providing the overall functionality of the application. The change of one part doesn’t change the characteristics and functionality of other parts. This means that each part works as an independent process, respectively, service. This concept is also known as microservice architecture.
What is a Microservice?
A microservice is an encapsulated functionality and is developed and operated independently. So, it is a small autonomous software component (service) that provides a sub-function within a big distributed software application. Thus, a microservice can be developed and provided independently and scales autonomous.
Application architectures based on microservices, are modularized and thus can be extended with new functionalities easier and faster as well as better maintained during the application lifecycle.
Compared to traditional application architectures, modern cloud based architectures are following a microservice approach. This is because of the cloud characteristics cloud native application architectures have to be adapted to. This means that issues like scalability and high-availability have to be considered from the very beginning. The benefits of microservice architectures are related to the following characteristics:
- Better scalability: A sub-service of an application is able to scale autonomously if its functionality experienced a higher demand without affecting the remaining parts of the application.
- Higher availability of the entire application: A sub-service that experiences an error doesn’t affect the entire application but only the functionality it is representing. This means that a sub-failure necessarily doesn’t affect customer-facing functionality if the service represents a backend service.
- Better agility: Changes, improvements and extensions can be implemented independently from the entire application functionality without affecting other sub-services.
- Continuous delivery: These changes, improvements and extensions can be conducted on a regular basis without updating the whole application respectively without a major maintenance mode.
Another benefit of microservice architectures: A microservice can be used in more than one application. Developed once it can serve its functionality in several application architectures.
What Provider works with Microservices?
Today, a number of providers already understood the meaning of microservice architectures. However, in particular the big infrastructure players have their difficulties with this transformation. Startups respectively cloud native companies show how it works:
- Amazon Web Services
From the very beginning Amazon AWS aligned its cloud infrastructure providing microservices (building blocks). Examples: Amazon S3, Amazon SNS, Amazon ELB, Amazon Kinesis, Amazon DynamoDB, Amazon Redshift
- Microsoft Azure
From the very beginning the cloud platform consists of microservices. The Azure Service Fabric exists for a short time offering capabilities for the development of own microservices. Examples: Stream Analytics, Batch, Logic App, Event Hubs, Machine Learning, DocumentDB
- OpenStack in general
The community extends the OpenStack portfolio with new microservices with each release mainly for infrastructure operations. Examples: Object Storage, Identity Service, Image Service, Telemetry, Elastic Map Reduce, Cloud Messaging
- IBM Bluemix
IBM’s PaaS Bluemix provides an amount of microservices. These are offered directly by IBM or via external partners. Examples: Business Rules, MQ Light, Session Cache, Push, Cloudant NoSQL, Cognitive Insights
Heroku’s PaaS offers “Elements”, a marketplace for ready external services that can be integrated as microservices in the own application. Examples: Redis, RabbitMQ, Sendgrid, Raygun.io, cine.io, StatusHub
- Giant Swarm
Giant Swarm offers developers an infrastructure for the development, deployment and operations of microservice based application architectures. For this purpose, Giant Swarm is using technologies like Docker and CoreOS.
cloudControl’s PaaS offers “Add-ons”, a marketplace to extend self-developed applications with services from external partners. Examples: ElephantSQL, CloudAMQP, Loader.io, Searchify, Mailgun, Cloudinary
The providers, based on their microservice portfolios, are offering a programmable modular construction system of ready services that are accelerating the development of an application. These are ready building blocks (see hybrid and multi-cloud architectures), whose functionalities don’t have to be developed again. Instead they can be used directly as a “brick” within the own source code.
Example of a Microservice Architecture
Netflix, the video on demand provider, is not only a cloud computing pioneer and one of the absolute role models for IT architects. Under the direction of Arian Cockroft (now Battery Ventures) Netflix has developed an own powerful microservice architecture to operate its video platform high scalable and high available. Services include:
- Hystrix = Latency and fault tolerance
- Simian Army = High-availability
- Asgard = Application deployment
- Exhibitor = Monitoring, backup and recovery
- Ribbon = Inter process communication (RPC)
- Eureka = Load balancing and failover
- Zuul = Dynamic routing and monitoring
- Archaius = Configuration management
- Security_Monkey = Security and tracking services
- Zeno = In-memory framework
All microservices, Netflix encapsulates within its “Netflix OSS” that can be downloaded as open source from Github.
An example from Germany is Autoscout24. The automotive portal is facing the challenge to replace its 2000 servers that are distributed over 2 data centers, and the currently used technologies based on Microsoft, VMware and Oracle. The goal: a microservice architecture supported by a DevOps model to implement a continuous delivery approach. Thus, Autoscout24 wants to stop its monthly releases and instead provide improvements and extensions on a regular basis. Autoscout24 decided for the Amazon AWS cloud infrastructure and already started the migration phase.
Microservice: The Challenges
Despite the benefits, microservice architectures come along with several challenges. Besides the necessary cloud computing knowledge (concepts, technologies, et.al.) these are:
- A higher operational complexity since the services are very agile and movable.
- An additional complexity because of the development of a massive distributed system. This includes latency, availability and fault tolerance.
- Developer need operational knowledge = DevOps
- API management and integration play a major role.
- A complete end-to-end test is mandatory.
- Ensuring a holistic availability and consistency of the distributed data.
- Avoiding a high latency of the single services.
The Bottom Line: What CIOs should consider
Today, standard web applications (42 percent) still represent the major part at public IaaS platforms. By far mobile applications (22 percent), media streaming (17 percent) and analytics services (12 percent) follow. Enterprise applications (4 percent) and Internet of Things (IoT) services (3 percent) are still playing a minor part. The reason for the current segmentation: websites, backend services as well as content streaming (music, videos, etc.) are perfect for the public cloud. On the other hand enterprises are still sticking in the middle of their digital transformation and evaluate providers as well as technologies for the successful change. IoT projects are still in the beginning or among the idea generation. Thus in 2015, IoT workloads are only a small proportion on public cloud environments.
Until 2020 this ratio will significantly change. Along with the increasing cloud knowledge within the enterprises IT and the ever-expanding market maturity of public cloud environments for enterprise applications the proportion of this category will increase worldwide from 4 percent to 12 percent. Accordingly, the proportion of web and mobile applications as well as content streaming will decrease. Instead worldwide IoT workloads will almost represent a quarter (23 percent) on public IaaS platforms.
These influences are challenging CIOs to rethink their technical agenda and thinking about a strategy in order to enable their company to keep up with the shift of the market. Therefore they have to react to the end of the application lifecycle early enough by replacing old applications and look for modern application architectures. However, a competitive advantage only exists if things are done differently from the competition and not only better (operational excellence). This means that CIOs have to contribute significantly by developing new business models and develop new products like an IT factory. The wave of new services and applications in the context of the Internet of Things (IoT) is just one opportunity.
Microservice Architecture: The Impact
Microservice architectures support IT departments to respond faster to the requirements of specialty departments to ensure a faster time-to-market. In doing so, independent silos need to be destroyed and a digital umbrella should be stretched over the entire organization. This includes the introduction of the DevOps model to develop microservices in small and distributed teams. Modern development and collaboration tools are enabling this approach for worldwide-distributed teams. This helps to avoid shortage of skilled labor at certain countries by recruiting specialist from all over the world. So, a microservice team with the roles product manager, UX designer, developer, QA engineer and a DB admin could be established across the world, which accesses the cloud platform via pre-defined APIs. Another team composed of system, network and storage administrators operates the cloud platform.
Decision criteria for microservice architectures are:
- Better scalability of autonomous acting services.
- Faster response time to new technologies.
- Each microservice is a single product.
- The functionality of a single microservice can be used in several other applications.
- Employment of several distributed teams.
- Introduction of the continuous delivery model.
- Faster onboarding of new developers and employees.
- Microservices can be developed more easily and faster for a specific business purpose.
- Integration complexity can be reduced since a single service contains less functionality and thus less complexity.
- Errors can be isolated easier.
- Small things can be tested easier.
However, the introduction of microservice architectures is not only a change on the technical agenda. Rethinking the enterprise culture and the interdisciplinary communication are essential. This means that also the existing IT and development teams needs to be changed. This can happen either by internal trainings or external recruiting.