One of the key success factors for digital transformation is the relationship between business and IT. That is, closing the gap between both, focusing on the same goals and NOT overlooking the role of IT. This is where microservices can play a role in the digital transformation process. In this post, we will provide a high level overview on "Digital Transformation" and "Microservices". The subsequent posts will cover few of the case studies with a deep-dive into the implementation of microservices.
Digital transformation — Digital transformation, a hot topic for companies across the globe, is the use of technology to radically improve performance or reach of enterprises. Although digital transformation is not about digital technologies as such, it is clear that the adoption and opportunities of technologies under the umbrellas of social business, cloud, mobility, Big Data (analytics), cognitive computing and the Internet of Things (IoT), to name a few, speed up changes across society. These modern technologies have transformed traditional workflows and have enabled organizations to become networks of digital workflows.
Digital transformation happens everywhere and in each industry. It can also affect all activities, divisions, functions and processes of the organization as it can impact the very business model as such. It’s important to remember that in a digital transformation context, all these aspects, functions, processes, etc. are interconnected and silos have less (or no) place, not from a technological perspective but most of all also not from a process and people perspective.
Microservices Architecture — The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization, business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data.
Microservices provides the agility, reliability, maintainability, scalability and deployability that aid enterprises through their digital transformation process.
- Always focused around "Business Need"
- Agility – enterprises can bring new products or enhancements into the market quickly
- Enhancing the customer experience
- Reliability - If a service is down, the customer will not be able to use the functionality provided by that specific service, but the rest of the system is still usable
- Scalability - During peak hours, the system can be configured to auto-scale (up / out) and during off-peak hours, it can go back to its normal configuration resulting in a better customer experience and cost-savings for the customer
- Can be developed & deployed independently of other services
Netflix, which is a very popular video streaming service that’s responsible for up to 30% of Internet traffic, has a large scale, microservices architecture. They handle over a billion calls per day to their video streaming API from over 800 different kinds of devices. Each API call fans out to an average of six calls to backend services.
Amazon.com originally had a two-tier architecture. In order to scale they migrated to a microservices architecture consisting of hundreds of backend services. Several applications call these services including the applications that implement the Amazon.com website and the web service API. The Amazon.com website application calls 100-150 services to get the data that is used to build a web page.
The auction site ebay.com also evolved from a monolithic architecture to a microservices architecture. The application tier consists of multiple independent applications. Each application implements the business logic for a specific function area such as buying or selling.
Executives in all industries are using digital advances such as analytics, mobility, social media, IoT and smart embedded devices, as well as improving their use of traditional technologies, such as ERP, to change customer relationships, internal processes and value propositions. Executives are digitally transforming three key areas of their enterprises: customer experience, operational processes and business models.
Transforming Customer Experience
Customer Understanding — Many enterprises are building analytics capability to understand customers in more detail. They are taking advantage of previous investments in systems to gain an in-depth understanding of specific geographies and market segments. Some are exploring social media to understand the customer behaviour. Companies are learning to promote their brands more effectively through digital media.
Top-Line Growth — Companies are using technology to enhance in-person sales conversations. For example, financial services and Insurance companies are using tablet/mobile-based tools to help sales people and customers engage in analytics-based planning. They are also integrating customer purchasing data to provide more personalized sales and customer service, and also offering customized product packages.
Customer Touch Points — Customer service can be enhanced significantly by digital initiatives. For example, a bank established a Twitter account to answer client complaints quickly, helping customers avoid physically going to a branch. Companies with multiple channels to the customer are experiencing pressure to provide an integrated experience. Multichannel services require envisioning and implementing change across customer experience and internal operational processes. Several companies are offering customer apps to enhance customer touch points and self-service via digital tools.
Transforming Operational Processes
Process Digitization — Modern technologies have transformed traditional workflows and have enabled organizations to become networks of these digital workflows. Companies historically have used automation to make processes more efficient and scalable. Some firms are going beyond simple automation to gain additional benefits. Automation can enable companies to refocus their people on more strategic tasks.
Worker Enablement — Individual-level work has, in essence, been virtualized — separating the work process from the location of the work. The tools that virtualize individual work, while implemented for cost reasons, have become powerful enablers for knowledge sharing. Salespeople and frontline employees, for example, are beginning to benefit from collaborative tools in which they can identify experts and get questions answered in real time. They are also increasingly gaining access to a single, global view of the company’s interactions with a customer.
Performance Management — Transactional systems give executives deeper insights into products, regions and customers, allowing decisions to be made on real data and not on assumptions. This is happening in both internal processes and customer-facing processes. The level of detail is also increasing, allowing managers to compare status across sites or reallocate product manufacturing capacity in ways they could not do before. Beyond being better informed, digital transformation is actually changing the process of strategic decision-making by taking inputs from wider employees.
Transforming Business Models
Companies are not only changing how their functions work, but also redefining how functions interact and even evolving the boundaries and activities of the firm.
Digitally Modified Businesses —The companies are finding ways to augment physical with digital offerings and to use digital to share content across organizational silos. Few companies are staying true to their traditional business but using digital to transform a new growth business. Other businesses are building digital or service wrappers around traditional products.
New Digital Businesses — Companies are also introducing digital products that complement traditional products. Other companies are changing business models by reshaping their boundaries through digital.
Digital Globalization — Companies are increasingly transforming from multinational to truly global operations. Digital technology coupled with integrated information is allowing businesses to gain global synergies while remaining locally responsive. These companies benefit from global shared services for finance, HR and even core capabilities like manufacturing and design. Global shared services promote efficiency and reduce risk. They even promote global flexibility.
Today, Microservices act as building blocks for building modern distributed enterprise systems and become one of the enablers in the digital transformation journey. Microservices are a progression from Service Oriented Architecture (SOA) and have some basic characteristics:
- Always focused around "Business Need". For example: Instead of segregation by technology (UI, Middleware, Database, etc.), it would make sense to segregate by business (i.e. Order Management). This means that the team responsible for "Order Management" owns it completely (i.e. UI, Middleware, Database, etc.).
- "Single Responsibility"- Focused task and hence lightweight
- De-centralized API governance (every microservice exposes its own set of APIs)
- De-centralized data governance (every microservice manages its own data / database)
- Can be independently deployed, managed, scaled and monitored
- Inter-communication between microservices happens through well-known patterns – HTTP REST or Message Brokers
- Technology agnostic (no dependency on a specific technology stack)
- Focused team that can handle the microservice end-to-end (i.e. conceptualization stage to retirement)
Benefits of Microservices
- As the microservices are more focused / granular is relatively small, easier for developer to understand and the development time is comparatively faster when compared with traditional monolithic applications (development of a monolithic application is easier and faster at the beginning but tends to slow down as the monolithic gets complex)
- Loosely coupled and follows well established standards for communication between microservices (REST / Message Brokers)
- Deployment & start-up times are faster as they are lightweight in nature. In addition, the deployment time can further be improved by using a combination of containerization (Docker) and Continuous Integration
- Each service can be developed and deployed independently of other services - easier to deploy new versions of services frequently
- High availability of the application - With this approach, the applications tend to exhibit high availability and become more reliable. Reason being, even if a specific microservice goes down, only the feature provided by the concerned microservice becomes unavailable and the rest of the application is still accessible and functional
- Scalable - Automatic horizontal scaling of the microservices can be achieved using the auto-scale features by few cloud providers (ex. AWS). This not only addresses the peak/off-peak needs but also helps the customer from a costing factor (pay-as-you-go model)
- Cloud adoption becomes easier
- Improved fault isolation. For example, if there is a memory leak in one service then only that service will be affected. The other services will continue to handle requests. In comparison, one misbehaving component of a monolithic architecture can bring down the entire system.
- Eliminates any long-term commitment to a technology stack
Challenges to Implement Microservices
- Monitoring & Tracing in a distributed environment
- Multitude of systems running several microservices
- Finding the root-cause of a problem can be challenging
- Distributed Data Management - One of the key characteristic of microservices is the de-centralized data governance (i.e. every microservice manages its own data and can access other microservices data via its API). Implementing business transactions that maintain consistency across multiple microservices becomes a challenge.
- Operational and Tooling overhead on the development teams.
- Need for a centralized logging system with a consistent means of logging where the log statements should have traceability (i.e. originating context).
1. Microservices (by Martin Fowler)
2. Nine Elements of Digital Transformation (George Westerman, Didier Bonnet & Andrew McAfee, MIT Sloan Management Review)