Running Apps in the Cloud – SaaS, Containers or VMs?

Image Attribution: Flickr

Nowadays, getting an app to run on a local device (PC, tablet or smartphone) is typically a ‘no-brainer’. Accept the default choices for the installation options and sit back while the install routine whirs away and until an icon pops up to click on and start using the program. Getting an app to run in the cloud can be a little more complicated. You don’t necessarily have the platform components you need, and you may have to share resources with unknown third parties. That means appropriately balancing factors like flexibility, risk, and effort required.
Installation? What Installation?
Sometimes the best way to solve a problem is to eliminate it from the start. While some enterprises have needs that are too specific for off-the-shelf solutions, the catalog of SaaS applications available today is vast and growing. Software as a Service comes ready to use. It has no requirements for setting up platforms, stacks or environments. Tools also exist to ease data export and backups (cloud-based database connectors), although users still depend on the SaaS provider to ensure data confidentiality. Even complex applications like ERP (enterprise resource planning) are now available as fully-fledged, ready-to-use cloud solutions.
The Container Dream
One day, or so some container solution vendors claim, applications will all be containerized, ready to drop into any cloud service platform any time and anywhere. Containerization of applications has two major attractions. Firstly, it boosts efficiency of resource utilization to even higher levels than current virtualization technologies. The reason is simple enough. Containerized applications do not need their own operating system. They use the same base OS instance (Windows or Linux, for instance). By comparison, virtualized applications each have their own on-board OS. Where virtualization is ‘fat’, containerization is ‘thin’. Secondly, it allows for micro-service development. Like native mobile apps that already focus on one specific function, containerized apps offer increased opportunities for modularization.
Virtualization or ‘Better the Devil You Know’
Virtualization was at the heart of cloud computing at the start. By squeezing many virtual machines (VMs) into one physical box and multiplying the number of physical boxes, cloud providers could offer individual clients all the cost-efficiency, flexibility and scalability for which the cloud is now famous. Each VM still needs its own operating environment however. To facilitate matters, ‘app launcher’ applications like Bitnami help clients to launch popular applications or spin up complete or component parts of OS stacks. Virtualization may not be the best in terms of cost-performance or convenience, compared with containerization and SaaS. On the other hand, it has the considerable advantage of being well-known, stable and flexible, all at the same time.
What Should You Choose?
Any one of the three solutions for launching an app in the cloud could be appropriate. It depends on what you want.

  • SaaS. If a vendor with a solid track record offers an affordable app that meets your business need, maybe you should look no further. Buy the service, save the hassle and free your time up so that you can focus better on your own business goals and strategies.
  • Containerization. For modular, micro service-style cloud computing that can increase your agility as an organization, and the potential for cost-savings down the line. If you are happy about sticking to one OS and accept possible teething problems, start investigating.
  • Virtualization. For better security and stability, as well as flexibility in your choice of operating systems, VMs still offer advantages.

These choices are not mutually exclusive either. Within an organization, department or team, they can be mixed and matched to make apps available according to the best trade offs between cost, convenience and robustness.