Chapter 2. Challenges of Moving to the Cloud

Both VMs and containers virtualize computing resources, but in some ways they are very different. Containers are immutable and ephemeral, meaning that they can be—and are—created and destroyed all the time. VMs are a representation of physical machines where workloads run and must be maintained with more care. This chapter lays out a few of the reasons why applications that run on VMs can’t always be lifted and shifted into typical cloud-native environments, which rely on containerized infrastructure.

Legacy Applications

Although new applications are increasingly developed as microservices—modular parts of the application that run in containers—many organizations have a huge existing investment in VM-based applications. Some of these applications provide services that newer containerized applications rely on. Many applications are a patchwork of new and old technologies and architectures, and it would take significant engineering effort to rearchitect them to take advantage of containerized, distributed computing.

Modernizing a legacy application to become cloud native requires significant refactoring, breaking it up into microservices, and adopting new development practices. In the best-case scenario, this is a huge task, and it’s often impossible. In some cases, application refactoring is prevented by licensing or dependency issues. Sometimes the original source code is no longer available. Even when it’s possible, refactoring an ...

Get What Is KubeVirt? now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.