Digital transformation is a top business initiative for CIO’s. What does it really mean for IT and how does it impact the business itself? In this post, we will try to cover some of the basics.
Digital transformation is a fundamental change to an organization’s product development and product delivery process to deliver a highly personalized product or service. This often involves using technology such as big data analytics, social, mobile and cloud as a means to deliver these services to the consumer. Digital transformation also implies the ability to create sustainable business differentiation with software and the ability to rapidly introduce new products and services to meet new customer needs.
Industry veterans and incumbent giants are facing significant competitive pressure and potential disruption from new market players. Startups (such as Uber, Tesla, and many others) have moved quickly from being niche players to be a dominant force in many verticals such as auto, banking, manufacturing, healthcare. Industry leaders from large enterprises acknowledge this trend and are now looking to transform their product development process and customer engagement to compete with new players –
- Jamie Dimon, CEO of JPMC – 2015 Annual Report to shareholders
- “Silicon Valley is coming. There are hundreds of startups ….”
- “The ones you read about most are in the lending business, whereby the firms can lend to individuals and small businesses very quickly and – these entities believe – effectively by using Big Data to enhance credit underwriting.”
- “They are very good at reducing the “pain points” in that they can make loans in minutes, which might take banks weeks.”
- Don Butler, Executive Director, Connected Vehicles, Ford
- “In the past 90% of the car value was in hardware, we expect 50% of the car value will be in hardware and the other 50% divided by software and experiences”
Digital Transformation is not a new idea. It has now reached mainstream acceptance with (as noted by Dimon et al above) with the maturity of technologies such as Social, Mobile, Analytics & Cloud. Success stories of Digital Transformation in the enterprise have always involved people, process, and technology. In this blog, we will focus on technology and more specifically on the evolution of enterprise application and infrastructure architecture in organizations embracing Digital Transformation.
Some of the key technology metrics tracked by most organizations in a Digital Transformation effort are –
- Lead time to introduce new services – providing insight to how fast the organization is able to build new revenue streams
- Lead time for application modernization – provides insight into to how efficient the organization is modernizing legacy critical applications.
- Deployment frequencies – is an indicator of the trust between business and DevOps teams to introduce new changes to deployed apps.
- Mean Time to repair (MTTR) – providing insight to business availability
- Change Lead Time – how efficient is the organization in rolling out a new change
Before going into the details of challenges faced by enterprise in optimizing the above-mentioned technology goals, let us first look at the current infrastructure and application architecture in a typical enterprise.
Most enterprise organizations have virtualized the vast majority of their custom applications and packaged (off the shelf) apps on the VMware vSphere platform – with some small portion of workloads running natively (on bare metal). Modernizing, rapidly iterating and scaling “custom applications” holds the key to Digital Transformation success – these apps are typically business critical apps for operations, e-commerce sites, and apps that allow an enterprise to interface with partners and customers (core business logic).
As we engage with multiple Global 2000 enterprises in their Digital Transformation journeys, we have learned that current application architecture imposes significant challenges to rapidly iterate and efficiently scale. The most common application architecture for custom apps today is the quintessential 3-tier web-app-db architecture.
In this architecture, the web tier serves user requests and the application tier (typically deployed on an application server/middleware such as Websphere, Weblogic, JBOSS) holds the business logic of the app. The application tier usually performs a number of functions – for e.g. user authentication, payment processing, shopping cart, notifications, billing, messaging, rewards program etc. These different functionalities are tightly bound together and usually share a common database.
Some of the challenges faced by software architects and developers to develop new features (on existing services), rapidly prototype and introduce new services due to this tight coupling are –
- The tight coupling forces close co-ordination between teams to introduce their features and services and often increases lead-time to deploy. Many teams want the flexibility to freely deploy and release new features and enhancements – transforming the development and release methodology from the waterfall model to an agile delivery model.
- Shared tooling and development methodology – current custom apps typically use the same technology and tools for development (e.g., programming language), in-memory caches, databases, etc. Developers and architects would like opportunistically to use the right technology for new and existing services.
- Scaling – current architecture forces operations teams to run multiple instances of the monolithic app tier for scaling. Operations and DevOps teams would like to dynamically scale the right portions of the application based on demand e.g., scaling search and not payments when we identify most customers are only browsing the application.
The above challenges in the classical three-tier application architecture and the business need for digital transformation has driven the desire for a new “cloud native” application architecture. This typically involves deploying new applications, or re-architecting existing ones, as collections of “Microservices”. A Microservice (or just service) is a unit or portion of the app that performs a specific function. A Microservice typically exposes a REST API and, if stateful, has its own database.
There are two major approaches available for application teams to deploy Microservices – deploy Microservices on a Platform as a Service (PaaS – e.g. Cloud Foundry) or on a Container as a Service platform (CaaS – e.g. Kubernetes, Docker Swarm, Mesos, etc).
As part of their Digital Transformation journey, a large number of enterprises in financial services, banking and manufacturing are now looking to transform their application and infrastructure architecture to look like below –
Transforming existing custom apps into Microservices involves disaggregating the application tier into a number of Microservices and hosting them on PaaS or CaaS. Another major consequence with this architectural change is that traffic between services, which in the past was contained within the application server (and occurred over the enterprise service bus), now occurs between microservices connected by the data center network.
In the next blog on Digital Transformation, we will see in more detail how enterprises are implementing Microservices on PaaS and CaaS and some of the key networking and security challenges they face on their Digital Transformation journey.
To learn more about VMware NSX and Digital Transformation, visit
- VMware Digital Transformation site
- Guido Appenzeller’s VMworld 2016 session NET9989 – VMware NSX, Network Bridge to Multi-Cloud future
- Openstack Summit Austin 2016 – Amadeus’s journey building a Software Defined Data Center