As with any technology, the cloud brings its own alphabet soup of terms. This insight will hopefully help you navigate your way through the terminology, and provide you the knowledge and power to make the decisions you need to make when considering a new cloud implementation. Here’s the list of terms we will cover in this article: Phew—that’s a lot. Let’s dig in to the definitions and examples to help drive home the meanings of the list of terms above. SaaS (Software as a Service) This is probably the most common implementation of cloud services end users experience. This is software that users access through their web browser. Some software may be installed locally to help augment functionality or provide a richer user experience, but the software installed locally has minimal impact on the user’s computer. Figure 1 provides a high-level overview of this concept. Figure 1 High-level overview of Software as a Service You are probably a user Facebook, Google docs, Office 365, Salesforce, or LinkedIn either at home or at work, so you’ve experienced SaaS first hand and probably for a long time. What SaaS tools are you using outside of those mentioned here? Reach out and let me know—I’m very curious. PaaS (Platform as a Service) PaaS allows a developer to deploy code to an environment that supports their software but they do not have full access to the operating system. In this case the developer has no server responsibility or server access. When I first started writing about cloud technology three years ago, this was kind of primitive service. The provider would just give you access to a folder somewhere on the server with just a bit of documentation and then you were on your own. Now there are tools, such as CloudFoundry, that allow a developer to deploy right from their Integrated Development Environment (IDE) or from a command line production release tool. Then CloudFoundry can take the transmitted release and install it correctly into the cloud environment. With a little trial and error, anyone with a bit of technical skills can deploy to a tool like CloudFoundry where the older style of PaaS took a lot of skill and experience to deploy correctly. IaaS (Infrastructure as a Service) Originally IaaS dealt with a provider giving a user access to a virtual machine located on a system in the provider’s data center. A virtual machine is an operating system that resides in a piece of software on the host computer. Virtual Box, Parallels and VMWare are examples of software that provide virtualization of operating systems called Virtual Machines (VM) Virtualization of servers was all the rage for a while, but when you try to scale within the cloud with multiple virtual servers there are a lot of drawbacks. First, it’s a lot of work to make VMs aware of each other and they don’t always share filesystems and resources easily. Plus, as your needs grow, VMs with a lot of memory and disk space are very expensive, and very often an application on a VM is only using a portion of the OS. For example, if you are deploying a tool that does data aggregation and runs as a service you won’t be taking advantage of the web server that might be running on server too. The issues mentioned in the previous paragraph are common headaches for those moving their on-premise implementations to the cloud, and those headaches gave rise to Docker. Docker is a lighter weight form of virtualization that allows for easier sharing of files, versioning, and configuration. Servers that could only host a few VMs can host thousands of Docker images, so providers get better bang for the buck for their server purchases. Further explanation of Docker is an article all by itself, but for now it’s import to realize that Docker needs to be part of any discussion of moving your applications to the cloud. DaaS (Desktop as a Service) Desktop computers are expensive for large corporations to implement and maintain. The cost of the OS, hardware, security software, productivity software, and more start to add up to where it makes a major impact on any corporation’s budget. Then just as they finish deploying new systems to everyone in the company, it’s time to start upgrading again because Microsoft just released a new OS. Another fact with most desktop computers is that they are heavily underutilized, and DaaS allows an IT department to dynamically allocate RAM and disk space based on user need. In addition backups and restores are a breeze in this environment, and if you are using a third party provider all you need to do is make a phone call when a restore of a file or desktop is needed. Plus upgrades to new operating systems are seamless because the DaaS provider takes care of them for you. The main advantage I see with DaaS is security. With one project I was involved with, we restored the state of each Desktop to a base configuration each night. While this did not affect user files, it did remove any malware that might have been accidently installed by a user clicking on the wrong email. Documents from Microsoft Office or Adobe products were scanned with a separate antivirus program residing on the storage system they were a part of, and the network appliance that we used did not allow for the execution of software. That made it very secure for the client I was working with. So what does a user have on their desktops? Luckily in recent years there has been an explosion of low cost computing devices, such as a Raspberry PI, that support Remote Desktop Protocol (RDP) so your users could access a windows desktop from the linux-based PI which you can get for a measely . DaaS is awesome for your average information worker, but for a power user like a software developer this setup in my experience doesn’t work well. Your average developer needs