Some of the world’s largest enterprises have evolved to become what we call “software producers” as they realise technology’s role in driving their innovation journey. Companies including John Deer, P&G, CAT, FedEx, and Air Asia have already transformed to become “software producers”, not merely consumers. IDC predicts that, by 2025, up to a quarter of Fortune 500 companies will become software producers to digitally transform and maintain their F-500 status.
Indian enterprises have accelerated their adoption of cloud, automation, and artificial intelligence (AI) technologies as well. Their spending on IT hardware, software and services stood at US$58.2 billion in 2020, and IDC expects it to grow by around 12% in 2021 and 2022, compared with a global growth rate of 4–4.2%. Industry body NASSCOM highlights Indian enterprises’ focus on becoming software powerhouses: it says India has over 1,200 tech-focused global in-house centres (GICs), of which more than a third are pure tech-focused companies that build critical technology for parent entities. The COVID-19 pandemic has emphasized the need for driving innovation at scale at an accelerated pace: IDC found 50% of Indian enterprises think that innovation is leading their digital transformation success, in contrast to 28% globally.
Cloud as a foundation for driving innovation
Cloud technologies are no longer a choice but a necessity, and advancements in them are changing how applications are developed and deployed. Cloud-native applications, built in the cloud using agile/integrated development and operations processes, containers, microservices architectures, and application life-cycle automation, are becoming popular among enterprises and developer communities, and going cloud-native is helping enterprises transition from being software consumers to software producers. IDC predicts Indian enterprises will commit to modernizing over half their existing applications by 2025 to gain business agility through turnkey cloud-native development and deployment services. Additionally, 66% of Indian enterprises IDC surveyed intend to leverage cloud-native applications to innovate and provide better customer experience.
When enterprises embark on their innovation journey, modularity, interoperability, deployment speed, optimal utilization of underlying infrastructure, and ease of infrastructure maintenance are critical. Containers have become an integral part of this strategy because they help rapid development and deployment of light weight modular applications, resulting in faster releases and reduced time to market.
Containers vs virtual machines
Containers provide a new way to package applications, logically bundling code and dependencies using fewer resources than virtual machines. They help in the development and delivery of cloud applications that can run anywhere, without the need to manually configure each environment in the same way, making them more compatible. They also aid in application modernization, especially when refactoring monolithic applications into microservices. And they’re becoming ubiquitous: 43% of Indian enterprises IDC surveyed intend to use containers for more than 50% of their projects in the next 18 months.
Of course, many of the benefits that containers offer were also promised by virtual machines (VMs) back in the day. Both are ways of creating portable, scalable application images that can be moved around, but there are important differences.
Containers share the operating system kernel of host operating system, but VMs encapsulate a guest OS in addition to the application, libraries, and binaries, making them heavier. VMs are isolated from the host OS and from each other, while containers are loosely isolated. Overall, containers are less resource intensive so you can run more application instances on a server.
From a maintainability perspective, when there is an OS upgrade the guest OS in each VM needs to be patched individually, whereas for containers only the host OS needs to be patched making them easier to maintain.
It is all about what your enterprise needs. If you want multiple applications on different OSs on a single server with complete isolation and security, VMs will be ideal. However, if the priority is using devops to build cloud-native applications and microservices sharing the same OS but leveraging underlying infrastructure, containers will fit the bill. The best part of these technologies is that an organization need not choose between them: they can coexist. VMs can have containers on them, and containers can access services available on VMs.
Hybrid IT is the order of the day: Enterprises have a mix of bare metal and public, private, and multi-cloud environments. Containers can be moved around different environments as long as they are compatible with the underlying OS. To simplify the challenge of managing and orchestrating those containers, enterprises need a tool like Kubernetes. It automates container management and enables the large-scale deployment and operation of containerized workloads. It also enables building and packaging of containers, container execution, cluster scheduling, scaling container instances, and service discovery.
The benefits are evident. A leading online grocery store in India automated application deployment with 10–20 releases a day for more than 80 microservices, delivering it 84% faster by leveraging Kubernetes infrastructure in the cloud. Meanwhile, an online automobile marketplace in India improved uptime, reduced compute costs by 33%, and simplified maintenance by running containers in the cloud.
Containers and Kubernetes initially had their share of concerns, including limited support for Windows and issues with security. The technology has matured notably in the last few years, however. Leading vendors like Red Hat, SUSE, and VMware, also have their own variation of open source container platforms and Kubernetes backed by the necessary support services, making it safe for CIOs to consider containers and Kubernetes to drive innovation faster and better.
Before embarking on your container journey
It is not easy for CIOs to keep making changes to the enterprise IT landscape, and yet CIOs are expected to leverage the latest technologies to gain competitive advantage: It’s a tightrope-walk. There are, however, some steps CIOs can take to make their container journey smoother:
Identify the right workload: In India, we have seen a wave of born-in-the-cloud start-ups over the last decade. For them, developing and deploying applications in containers is easier. For enterprises in the middle of their modernization journey that still have a lot of legacy systems, it is critical to identify the right workload to move or develop in containers. CIOs should look for simple workloads needing frequent updates or releases and a high degree of scaling up or down. Consider non-customer-facing applications to start a pilot project with minimal business risk: Start small and expand is the mantra.
Create a credible business case: Creating a strong business case ensures buy-in from both the business and developers. This initiative’s efficacy must be measured and should be fed back as a learning. Organizations can choose various parameters, such as release frequency, release speed, developer productivity, or downtime to measure ROI.
Handle cultural change effectively: Hybrid IT environments are still a reality: IDC found 52% of systems in Indian enterprises are still on-premises, and while legacy systems still need a traditional approach to development and maintenance, cloud-native systems need a more agile approach. Indian CIOs must manage two contrasting sets of people, processes, and culture. As we look at the future with more systems getting modernized, people managing legacy systems need to start adapting to this cultural change. A top-down approach for this culture change should be adopted to demonstrate leadership commitment to such initiatives.
Build necessary skills: Almost 20% of the enterprises in India IDC surveyed cited hiring and skillset issues as a major challenge for software development. Container talent is primarily found in born-in-the-cloud start-ups or with system integrators, making it difficult for enterprises to attract and retain the necessary skills. They must plan to build them within the enterprise, reskilling existing resources, and if necessary be prepared to pay a premium when hiring.
Choose the right platform and partner: Choosing a well-supported, secure platform aligned with your enterprise’s IT road map for developing and deploying containers is critical. If you are unable to create a high-performance team in-house, choose the right partner with proven credentials in enterprise-wide container development and deployments. Try pilots with a few identified workloads and test the platform and partner before embarking on a wider initiative.
Enterprises must keep evolving to stay relevant as new technologies appear. To succeed, Indian enterprises will need to produce software, not merely consume it. Moving development efforts to the cloud is one way to simplify that process, but it will be necessary to package applications in a lightweight and portable way so that they will run anywhere at whatever scale is needed. Containers and Kubernetes are the way to do that today, but this too will evolve. Start small as you experiment, evaluating what best suits your organization before taking decisions on enterprise-wide container adoption for faster, better, and secure application development and deployment.