As software disrupts the market, there is tremendous pressure on enterprises, including the laggards, to modernize and innovate. Enterprise IT modernization is not a good to have strategy but a need for survival. Without modernizing their IT, enterprises are setting themselves to disruption from a competitor or a new comer who can out innovate them with technology. As IT organizations transform themselves from cost center to the underlying foundation of innovation, they are not only expect to enable rapid innovation but sustain the rate of continuous innovation. Many modern enterprises have embraced cloud and DevOps to accelerate application delivery but most of them have focussed on innovation today without worrying much the future. Based on our research, we find that they have made technology and architectural decisions that will hinder their ability to maintain the same kind of agility in the future. Many decision makers doesn’t seem to care about this blind spot in their strategy because they are focussed on short term success over long term innovation readiness (how many of these decision makers will be working in the same organization few years from now?).
Based on our research and our interactions with enterprise customers, we have identified four pillars of modern enterprise which will help organizations deliver applications rapidly both today and tomorrow. These four pillars are:
- Multi Cloud
Just ask those early adopters who embraced Amazon EC2 and made some technology and architectural choices that left them wanting to take advantage of newer services like AWS Lambda. In your quest to move fast, if you lose sight of the need to be agile tomorrow, you are punting your disruption to another day. Instead, embracing these four pillars will help your organization meet the needs of business even with the fast changing technology.
Four Pillars of Modern Enterprise
Abstractions plays an important role in ensuring portability, either through a platform level abstraction that separates applications from the underlying infrastructure or API abstractions that makes it easy to swap the service behind the end points. With a right abstraction, applications can be deployed without worrying about the underlying components. They also help deliver applications faster because there is an uniformity across development, test and production environments. This, when combined with portable architectures, help organizations retain the ability to innovate faster both today and tomorrow.
Abstractions could be limiting at times by being very opinionated or by getting you locked into the platform. A bottleneck through platform lock-in is no different from the bottleneck due to infrastructure lock-in. To avoid this bottleneck, it is important to consider a composable stack while taking advantage of the platform abstractions. A composable stack ensures that you have the flexibility to change the application while also taking advantage of the abstraction for agility. Like abstraction, composability also plays a role in ensuring portability and retaining the ability to innovate in the future.
Whenever the term Portability is used, and I am guilty of doing the same in the past, people tend to think of encapsulating the applications in a container so that it can be ported from one cloud to another or to an on-premises infrastructure. Even though portability also imply porting across infrastructure, we are coming at portability from the point of view of architecting applications in such a way that the cost of changing the applications is not high or a bottleneck for innovation. Smart architectures that provide the flexibility to change rapidly is the key idea behind portability. It is very difficult to architect an app that can transcend technology evolution or meet the future challenges. But one should focus on an application architecture that allows you to easily swap out technologies underneath or even swap out parts of the applications to fit a future need. It could be microservices encapsulated with containers or applications using portable APIs but building a flexible architecture for your applications is critical. When applications are built with this mindset, you retain the ability to innovate faster in the future.
Portability takes different meaning depending on whether you are approaching it from the application side or platform side. Smart architectures are key while looking at portability from the application side and standards based encapsulation is important from the platform perspective.
A multi cloud strategy is the underlying fabric for the modern enterprise. One shouldn’t think about multi cloud from the point of view of deploying applications with high availability across multiple cloud providers. Thinking of multi cloud for a HA/DR use case is too narrow and may even be sub optimal. Rather, a multi cloud strategy should be seen from the point of view of giving the developers the right set of services needed for their applications. Any decision to use a single cloud provider should limit your developers from innovating, by using a cloud service from another cloud provider. Multi cloud strategy need not include having multiple cloud providers from day one but, rather, it is about the flexibility you can retain to use multiple cloud providers (which may or may not include on-premises deployment) when needed.
These four pillars, when taken together, provides any IT organization a strategy to deliver their applications rapidly today while being adaptive enough to make any changes needed for tomorrow. Without this flexibility, organizations are repeating their mistakes from the legacy world, this time on the cloud. By embracing the four pillars of modern enterprise, organizations can take advantage of newer technologies while also maintaining the flexibility to change faster in the future.